- Python入門很輕松(微課超值版)
- 云尚科技
- 1228字
- 2020-09-01 15:58:01
3.4 循環(huán)控制語句

微視頻
循環(huán)控制語句主要是在滿足條件的情況下反復(fù)執(zhí)行某一個操作。循環(huán)控制語句主要包括while語句和for語句。
3.4.1 while語句
while語句是循環(huán)語句,也是條件判斷語句。
while語句的語法格式如下:
while 判斷條件: 語句
這里同樣需要注意冒號和縮進。
【例3.7】使用while循環(huán)語句分析輸入的5位數(shù)是不是回文數(shù)(源代碼\ch03\3.7.py)。
一個5位數(shù),判斷它是不是回文數(shù)。例如,12321是回文數(shù),個位與萬位相同,十位與千位相同。
n=input("請輸入需要判斷的5位數(shù):") a=0 b=len(n)-1 flag=True while a<b: if n[a]!=n[b]: print("您輸入的數(shù)不是回文數(shù)") flag=False break a,b=a+1,b-1 if flag: print("您輸入的數(shù)是回文數(shù)")
程序運行結(jié)果如圖3-11所示。

圖3-11 例3.7的程序運行結(jié)果
使用while循環(huán)語句時,如果沒有特殊要求,盡量避免出現(xiàn)無限循環(huán)的情況。例如,下面的例子,求1~100的和,代碼如下:
a = 100 sum = 0 b = 1 while b <= a: sum = sum + b b += 1 print("1 到 %d 之和為: %d" % (a,sum))
如果在這里遺漏代碼行b+= 1,程序就會進入無限循環(huán)中。因為變量b的初始值為1,并且會發(fā)生變化,所以b <= a始終為True,導(dǎo)致while循環(huán)不會停止。
☆經(jīng)驗之談☆
要避免無限循環(huán)的問題,就必須對每個while循環(huán)進行測試,確保其會按預(yù)期的那樣結(jié)束。如果希望程序在用戶輸入特定值時結(jié)束,那么可運行程序并輸入這樣的值;如果在這種情況下程序沒有結(jié)束,那么請檢查程序處理這個值的方式,確認(rèn)程序至少有一個這樣的地方能讓循環(huán)條件變?yōu)镕alse,或者讓break語句得以執(zhí)行。
如果條件表達(dá)式一直為True,while循環(huán)就會進入無限循環(huán)中。無限循環(huán)應(yīng)用也比較廣泛,如在服務(wù)器上處理客戶端的實時請求時就非常有用。
【例3.8】while無限循環(huán)的應(yīng)用(源代碼\ch03\3.8.py)。
ff = "水果" while ff=="水果" : #表達(dá)式永遠(yuǎn)為 True name =str (input("請輸入需要購買水果的名稱:")) print ("你輸入的水果名稱是: ", name) print ("水果購買完畢!")
程序運行結(jié)果如圖3-12所示。

圖3-12 例3.8的程序運行結(jié)果
如果用戶想退出無限循環(huán),可以按Ctrl+C組合鍵。
當(dāng)while循環(huán)體中只有一條語句時,可以將該語句與while寫在同一行中。例如:
ff = "水果" while ff=="水果" : print ("我最喜歡吃的水果是葡萄") print ("水果購買完畢!")
while語句可以和else配合使用,表示當(dāng)while語句的條件表達(dá)式為False時,執(zhí)行else的語句塊。
【例3.9】while語句和else配合使用(源代碼\ch03\3.9.py)。
n =int (input("請輸入一個整數(shù):")) x=1 while x <n: print (x, "小于n") x=x+1 else: print ("小于n的整數(shù)查找完畢!")
程序運行結(jié)果如圖3-13所示。

圖3-13 例3.9的程序運行結(jié)果
3.4.2 for語句
for語句通常由條件控制和循環(huán)兩部分組成。
for語句的語法格式如下:
for <variable> in <sequence>: 語句 else: 語句
其中,<variable>是一個變量名稱;<sequence>是一個列表。else語句運行的時機是當(dāng)for語句都沒有運行,或者最后一個循環(huán)已經(jīng)運行時。else語句是可以省略的。
【例3.10】分析數(shù)字1、2和3,能組成多少個互不相同且無重復(fù)數(shù)字的3位數(shù)(源代碼\ch03\3.10.py)。
這里使用range()函數(shù)遍歷數(shù)字1、2、3,然后使用for循環(huán)輸出所有的組合數(shù)字,最重要的是要把重復(fù)的數(shù)字去掉。
tm=0 for i in range(1,4): #range()函數(shù)遍歷數(shù)字1、2、3 for j in range(1,4): #使用for 循環(huán)輸出所有的組合數(shù)字 for k in range(1,4): if ((i!=j)and(j!=k)and(k!=i)): #把重復(fù)的數(shù)字去掉 print(i,j,k) tm+=1 print('總共組合了' ,tm, '個數(shù)字')
程序運行結(jié)果如圖3-14所示。

