Day3-python分支和循環(huán)

一、分支結(jié)構(gòu)

分支結(jié)構(gòu): 某段代碼是否執(zhí)行看條件 (if語句)

備注:python代碼默認(rèn)情況下是從第一行開始從上往下依次執(zhí)行的,每一條語句都會(huì)執(zhí)行

1. if結(jié)構(gòu) - 滿足條件就執(zhí)行某個(gè)操作,不滿足就不執(zhí)行

1). 語法:

if 條件語句:
? 代碼段
其他代碼

2). 說明:
if:

關(guān)鍵字,固定寫法

條件語句:

任何有結(jié)果的表示都可以,例如: 數(shù)據(jù)、已經(jīng)聲明過的變量、運(yùn)算表達(dá)式(不能是賦值)等

:

固定寫法; (一般出現(xiàn)冒號的位置,后面都會(huì)換成產(chǎn)生縮進(jìn))

代碼段:

和if保持一個(gè)縮進(jìn)的一條或者多條語句; 需要滿足條件才執(zhí)行的代碼

2). 執(zhí)行過程:

先判斷條件語句的結(jié)果是否為True(如果條件語句的結(jié)果不是布爾值,就先轉(zhuǎn)換成布爾再看);
如果為True就執(zhí)行代碼段, 否則代碼段不執(zhí)行

num = 10
if num & 1 == 0:
    print('偶數(shù)')
    print('++++')
print('======')

2.if-else結(jié)構(gòu) -- 滿足條件執(zhí)行某個(gè)操作,不滿足條件的時(shí)候執(zhí)行另外一個(gè)操作

1)語法:

if 條件語句:
?代碼段1(滿足條件要執(zhí)行的代碼)
else:
?代碼段2(不滿足條件要執(zhí)行的代碼)

2). 執(zhí)行過程:

先判斷條件語句是否為True, 如果為True就執(zhí)行代碼段1, 否則執(zhí)行代碼段2

age = 10
# 根據(jù)年齡值的范圍打印'成年'或者'未成年'
if age >= 18:
    print('成年')
else:
    print('未成年')

3.if-elif-else結(jié)構(gòu)

1). 語法:

1)語法:
if 條件語句1:
? 代碼段1
elif 條件語句2:
? 代碼段2
elif 條件語句3:
? 代碼段3
...
else:
?代碼段N
其他語句

2). 執(zhí)行過程:

先判斷條件語句1是否為True,為True就執(zhí)行代碼段1,然后整個(gè)if-elif-else結(jié)構(gòu)結(jié)束;
如果為False,就判斷條件語句2是否為True, 為True就執(zhí)行代 碼段2,然后整個(gè)if-elif-else結(jié)構(gòu)結(jié)束;
如果是False,就判斷條件語句3是否為True, 為True就執(zhí)行代碼段3,然后整個(gè)if-elif-else結(jié)構(gòu)結(jié)束;
以此類推
如果所有的條件語句都不成立,執(zhí)行else后面的代碼段

根據(jù)年齡范圍打印: 少年(14以下)、青年 (14~25)、壯年 (26~35)、中年 (36 ~ 50)、老年 (50以上)
age = 30

if age < 14:
    print('少年')
elif age <= 25:
    print('青年')
elif age <= 35:
    print('壯年')
elif age <= 50:
    print('中年')
else:
    print('老年')

4.if嵌套

備注:if結(jié)構(gòu)中的代碼塊中可以再出現(xiàn)其他的if語句
判斷一個(gè)數(shù)是否是偶數(shù),并且再判斷這個(gè)數(shù)是否是4的倍數(shù);并打印出結(jié)論
num = 13

# 方法一:
if num & 1 == 0:
    print('偶數(shù)')
else:
    print('奇數(shù)')

if num % 4 == 0:
    print('是4的倍數(shù)!')

# 方法二:
print('====================')
if num & 1 == 0:
    print('偶數(shù)')
    if num % 4 == 0:
        print('是4的倍數(shù)!')
        print('++++')
else:
    print('奇數(shù)')
    if num % 10 == 3:
        print('個(gè)位數(shù)是3')

