一、分支
1.if-elif-else
1)語法:
if 條件語句:
代碼段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)、老年(59以上)。
age = 10
if age < 14:
print('少年')
elif 14 <= age <= 25:
print('青年')
elif 25 < age <= 35:
print('壯年')
elif 35 < age <= 50:
print('中年')
else:
print('老年')
2.if嵌套
if結(jié)構(gòu)中的代碼塊中可以再出現(xiàn)其他的if語句
例如: 判斷一個(gè)數(shù)是否是偶數(shù),并且再判斷這個(gè)數(shù)是否是4的倍數(shù)。
方法一:(一般不用)
num = 8
if num & 1 == 0:
print('偶數(shù)')
else:
print('奇數(shù)')
if num % 4 == 0:
print('是4的倍數(shù)!')
方法二:
num = 19
if num & 1 == 0:
print('偶數(shù)')
if num % 4 == 0:
print('是4的倍數(shù)')
else:
print('奇數(shù)')
2.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('=====')
print('+++++')
4).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)中變量取出來的值在循環(huán)體中無用,這個(gè)變量可以直接用_來命名.
練習(xí)1;打印0-100中所有能被3整除的數(shù)
for x in range(0, 101):
if x % 3 == 0:
print(x)
# 方法二
for x in range(0, 101, 3):
print(x)
練習(xí)2:統(tǒng)計(jì)1-100中能被4整除并且個(gè)位數(shù)是2的數(shù)字的個(gè)數(shù)
count = 0
for x in range(1, 101):
if (x % 4 == 0) and (x % 10 == 2):
count += 1
print('個(gè)數(shù):', count)
練習(xí)3:計(jì)算1+2+3+4+...100
sum1 = 0
for x in range(1, 101):
sum1 += x
print('和:', sum1)
三、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ù)執(zhí)行的語句。
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
4).for循環(huán)和while的選擇
(1)什么時(shí)候使用for循環(huán):
①循環(huán)次數(shù)確定的時(shí)候
②遍歷序列
(2)什么時(shí)候使用while循環(huán):
①死循環(huán)
②循環(huán)次數(shù)不確定
練習(xí)1、 不斷輸入數(shù)字,直到輸入的值是0為止
value = input('請輸入數(shù)字:')
while value != '0':
value = input('請輸入數(shù)字:')
練習(xí)2:猜數(shù)字游戲
游戲開始的時(shí)候隨機(jī)產(chǎn)生一個(gè)數(shù)字,不斷輸入數(shù)字,直到輸入的數(shù)字和產(chǎn)生的數(shù)字一致,游戲就結(jié)束。 在沒有猜對的時(shí)候,給出‘大了’或者‘小了’的提示.
number = randint(0, 100) # 產(chǎn)生0-100的隨機(jī)數(shù),并且保存在number中
x = int(input('請輸入數(shù)字:'))
while x != number:
x = int(input('請輸入數(shù)字:'))
if x > number:
print('大了')
elif x < number:
print('小了')
print('游戲結(jié)束!')
四、循環(huán)關(guān)鍵字
1.continue
continue是循環(huán)體中的關(guān)鍵字.
作用:當(dāng)執(zhí)行循環(huán)體的時(shí)候,如果遇到continue,那么當(dāng)次循環(huán)結(jié)束,直接進(jìn)入下次循環(huán)的判斷.
2.break
break是循環(huán)體中的關(guān)鍵字.
作用:當(dāng)執(zhí)行循環(huán)體的時(shí)候,如果遇到break,那么整個(gè)循環(huán)直接結(jié)束.
練習(xí):不斷輸入數(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:
代碼段
else中的代碼段:當(dāng)循環(huán)自然死亡(for后的變量數(shù)據(jù)取完,while后面的條件為False),else后面的代碼段會在循環(huán)結(jié)束后執(zhí)行;如果循環(huán)是因?yàn)橛龅絙reak而結(jié)束的那么else后面代碼段就不會執(zhí)行。
else的意義:可以通過判斷else中的代碼有沒有執(zhí)行來判斷循環(huán)有沒有遇到break。
例如:
for x in range(4):
print(x)
else:
print('else')
4.while循環(huán)的用法
while True:
需要重復(fù)執(zhí)行的代碼段
if 退出循環(huán)的條件:
break
五、循環(huán)嵌套
循環(huán)嵌套:外面的循環(huán)執(zhí)行一次,里面的循環(huán)要執(zhí)行完。
例如:
for x in range(3):
for y in range(4):
print(x, y)
練習(xí):計(jì)算1!+2!+3!+...10! (N!=1 * 2 * 3 * 4 * ...N)
方法一:
sum1 = 0
# 將1-10取出來
for x in range(1, 11):
# 計(jì)算取出來的數(shù)的階層
sum2 = 1
for y in range(1, x+1):
sum2 *= y
# 將階乘值加起來
sum1 += sum2
print(sum1)
方法二:
sum1 = 0
sum2 = 1
for num in range(1, 11):
sum2 *= num
sum1 += sum2
print(sum1)