圖3-14 例3.10的程序運行結(jié)果
若想跳出循環(huán),則可以使用break語句。該語句用于跳出當(dāng)前循環(huán)體。
【例3.11】for語句和break語句的綜合應(yīng)用(源代碼\ch03\3.11.py)。
下面的例子是實現(xiàn)快速搜索到人名為間諜的人,然后跳出循環(huán)。
name = ["小明", "張三","李四","王五","間諜","小雨"] for n in name: if n == "間諜": print("找到名字為間諜的人啦!") break print(n) else: print("沒有發(fā)現(xiàn)名字為間諜的人!") print("人名搜索完畢!")
程序運行結(jié)果如圖3-15所示。從結(jié)果可以看出,當(dāng)搜索到“間諜”時,會跳出當(dāng)前循環(huán),對應(yīng)的循環(huán)else塊將不執(zhí)行。

圖3-15 例3.11的程序運行結(jié)果
3.4.3 continue語句和else語句
使用continue語句,Python將跳過當(dāng)前循環(huán)塊中的剩余語句,繼續(xù)進行下一輪循環(huán)。
【例3.12】while語句和continue語句的配合使用(源代碼\ch03\3.12.py)。
此例主要輸出以10開始遞減的整數(shù),并且遞減間隔為2,最小數(shù)為0。
a = 10 while a >0: a=a-2 if a==6: #變量為6時跳過輸出 continue print (a, " 大于或等于0")
程序運行結(jié)果如圖3-16所示。從結(jié)果可以看出,當(dāng)變量為6時,將跳出當(dāng)前循環(huán),進入下一個循環(huán)。

圖3-16 例3.12的程序運行結(jié)果
當(dāng)for循環(huán)被執(zhí)行完畢或while循環(huán)條件為False時,else語句才會被執(zhí)行。需要特別注意的是,如果循環(huán)被break語句終止,那么else語句不會被執(zhí)行。
【例3.13】for、break和else語句的配合使用(源代碼\ch03\3.13.py)。
a= "萬樹鳴蟬隔岸虹,樂游原上有西風(fēng)。" for b in a: #包含break 語句 if b== '樂': #文字為“樂”時跳過輸出 print ('當(dāng)前文字是:', aa) break else: print ('沒有發(fā)現(xiàn)對應(yīng)的文字')
程序運行結(jié)果如圖3-17所示。從結(jié)果可以看出,當(dāng)搜索到文字“樂”時,將通過break語句跳出循環(huán)。

圖3-17 例3.13的程序運行結(jié)果
3.4.4 pass語句
pass是空語句,主要為了保持程序結(jié)構(gòu)的完整性。pass不做任何事情,一般用作占位語句。
【例3.14】for和pass語句的配合使用(源代碼\ch03\3.14.py)。
for a in '羲和自趁虞泉宿,不放斜陽更向東。': if a == '不': pass print ('執(zhí)行pass 語句') print ('當(dāng)前文字:' a) print ("搜索完畢!")
程序運行結(jié)果如圖3-18所示。從結(jié)果可以看出,當(dāng)搜索到文字“不”時,先執(zhí)行print ('執(zhí)行pass語句'),然后執(zhí)行print ('當(dāng)前文字:', a)。

圖3-18 例3.14的程序運行結(jié)果
- Python概率統(tǒng)計
- Getting started with Google Guava
- Python for Secret Agents:Volume II
- Java EE框架整合開發(fā)入門到實戰(zhàn):Spring+Spring MVC+MyBatis(微課版)
- Xcode 7 Essentials(Second Edition)
- NLTK基礎(chǔ)教程:用NLTK和Python庫構(gòu)建機器學(xué)習(xí)應(yīng)用
- Getting Started with PowerShell
- Java FX應(yīng)用開發(fā)教程
- PyTorch Artificial Intelligence Fundamentals
- Rust Cookbook
- PLC應(yīng)用技術(shù)(三菱FX2N系列)
- 匯編語言編程基礎(chǔ):基于LoongArch
- 計算機應(yīng)用基礎(chǔ)教程(Windows 7+Office 2010)
- Python網(wǎng)絡(luò)爬蟲技術(shù)與應(yīng)用
- Mastering OAuth 2.0