一撕阎、分之結(jié)構(gòu)
python 代碼默認(rèn)從第一行開(kāi)始雪猪,起愈,從上往下依次執(zhí)行只恨,每條語(yǔ)句都會(huì)執(zhí)行
分支結(jié)構(gòu):某段代碼是否執(zhí)行看條件(if語(yǔ)句)
1.if結(jié)構(gòu)
1)語(yǔ)法:
if 條件語(yǔ)句:
代碼段
2)說(shuō)明:
if —— 關(guān)鍵字,固定寫(xiě)法
條件語(yǔ)句 —— 任何有結(jié)果的表達(dá)式抬虽,例如:數(shù)據(jù)官觅,已經(jīng)聲明過(guò)得變量,運(yùn)算表達(dá)式(不能使賦值運(yùn)算符)等
: —— 固定寫(xiě)法阐污;(一般出現(xiàn)冒號(hào)的位置休涤,都會(huì)換行和縮進(jìn))
代碼段 —— 和if保持一個(gè)縮進(jìn)的一條或者多條語(yǔ)句;需要滿足條件才執(zhí)行的代碼
3)代碼執(zhí)行過(guò)程:
先判斷條件語(yǔ)句的結(jié)果是否為T(mén)rue(如果條件語(yǔ)句不是布爾值疤剑,就先轉(zhuǎn)換成布爾再看)滑绒,滿足條件就執(zhí)行闷堡,不 滿足就不執(zhí)行
如果為T(mén)rue就執(zhí)行代碼段,否則不執(zhí)行
num = 10
if num & 1 == 0:
print("偶數(shù)")
2.if-else結(jié)構(gòu)
滿足執(zhí)行某個(gè)操作疑故,不滿足條件執(zhí)行另一個(gè)操作
1)語(yǔ)法:
if 條件語(yǔ)句:
代碼段1(滿足條件要執(zhí)行的代碼)
else:
代碼段2(不滿足條件要執(zhí)行的代碼)
2)執(zhí)行過(guò)程:
先判斷條件語(yǔ)句的結(jié)果是否為T(mén)rue(如果條件語(yǔ)句不是布爾值杠览,就先轉(zhuǎn)換成布爾再看),
滿足條件就執(zhí)行代碼段1纵势,否則執(zhí)行代碼段2
age = 20
if 0 < age < 18:
print("未成年")
else:
print("成年") # 成年
3.if-elif-else 結(jié)構(gòu)
1)語(yǔ)法:
if 條件語(yǔ)句1:
代碼段1
elif 條件語(yǔ)句2:
代碼段2
elif 條件語(yǔ)句3:
代碼段3
...
else:
代碼段N
其他語(yǔ)句
2)執(zhí)行過(guò)程:
先判斷條件語(yǔ)句1是否為T(mén)rue踱阿,為T(mén)rue就執(zhí)行代碼段1,然后整個(gè)if-elif-else 結(jié)構(gòu)結(jié)束
如果為False钦铁,就判斷條件語(yǔ)句2是否為T(mén)rue软舌,為T(mén)rue就執(zhí)行代碼段2,然后整個(gè)if-elif-else 結(jié)構(gòu)結(jié) 束
如果為False牛曹,就判斷條件語(yǔ)句3是否為T(mén)rue佛点,為T(mén)rue就執(zhí)行代碼段3,然后整個(gè)if-elif-else 結(jié)構(gòu)結(jié) 束
以此類推
如果所有條件語(yǔ)句都不成立黎比,執(zhí)行else后面的代碼段
例如超营,根據(jù)年齡范圍打印:少年(14及以下)阅虫,青年(14到25)演闭,壯年(26到35),中年(36到50)颓帝,老年(50以上)
age = input("請(qǐng)輸入年齡:")
if age.isdigit() or age == '':
age = int(age)
if 0 < age < 120:
if age < 14:
print("少年")
elif age <= 25:
print("青年")
elif age <= 35:
print("壯年")
elif age <= 50:
print("中年")
else:
print("老年")
else:
print("請(qǐng)輸入正確年齡!")
else:
print("請(qǐng)輸入正確數(shù)據(jù)米碰!")
2.if嵌套
if結(jié)構(gòu)中的代碼塊中可以再出現(xiàn)其他的of語(yǔ)句
判斷一個(gè)數(shù)是否是偶數(shù),并且在判斷這個(gè)數(shù)是否是4的背時(shí)购城,并打印出結(jié)論
num = input("請(qǐng)輸入一個(gè)數(shù):")
num = int(num)
if num & 1:
print("奇數(shù)")
else:
if num % 4 == 0:
print("偶數(shù)且能被四整除")
else:
print("偶數(shù)")
二吕座、循環(huán)
循環(huán)結(jié)構(gòu):for循環(huán)和while循環(huán)
1.for循環(huán)
1)語(yǔ)法:
for 變量名 in 序列:
循環(huán)體
2)說(shuō)明:
for —— 關(guān)鍵字,固定寫(xiě)法
變量名 —— 和聲明變量是的要求一樣
in —— 關(guān)鍵字工猜,固定寫(xiě)法
序列 —— 容器型數(shù)據(jù):字符串米诉、列表菱蔬、字典篷帅、元組、集合拴泌、迭代器魏身、生成器、rang
: —— 固定寫(xiě)法
循環(huán)體 —— 和for保持一個(gè)縮進(jìn)的一條或者多條需要重復(fù)執(zhí)行的語(yǔ)句蚪腐;
3)執(zhí)行過(guò)程:
讓變量去序列中取值箭昵,一個(gè)一個(gè)的取,取完為止回季;每取一個(gè)值家制,執(zhí)行一次循環(huán)體
(for循環(huán)可以通過(guò)控制序列中的元素的個(gè)數(shù)來(lái)控制循環(huán)的次數(shù))
for i in "strong":
print(i, end='') # strong
2.rang函數(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ù)字序列
例如:rang(3,10) -> 3,4,5,6,7,8,9
3)range(M,N,step) —— 從M開(kāi)始每隔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中變量取出來(lái)的值在循環(huán)體中無(wú)用,這個(gè)變量可以用_直接來(lái)命名
# 練習(xí):打印 0`100中能被3整除的數(shù)
k = 0
for i in range(0, 100, 3):
print(i)
k = k + 1
print(k) # 34
# 統(tǒng)計(jì)1~100中能被4整除并且個(gè)位數(shù)是2的數(shù)字的個(gè)數(shù)
k = 0
for i in range(2, 100, 10):
if i % 4 == 0:
print(i)
k += 1
print(k)
# 計(jì)算 1+2+3+颤殴。觅廓。。+100
sum1 = 0
for i in range(101):
sum1 += i
print(sum1)
3.while循環(huán)
1)語(yǔ)法:
while 條件語(yǔ)句:
循環(huán)體
2)說(shuō)明
while —— 關(guān)鍵字涵但,固定寫(xiě)法
條件語(yǔ)句 —— 任何有結(jié)果的表達(dá)式杈绸;數(shù)據(jù),已經(jīng)聲明過(guò)的標(biāo)量矮瘟、運(yùn)算表達(dá)式(不能是賦值語(yǔ)句)等
: —— 固定寫(xiě)法
循環(huán)體 —— 和while保持一個(gè)縮進(jìn)的一條或者多條需要重復(fù)執(zhí)行的語(yǔ)句瞳脓;
3)執(zhí)行過(guò)程:
先判斷條件語(yǔ)句是否為T(mén)rue,若果為T(mén)rue就執(zhí)行循環(huán)體澈侠,執(zhí)行完循環(huán)體在判斷條件語(yǔ)句是否為T(mén)rue
為T(mén)rue又執(zhí)行循環(huán)體劫侧,以此類推,直到條件語(yǔ)句的結(jié)果是False循環(huán)就結(jié)束哨啃。
num = 0
while num < 5:
num += 1
print(num) # 5
4.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í):猜數(shù)字游戲
# 游戲開(kāi)始時(shí)隨機(jī)產(chǎn)生一個(gè)數(shù)字板辽,不斷輸入數(shù)字,知道輸入的數(shù)字和產(chǎn)生的數(shù)字一致棘催,游戲結(jié)束
# 沒(méi)猜對(duì)的時(shí)候劲弦,給出"大了"或者"小了"的提示
rand_num = randint(0, 100) # 產(chǎn)生0~100的隨機(jī)數(shù),并保存在num中
while 1:
number = input("請(qǐng)輸入你猜的數(shù)字:")
number = int(number)
if number == rand_num:
print("恭喜你猜對(duì)了")
break
else:
if number > rand_num:
print("大了,請(qǐng)?jiān)賴L試")
else:
print("小了醇坝,請(qǐng)?jiān)趪L試")
三邑跪、循環(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宋距,直接結(jié)束整個(gè)循環(huán)
# 求輸入奇數(shù)的和轴踱,輸入0時(shí)退出
sum1 = 0
while 1:
value = int(input("請(qǐng)輸入數(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 條件語(yǔ)句:
循環(huán)體
else:
代碼段
注意:while循環(huán)和for循環(huán)自然死亡(for后的變量數(shù)據(jù)取完了,while后面的條件為False)時(shí)谚赎,會(huì)執(zhí)行else里的代碼段淫僻。
而因?yàn)閎reak而結(jié)束循環(huán)的,不執(zhí)行else里的代碼段壶唤。
else的意義:通過(guò)判斷else中的代碼有沒(méi)有執(zhí)行來(lái)判斷循環(huán)有沒(méi)有遇到break雳灵。
num = 0
for x in range(1,4):
if x & 1 == 0:
break
num += x
else:
print("自然死亡", num)
print("非自然死亡", num)
4.while循環(huán)的用法:
while True:
需要重復(fù)執(zhí)行的代碼段
if 退出循環(huán)的條件:
break
四、循環(huán)嵌套
循環(huán)嵌套:外面的循環(huán)執(zhí)行一次闸盔,里面的循環(huán)要執(zhí)行完
# 計(jì)算1悯辙!+2!+3!+...+10躲撰!
# 方法1:
num2 = 0
for i in range(1, 11):
num1 = 1
for j in range(1, i+1):
num1 *= j
num2 += num1
print(num2)
# 方法2:
sum = 0
num = 1
for i in range(1, 11):
num *= i
sum += num
print(sum)