二、循環(huán)結(jié)構(gòu):for循環(huán)和while循環(huán)

1.for循環(huán)
1)語法:

for 變量名 in 序列:
?循環(huán)體

2)說明:

for ------ 關(guān)鍵字,固定寫法
變量名 -----和聲明變量時(shí)的要求是一樣的
in ------關(guān)鍵字,固定寫法
序列 --容器型數(shù)據(jù);字符串、列表、字典、元組、集合、迭代器、生成器、range
-----固定寫法
循環(huán)體 -----和for保持一個(gè)縮進(jìn)的一條或者多條語句;需要重復(fù)執(zhí)行的語句

3)執(zhí)行過程:

讓變量去序列中取值,一個(gè)一個(gè)取,取完為止;沒取一個(gè)值,執(zhí)行一次循環(huán)體
(for)循環(huán)可以通過控制序列中元素的個(gè)數(shù)來控制循環(huán)的次數(shù)

for x in 'abc12':
    print('x=:', x)
    print('+++++')
    print('======')


x = 'a';  print('x=:',x); print('+++++'); print('======')
x = 'b';  print('x=:',x); print('+++++'); print('======')
x = 'c';  print('x=:',x); print('+++++'); print('======')
x = '1';  print('x=:',x); print('+++++'); print('======')
x = '2';  print('x=:',x); print('+++++'); print('======')
2.range函數(shù) - 為了讓for更加方便的控制次數(shù)

1). range(N) - 產(chǎn)生0 ~ N-1的數(shù)字序列
例如: range(4) -> 0,1,2,3

2). range(M,N) - 產(chǎn)生M ~ N-1的數(shù)字序列
例如: range(3, 10) -> 3,4,5,6,7,8,9

3). range(M,N,step) - 從M開始每隔step產(chǎn)生下一個(gè)數(shù)字,到N前一個(gè)數(shù)為止
例如: range(0, 10, 2) -> 0, 2, 4, 6, 8

作用: 1.產(chǎn)生指定的數(shù)字序列 2.控制循環(huán)次數(shù)
for x in range(4):
    print(x)

print('===============')
for x in range(3, 10):
    print(x)

print('===============')
for x in range(0, 10, 2):
    print(x)

注意: 如果for中變量取出來的值在循環(huán)體中無用,這個(gè)變量可以直接用_來命名

for _ in range(100):
    print('+++++++')
練習(xí)1: 打印0~100中所有能被3整除的數(shù)
# 方法一:
for x in range(101):
    if x % 3 == 0:
        print(x)

# 方法二:
print('===============')
for x in range(0, 101, 3):
    print(x)
練習(xí)2: 打印0~100中所有能被3整除的數(shù)
print('================')
count = 0
for x in range(1, 101):
    if x % 4 == 0 and x % 10 == 2:
        # print(x)
        count += 1
print('個(gè)數(shù):', count)
練習(xí)3: 打印0~100中所有能被3整除的數(shù)
sum1 = 0   # 保存最后的和
for x in range(1, 101):
    sum1 += x
print('和:', sum1)

sum1 = 0
x = 1;  sum1 += x -> sum1 = sum1 + x -> sum1 = 0 + 1 = 1
x = 2;  sum1 += x -> sum1 = sum1 + x -> sum1 = 1 + 2
x = 3;  sum1 += x -> sum1 = sum1 + x -> sum1 = 1 + 2 + 3
x = 4;  sum1 += x -> sum1 = sum1 + x -> sum1 = 1 + 2 + 3 + 4
...
print('和:', sum1)
2. while循環(huán)
1)語法:

while 條件語句::
?循環(huán)體

2)說明:

while - 關(guān)鍵字;固定寫法
條件語句 - 任何有結(jié)果的表達(dá)式;數(shù)據(jù)、已經(jīng)聲明過的變量、運(yùn)算符表達(dá)式(不能是賦值語句)等
: - 固定寫法
循環(huán)體 - 和while保持一個(gè)縮進(jìn)的一條或者多條語句;(需要重復(fù)指定的語句)

3)執(zhí)行過程:

