Python條件語(yǔ)句與循環(huán)語(yǔ)句
1、條件語(yǔ)句
所謂的條件語(yǔ)句,就是通過(guò)指定的表達(dá)式的運(yùn)行結(jié)果來(lái)判斷當(dāng)前是執(zhí)行還是跳過(guò)某些指定的語(yǔ)句塊。簡(jiǎn)答的說(shuō)就是如果指定的表達(dá)式的運(yùn)算結(jié)果為true
,則執(zhí)行指定的語(yǔ)句塊;如果運(yùn)算結(jié)果為false
則跳過(guò)某個(gè)語(yǔ)句塊或者執(zhí)行其他的語(yǔ)句塊。
如下代碼如下:
# 通過(guò)input鍵入用戶(hù)名和密碼 user = input("請(qǐng)輸入用戶(hù)名:") passwd = input("請(qǐng)輸入密碼:") # 將默認(rèn)的用戶(hù)名設(shè)置為admin 密碼123456 user_d = "admin" passwd_d = "123456" # 通過(guò)if,elif else梳理流程 if user == user_d and passwd == passwd_d: print("登陸成功") elif user != user_d: print("用戶(hù)名不存在") else: print("密碼錯(cuò)誤")
1.1 if語(yǔ)句
在Python
中,要構(gòu)造分支結(jié)構(gòu)可以使用if、elif
和else
關(guān)鍵字。所謂關(guān)鍵字就是有特殊含義的單詞,像if和else就是專(zhuān)門(mén)用于構(gòu)造分支結(jié)構(gòu)的關(guān)鍵字,很顯然你不能夠使用它作為變量名(事實(shí)上,用作其他的標(biāo)識(shí)符也是不可以)。
我們上面的代碼中,解析如下:
- 每個(gè)條件后面要使用冒號(hào) : ,表示接下來(lái)是滿(mǎn)足條件后要執(zhí)行的語(yǔ)句塊。
- 一個(gè)登陸系統(tǒng)存在3中情況,1. 用戶(hù)名和密碼都吻合,登陸成功;2. 用戶(hù)名不存在,登陸失敗;3. 密碼錯(cuò)誤,登陸失敗
- 如果用戶(hù)名和密碼都吻合,打印登陸成功
- 用戶(hù)名不吻合打印用戶(hù)名不存在
- 前兩種都排除了,就剩密碼錯(cuò)誤這一個(gè)條件了
值得注意的是Python中是使用縮進(jìn)來(lái)表示代碼結(jié)構(gòu)的,也就是說(shuō)想要在if語(yǔ)句中執(zhí)行某條語(yǔ)句,只要賦予它相同的縮進(jìn)即可??s進(jìn)可以使用任意數(shù)量的空格,但通常使用4個(gè)空格
2、嵌套的分支語(yǔ)句
示例代碼如下如下:
user_key = int(input("輸入1進(jìn)入登陸系統(tǒng),輸入0退出系統(tǒng)")) # 通過(guò)if,elif else梳理流程 if user_key == 1: # 只要用戶(hù)輸入1才能進(jìn)入登陸系統(tǒng)界面 # 通過(guò)input鍵入用戶(hù)名和密碼 user = input("請(qǐng)輸入用戶(hù)名:") passwd = input("請(qǐng)輸入密碼:") # 將默認(rèn)的用戶(hù)名設(shè)置為admin 密碼123456 user_d = "admin" passwd_d = "123456" if user == user_d and passwd == passwd_d: print("登陸成功") elif user != user_d: print("用戶(hù)名不存在") else: print("密碼錯(cuò)誤") elif user_key == 0: print("已退出") else: print("輸入錯(cuò)誤")
因?yàn)榇藭r(shí)外層多了一層結(jié)構(gòu),所以就需要在if的內(nèi)部構(gòu)造出一個(gè)新的分支結(jié)構(gòu),同理elif
和else
中也可以再構(gòu)造新的分支,稱(chēng)之為嵌套的分支結(jié)構(gòu)
但是如果如果可以不是用嵌套結(jié)構(gòu)就盡量不使用,嵌套結(jié)構(gòu)影響代碼的可讀性
3、案例練習(xí)
英制單位英寸與公制單位厘米互換(1英寸(in)=2.54厘米(cm))
value = float(input("請(qǐng)輸入數(shù)值:")) unit = input("請(qǐng)輸入單位(英寸或in和厘米或cm):") if unit == "in" or unit == "英寸": print("%.2f英寸=%.2f厘米" % (value, value * 2.54)) elif unit == "cm" or unit == "厘米": print("%.2f厘米=%.2f英寸" % (value, value / 2.54)) else: print("單位錯(cuò)誤")
百分制成績(jī)轉(zhuǎn)換為等級(jí)制成績(jī)
要求:如果輸入的成績(jī)?cè)?0分以上(含90分)輸出A;80分-90分(不含90分)輸出B;70分-80分(不含80分)輸出C;60分-70分(不含70分)輸出D;60分以下輸出E。
score = float(input('請(qǐng)輸入成績(jī): ')) if score >= 90: grade = 'A' elif score >= 80: grade = 'B' elif score >= 70: grade = 'C' elif score >= 60: grade = 'D' else: grade = 'E' print('對(duì)應(yīng)的等級(jí)是:', grade)
4、循環(huán)語(yǔ)句
循環(huán)語(yǔ)句就是對(duì)某些語(yǔ)句的重復(fù)執(zhí)行,這個(gè)重復(fù)執(zhí)行是通過(guò)指定表達(dá)式來(lái)控制的。簡(jiǎn)單來(lái)說(shuō)就是指定表達(dá)式轉(zhuǎn)換為boolean
類(lèi)型的值后的結(jié)果為true
,哪些語(yǔ)句就要一直重復(fù)執(zhí)行,直到指定表達(dá)式轉(zhuǎn)換為boolean
類(lèi)型的值后的結(jié)果為false
時(shí)才會(huì)停止執(zhí)行。
4.1 for-in循環(huán)
for 循環(huán)用于迭代序列(即列表,元組,字典,集合或字符串)。語(yǔ)法結(jié)構(gòu)如下所示:
for <variable> in <sequence>: <statements>
4.2 range()函數(shù)
生成一組數(shù)列,range()的幾種用法:
range(101):
可以用來(lái)產(chǎn)生0到100范圍的整數(shù),需要注意的是取不到101。range(1, 101):
可以用來(lái)產(chǎn)生1到100范圍的整數(shù),相當(dāng)于前面是閉區(qū)間后面是開(kāi)區(qū)間。range(1, 101, 2):
可以用來(lái)產(chǎn)生1到100的奇數(shù),其中2是步長(zhǎng),即每次數(shù)值遞增的值。range(100, 0, -2):
可以用來(lái)產(chǎn)生100到1的偶數(shù),其中-2是步長(zhǎng),即每次數(shù)字遞減的值。
4.3 實(shí)例1:計(jì)算1-100的和
# 用來(lái)存儲(chǔ)每次計(jì)算的結(jié)果 sum = 0 for i in range(101): sum += i # 這里等同于sum=sum+1 print(sum)
4.4 實(shí)例2:計(jì)算1-100偶數(shù)的和
# 用來(lái)存儲(chǔ)每次計(jì)算的結(jié)果 sum = 0 for i in range(0, 101, 2): sum += i print(sum)
從0開(kāi)始,每次步長(zhǎng)為2,就跳過(guò)了單數(shù)
4.5 實(shí)例3:計(jì)算1-100奇數(shù)的和
可以從1開(kāi)始,步長(zhǎng)為2,這樣就跳過(guò)了偶數(shù),也可以通過(guò)嵌套分支結(jié)構(gòu)來(lái)實(shí)現(xiàn),例如
# 用來(lái)存儲(chǔ)每次計(jì)算的結(jié)果 sum = 0 for i in range(101): if i % 2 == 1: # 因?yàn)閱螖?shù)除2余1,所以只有滿(mǎn)足這個(gè)條件,才可以進(jìn)行累加計(jì)算 sum += i print(sum)
5、while循環(huán)
while
循環(huán)通過(guò)一個(gè)能夠產(chǎn)生或轉(zhuǎn)換出bool
值的表達(dá)式來(lái)控制循環(huán),表達(dá)式的值為True
則繼續(xù)循環(huán);表達(dá)式的值為False
則結(jié)束循環(huán)。
語(yǔ)法結(jié)構(gòu)如下所示:
while 判斷條件:
執(zhí)行語(yǔ)句……
通過(guò)while
語(yǔ)句來(lái)實(shí)現(xiàn)1-100
累加的結(jié)果
# 用來(lái)存儲(chǔ)每次計(jì)算的結(jié)果 sum = 0 # 設(shè)置開(kāi)始的值 i = 1 # 設(shè)置允許循環(huán)的最大值 n = 100 while i <= n: sum += i i += 1 print(sum)
6、break 和 continue 語(yǔ)句
break
語(yǔ)句可以跳出 for
和 while
的循環(huán)體。如果你從 for
或 while
循環(huán)中終止。
continue
語(yǔ)句被用來(lái)告訴 Python
跳過(guò)當(dāng)前循環(huán)塊中的剩余語(yǔ)句,然后繼續(xù)進(jìn)行下一輪循環(huán)。
代碼執(zhí)行流程:
6.1 實(shí)例:猜字游戲
規(guī)則:計(jì)算機(jī)出一個(gè)1到100之間的隨機(jī)數(shù),玩家輸入自己猜的數(shù)字,計(jì)算機(jī)給出對(duì)應(yīng)的提示信息(大一點(diǎn)、小一點(diǎn)或猜對(duì)了),如果玩家猜中了數(shù)字,計(jì)算機(jī)提示用戶(hù)一共猜了多少次,游戲結(jié)束,否則游戲繼續(xù);如果次數(shù)大于5次,則退出循環(huán)。
import random # 導(dǎo)入隨機(jī)數(shù)模塊 answer = random.randint(1, 100) # 生成1-100的隨機(jī)數(shù) counter = 0 # 將次數(shù)初始為0 while True: number = int(input('請(qǐng)輸入: ')) if number < answer: print('大一點(diǎn)') counter += 1 elif number > answer: print('小一點(diǎn)') counter += 1 else: print('恭喜你猜對(duì)了!') break # 如果猜對(duì)了 就跳出循環(huán) if counter >= 5: # 次數(shù)大于5則退出這個(gè)系統(tǒng) print('你的智商余額明顯不足') break print('你總共猜了%d次' % counter)
7、循環(huán)嵌套
和分支結(jié)構(gòu)一樣,循環(huán)結(jié)構(gòu)也是可以嵌套的,也就是說(shuō)在循環(huán)中還可以構(gòu)造循環(huán)結(jié)構(gòu)
7.1 實(shí)例1:通過(guò)for...in語(yǔ)句打印99乘法表
for x in range(1, 10): for y in range(1, x+1): print("%d * %d = %d" % (y, x, x*y), end=" ") print()
7.2 實(shí)例2:通過(guò)while語(yǔ)句打印99乘法表
x = 1 y = 1 while x <= 9: y = 1 # 每執(zhí)行完一次子循環(huán),y重置為1 while y <= x: print("%d * %d = %d" % (y, x, x*y), end=" ") y += 1 x += 1 print() # 每一句結(jié)束一個(gè)換行
到此這篇關(guān)于Python條件語(yǔ)句與循環(huán)語(yǔ)句的文章就介紹到這了,更多相關(guān)Python條件語(yǔ)句 循環(huán)語(yǔ)句內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。