Python?循環(huán)結(jié)構(gòu)詳解
前言:
在編寫代碼時(shí)如果能夠簡(jiǎn)化一個(gè)程序,把重復(fù)的代碼形成公共部分,利用語(yǔ)法來(lái)控制,對(duì)代碼進(jìn)行循環(huán)往復(fù)的執(zhí)行,這就形成了循環(huán)結(jié)構(gòu)邏輯。
一、While循環(huán)
While循環(huán)的語(yǔ)法格式如下:
while 條件表達(dá)式 :
代碼段(包含改變計(jì)數(shù)器值的語(yǔ)句)
while 關(guān)鍵詞后面緊跟的條件表達(dá)式?jīng)Q定了循環(huán)是夠進(jìn)行下去。
下面用while語(yǔ)句實(shí)現(xiàn)求1~100的累加和,代碼如下:
count = 1?? ??? ?#計(jì)數(shù)器 sum0 = 0?? ??? ?#統(tǒng)計(jì)和值,初始值為0 while count <= 100 : ? ? sum0 += count ? ? count += 1 print(sum0)
運(yùn)行結(jié)果如下:

While循環(huán)的語(yǔ)法要點(diǎn)需要做的就是以下三件事:
- 1、定義計(jì)數(shù)器的初始值,這個(gè)計(jì)數(shù)器可以計(jì)數(shù),也可以用作求解問(wèn)題的數(shù)字處理。
- 2、While循環(huán)條件保證計(jì)數(shù)器在一定條件下退出循環(huán)。
- 3、循環(huán)做的事情放在循環(huán)體里,同是不要忘記計(jì)數(shù)器的疊加效果。
二、While…else…循環(huán)
While…else…的語(yǔ)法格式如下:
while 條件表達(dá)式 :
代碼塊1
改變計(jì)數(shù)器的值
else :
代碼塊2
這個(gè)格式比原來(lái)基本的while格式讀了一個(gè)else語(yǔ)句,器質(zhì)性流程也多了一步流程,即當(dāng)while循環(huán)體正常執(zhí)行完后執(zhí)行else代碼塊中的內(nèi)容。
下面用while語(yǔ)句實(shí)現(xiàn)銀行卡吞卡驗(yàn)證,代碼如下:
count = 1
password = input("輸入密碼:")
while count < 3 :
? ? if password == "000000" :
? ? ? ? print("密碼正確,您可以取款了")
? ? ? ? break
? ? else :
? ? ? ? input("密碼錯(cuò)誤,請(qǐng)?jiān)僖淮屋斎朊艽a:")
? ? count += 1
else: print("密碼錯(cuò)誤,卡被吞")運(yùn)行結(jié)果如下:

break用來(lái)推出循環(huán)體,不再執(zhí)行本層循環(huán)。
三、for循環(huán)
while循環(huán)和for循環(huán)用于處理不同的問(wèn)題,while應(yīng)用在不知道循環(huán)次數(shù)的情況下,for應(yīng)用在確定循環(huán)次數(shù)的情況下。
for循環(huán)語(yǔ)句的格式如下:
for 臨時(shí)變量 in 可迭代對(duì)象 :
循環(huán)體
執(zhí)行過(guò)程就是將每一個(gè)可迭代對(duì)象中的每一個(gè)元素復(fù)制給臨時(shí)變量,再執(zhí)行循環(huán)體。當(dāng)可迭代對(duì)象中的元素全部遍歷完后for循環(huán)就停止運(yùn)行。
如用for循環(huán)求1~100的累加和,代碼如下:
sum0 = 0 for count in range(1,101,1) : ? ? sum0 += count print(sum0)
以上代碼看上去比while循環(huán)簡(jiǎn)單一些,所以變成習(xí)慣上使用for循環(huán)。
注意: Python的區(qū)間左邊可以等于,右邊一定不等于,即左閉右開。
range函數(shù)可以接受3個(gè)參數(shù),range(start,stop,step)產(chǎn)生一個(gè)從start開始到stop結(jié)束的一個(gè)整數(shù)序列,step是步長(zhǎng)。
四、for…else…循環(huán)
While…else…的語(yǔ)法格式如下:
for 臨時(shí)變量 in 可迭代對(duì)象 :
循環(huán)體
else :
代碼塊2
當(dāng)for循環(huán)體正常執(zhí)行完后執(zhí)行else代碼塊中的內(nèi)容,否則不會(huì)執(zhí)行else中的代碼。
如上述銀行卡吞卡使用for循環(huán)就會(huì)這樣寫:
password = input("輸入密碼:")
for i in range(1,3,1) :
? ? if password == "000000" :
? ? ? ? print("密碼正確,您可以取款了")
? ? ? ? break
? ? else :
? ? ? ? input("密碼錯(cuò)誤,請(qǐng)?jiān)僖淮屋斎朊艽a:")
else: print("密碼錯(cuò)誤,卡被吞")運(yùn)行結(jié)果如下:

五、循環(huán)體結(jié)束語(yǔ)句
Python的循環(huán)邏輯控制是依靠for和while這兩種語(yǔ)句來(lái)實(shí)現(xiàn)的。但是,有時(shí)不需要把循環(huán)執(zhí)行完,條件合適時(shí)需要直接退出循環(huán),這時(shí)可以使用break語(yǔ)句。還有一種需求,不需要退出整個(gè)循環(huán),而是退出本次循環(huán),可以使用continue語(yǔ)句。這兩個(gè)語(yǔ)句的區(qū)別如下:
- 1、
break用于完全結(jié)束一個(gè)循環(huán),跳出循環(huán)體之行循環(huán)后面的語(yǔ)句。 - 2、
continue只是終止本次循環(huán),接著還之行后面的循環(huán)。
下面經(jīng)過(guò)具體實(shí)例來(lái)了解break和continue的使用:
- 循環(huán)打印奇數(shù)
如果判斷是偶數(shù),進(jìn)入下一次循環(huán),如果判斷是奇數(shù),直接打印。
for i in range(1,11) : ? ? if i%2==0 : ? ? ? ? continue ? ? print(i)
運(yùn)行如下:

- 循環(huán)打印閏年
循環(huán)找出2020-2051年中的第一個(gè)閏年。
for year in range(2020,2051) : ? ? if year%4==0 and year%100!=0 or year%400==0 : ? ? ? ? print(year) ? ? ? ? break
運(yùn)行如下:

六、嵌套循環(huán)
以打印九九乘法表為例:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
分析以上九九乘法表的思路,從輸出格式中可以看到數(shù)字是從1乘1一直到9乘9,要形成1到9兩個(gè)數(shù)交叉相乘的效果,就必須依靠循環(huán)嵌套
代碼如下:
for i in range(1,10) :
? ? for j in range(1,10) :
? ? ? ? print("%d*%d=%d"%(i,j,i*j))運(yùn)行結(jié)果如下:

可以看出以上代碼打印的是豎向的乘法表,原因是目前的結(jié)束符是換行,修改結(jié)束符即可?,F(xiàn)在把結(jié)束符換成“/t”制表符。
修改后的代碼如下:
for i in range(1,10) :
? ? for j in range(1,10) :
? ? ? ? print("%d*%d=%d"%(i,j,i*j),end="\t")
? ? print()運(yùn)行結(jié)果如下:

此時(shí)每一行的的第一個(gè)字符相等,與結(jié)果的每一列字符相等,所以輸出可以將i和j互換。并且,應(yīng)該是第一行只留11,第二行只留12,2*2,以此類推才能實(shí)現(xiàn)要求的乘法表。具體方法是當(dāng)外層循環(huán)比內(nèi)層循環(huán)數(shù)字小時(shí),退出本層循環(huán)。
最終代碼如下:
for j in range(1,10) :
? ? for i in range(1,10) :
? ? ? ? if i > j :
? ? ? ? ? ? continue
? ? ? ? print("%d * %d = %d"%(i,j,i*j),end="\t")
? ? print()運(yùn)行結(jié)果如下:

到此這篇關(guān)于Python 循環(huán)結(jié)構(gòu)詳解的文章就介紹到這了,更多相關(guān)Python 循環(huán)結(jié)構(gòu)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python之循環(huán)結(jié)構(gòu)
- 詳解Python的循環(huán)結(jié)構(gòu)知識(shí)點(diǎn)
- Python循環(huán)結(jié)構(gòu)的應(yīng)用場(chǎng)景詳解
- Python循環(huán)結(jié)構(gòu)詳解
- python 循環(huán)結(jié)構(gòu)練習(xí)題
- Python順序結(jié)構(gòu)語(yǔ)句詳解
- Python順序結(jié)果、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)詳解
- Python中順序結(jié)構(gòu)和循環(huán)結(jié)構(gòu)示例代碼
相關(guān)文章
關(guān)于Python中幾種隊(duì)列Queue用法區(qū)別
這篇文章主要介紹了關(guān)于Python中幾種隊(duì)列Queue用法區(qū)別,queue隊(duì)列中的put()或者get()方法中都提供了timeout參數(shù),利用這個(gè)參數(shù)可以有效解決上述消除不能消費(fèi)和線程一直阻塞問(wèn)題,需要的朋友可以參考下2023-05-05
pytest用例間參數(shù)傳遞的兩種實(shí)現(xiàn)方式示例
pytest提供了許多運(yùn)行命令以供定制化運(yùn)行某一類測(cè)試用例或者某個(gè)測(cè)試用例等,下面這篇文章主要給大家介紹了關(guān)于pytest用例間參數(shù)傳遞的兩種實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
解決python3 網(wǎng)絡(luò)請(qǐng)求路徑包含中文的問(wèn)題
今天小編就為大家分享一篇解決python3 網(wǎng)絡(luò)請(qǐng)求路徑包含中文的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
ActiveMQ:使用Python訪問(wèn)ActiveMQ的方法
今天小編就為大家分享一篇ActiveMQ:使用Python訪問(wèn)ActiveMQ的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
簡(jiǎn)單的Python動(dòng)態(tài)可視化神器,編程小白也能上手
這篇文章就來(lái)介紹簡(jiǎn)單的Python動(dòng)態(tài)可視化神器,最近發(fā)現(xiàn)了一個(gè)寶藏動(dòng)態(tài)可視化庫(kù),非常簡(jiǎn)單,即使是小白也能輕松上手。這個(gè)庫(kù)就是motionchart,它能夠用 pandas 的 dataframe 數(shù)據(jù)直接創(chuàng)建交互式的動(dòng)態(tài)圖表,下面來(lái)簡(jiǎn)單看一下如何使用。2021-10-10
學(xué)習(xí)Python3 Dlib19.7進(jìn)行人臉面部識(shí)別
本篇文章主要給大家詳細(xì)介紹了Python3利用Dlib19.7進(jìn)行人臉面部識(shí)別的相關(guān)知識(shí),一起學(xué)習(xí)參考下吧。2018-01-01

