首頁 > 軟體

Python 迴圈結構詳解

2022-02-17 13:00:52

前言:

在編寫程式碼時如果能夠簡化一個程式,把重複的程式碼形成公共部分,利用語法來控制,對程式碼進行迴圈往復的執行,這就形成了迴圈結構邏輯。

一、While迴圈

While迴圈的語法格式如下:

while 條件表示式 :
    程式碼段(包含改變計數器值的語句)

while 關鍵詞後面緊跟的條件表示式決定了迴圈是夠進行下去。

下面用while語句實現求1~100的累加和,程式碼如下:

count = 1        #計數器
sum0 = 0        #統計和值,初始值為0
while count <= 100 :
    sum0 += count
    count += 1
print(sum0)

執行結果如下:

While迴圈的語法要點需要做的就是以下三件事:

  • 1、定義計數器的初始值,這個計數器可以計數,也可以用作求解問題的數位處理。
  • 2、While迴圈條件保證計數器在一定條件下退出迴圈。
  • 3、迴圈做的事情放在迴圈體裡,同是不要忘記計數器的疊加效果。

二、While…else…迴圈

While…else…的語法格式如下:

while 條件表示式 :
    程式碼塊1
    改變計數器的值
else :
    程式碼塊2

這個格式比原來基本的while格式讀了一個else語句,器質性流程也多了一步流程,即當while迴圈體正常執行完後執行else程式碼塊中的內容。

下面用while語句實現銀行卡吞卡驗證,程式碼如下:

count = 1
password = input("輸入密碼:")
while count < 3 :
    if password == "000000" :
        print("密碼正確,您可以取款了")
        break
    else :
        input("密碼錯誤,請再一次輸入密碼:")
    count += 1
else: print("密碼錯誤,卡被吞")

執行結果如下:

break用來推出迴圈體,不再執行本層迴圈。

三、for迴圈

while迴圈和for迴圈用於處理不同的問題,while應用在不知道迴圈次數的情況下,for應用在確定迴圈次數的情況下。

for迴圈語句的格式如下:

for 臨時變數 in 可迭代物件 :
    迴圈體

執行過程就是將每一個可迭代物件中的每一個元素複製給臨時變數,再執行迴圈體。當可迭代物件中的元素全部遍歷完後for迴圈就停止執行。

如用for迴圈求1~100的累加和,程式碼如下:

sum0 = 0
for count in range(1,101,1) :
    sum0 += count
print(sum0)

以上程式碼看上去比while迴圈簡單一些,所以變成習慣上使用for迴圈。

注意: Python的區間左邊可以等於,右邊一定不等於,即左閉右開。

range函數可以接受3個引數,range(start,stop,step)產生一個從start開始到stop結束的一個整數序列,step是步長。

四、for…else…迴圈

While…else…的語法格式如下:

for 臨時變數 in 可迭代物件 :
    迴圈體
else :
    程式碼塊2

當for迴圈體正常執行完後執行else程式碼塊中的內容,否則不會執行else中的程式碼。

如上述銀行卡吞卡使用for迴圈就會這樣寫:

password = input("輸入密碼:")
for i in range(1,3,1) :
    if password == "000000" :
        print("密碼正確,您可以取款了")
        break
    else :
        input("密碼錯誤,請再一次輸入密碼:")
else: print("密碼錯誤,卡被吞")

執行結果如下:

五、迴圈體結束語句

Python的迴圈邏輯控制是依靠for和while這兩種語句來實現的。但是,有時不需要把迴圈執行完,條件合適時需要直接退出迴圈,這時可以使用break語句。還有一種需求,不需要退出整個迴圈,而是退出本次迴圈,可以使用continue語句。這兩個語句的區別如下:

  • 1、break用於完全結束一個迴圈,跳出迴圈體之行迴圈後面的語句。
  • 2、continue只是終止本次迴圈,接著還之行後面的迴圈。

下面經過具體範例來了解break和continue的使用:

  • 迴圈列印奇數

如果判斷是偶數,進入下一次迴圈,如果判斷是奇數,直接列印。

for i in range(1,11) :
    if i%2==0 :
        continue
    print(i)

執行如下:

  • 迴圈列印閏年

迴圈找出2020-2051年中的第一個閏年。

for year in range(2020,2051) :
    if year%4==0 and year%100!=0 or year%400==0 :
        print(year)
        break

執行如下:

六、巢狀迴圈

以列印九九乘法表為例:

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    

分析以上九九乘法表的思路,從輸出格式中可以看到數位是從1乘1一直到9乘9,要形成1到9兩個數交叉相乘的效果,就必須依靠迴圈巢狀

程式碼如下:

for i in range(1,10) :
    for j in range(1,10) :
        print("%d*%d=%d"%(i,j,i*j))

執行結果如下:

可以看出以上程式碼列印的是豎向的乘法表,原因是目前的結束符是換行,修改結束符即可。現在把結束符換成“/t”製表符。

修改後的程式碼如下:

for i in range(1,10) :
    for j in range(1,10) :
        print("%d*%d=%d"%(i,j,i*j),end="t")
    print()

執行結果如下:

此時每一行的的第一個字元相等,與結果的每一列字元相等,所以輸出可以將i和j互換。並且,應該是第一行只留11,第二行只留12,2*2,以此類推才能實現要求的乘法表。具體方法是當外層迴圈比內層迴圈數位小時,退出本層迴圈。

最終程式碼如下:

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()

執行結果如下:

到此這篇關於Python 迴圈結構詳解的文章就介紹到這了,更多相關Python 迴圈結構內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com