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

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

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

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

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

六、嵌套循環(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兩個數(shù)交叉相乘的效果,就必須依靠循環(huán)嵌套
代碼如下:
for i in range(1,10) :
? ? for j in range(1,10) :
? ? ? ? print("%d*%d=%d"%(i,j,i*j))運行結(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()運行結(jié)果如下:

此時每一行的的第一個字符相等,與結(jié)果的每一列字符相等,所以輸出可以將i和j互換。并且,應(yīng)該是第一行只留11,第二行只留12,2*2,以此類推才能實現(xiàn)要求的乘法表。具體方法是當(dāng)外層循環(huán)比內(nèi)層循環(huán)數(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()運行結(jié)果如下:

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