先判斷條件語句是否True,如果為True就執(zhí)行循環(huán)體;執(zhí)行完循環(huán)體再判斷條件語句是否為True,
為True又執(zhí)行循環(huán)體,以此類推,直到條件語句的結(jié)果是False循環(huán)就結(jié)束

num = 0
while num < 5:
   print('=====')
   num += 1
3.for循環(huán)和while的選擇
1)什么時(shí)候使用for循環(huán)

a.循環(huán)次數(shù)確定的時(shí)候
b.遍歷序列

2)什么時(shí)候使用while循環(huán)

a.死循環(huán)
b.循環(huán)次數(shù)不確定的時(shí)候

練習(xí)1: 猜數(shù)字游戲

游戲開始的時(shí)候隨機(jī)產(chǎn)生一個(gè)100以內(nèi)數(shù)字,不斷輸入數(shù)字,直到輸入的數(shù)字和產(chǎn)生的數(shù)字一致,游戲就結(jié)束; 在沒有猜對的時(shí)候,給出'大了'或者'小了'的提示
number = randint(0, 100)    # 產(chǎn)生0~100的隨機(jī)數(shù),并且保存在number
value = -1
while value != number:
    value = int(input('請輸入一個(gè)數(shù):'))
    if value < number:
        print('小了')
    elif value > number:
        print('大了')

print('游戲結(jié)束!', number, value)

三、循環(huán)中的循環(huán)關(guān)鍵字

1.continue

(1). continue是循環(huán)體中的關(guān)鍵字

當(dāng)執(zhí)行循環(huán)體的時(shí)候,如果遇到continue,那么當(dāng)次循環(huán)結(jié)束,直接進(jìn)入下次循環(huán)的判斷

for x in range(4):
    print('====')
    if x % 2 == 0:
        continue
    print('++++')

2.break

break是循環(huán)體中的關(guān)鍵字

當(dāng)執(zhí)行循環(huán)體的時(shí)候,如果遇到break, 那么整個(gè)循環(huán)直接結(jié)束


for x in range(4):
    print('====')
    break
    print('++++')
print('end', x)

練習(xí)1: 不斷輸入數(shù)字直到輸入的是0為止,然后再求輸入的所有的奇數(shù)的和
sum1 = 0
while True:
    value = int(input('請輸入數(shù)字:'))
    if value == 0:
        break

    if value % 2 == 0:
        continue

    sum1 += value

print(sum1)

3.else

1.完整的for循環(huán)

for 變量 in 序列:
?循環(huán)體
else:
?代碼段

2)完整的while循環(huán)
while 條件語句:
? 循環(huán)體
else:
?代碼段

(1). else中的代碼段: 當(dāng)循環(huán)自然死亡(for后的變量數(shù)據(jù)取完了;while后面的條件為False), else后面的代碼段會(huì)在循環(huán)結(jié)束后執(zhí)行;如果循環(huán)是因?yàn)橛龅絙reak而結(jié)束的 那么else后面代碼段就不會(huì)執(zhí)行
(2). else的意義:可以通過判斷else中的代碼有沒有執(zhí)行來判斷循環(huán)有沒有遇到break
for x in range(4):
    print(x)
    break
else:
    print('else')
print('~~~~')

4.while的循環(huán)的用法

while True:
    需要重復(fù)執(zhí)行的代碼段
    if 退出循環(huán)的條件:
        break

四、循環(huán)嵌套

外面的循環(huán)執(zhí)行一次,里面的循環(huán)要執(zhí)行完


for x in range(3):
    for y in range(4):
        print(x, y)

練習(xí)1. 計(jì)算1!+2!+3!+...+10!
# 方法一:
sum1 = 0
# 將1~10取出來
for num in range(1, 11):
    # 計(jì)算取出來的數(shù)的階層
    sum2 = 1
    for x in range(1, num+1):
        sum2 *= x
    # 將階乘值加起來
    sum1 += sum2
    print(sum2)

print(sum1)

# 方法二:
sum1 = 0
sum2 = 1
for num in range(1, 11):
    sum2 *= num
    sum1 += sum2

print(sum1)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容