首頁 > 軟體

Python詳細對比講解break和continue區別

2022-06-15 14:02:13

前言

最近在回答問答python區的問題的時候,發現很多人對於這個break和continue分不清。所以,今天我就寫篇文章來講一下(絕對不是為了方便我以後回答的時候複製)

break

在while和for迴圈中,只要滿足一定的條件,程式就會結束,或者進入無限迴圈的境地。這個時候,我們就需要一個東西來幫助我們在滿足某種條件的情況下,主動結束迴圈。或者說,我們希望有一個東西,能在迴圈的過程中的某個特定的階段跳出,結束迴圈。

break長和if,elif,else搭配。

break的用法很簡單,就像它定義所說的,就是跳出迴圈。但是,有幾個需要注意的點:

1. break只跳出一層迴圈:for-for巢狀遍歷的情況的話,一個break只會跳出一個迴圈。如果這個break是在最裡面的話,就只會結束裡面for的迴圈,進入下一個外面for的迴圈。

2. break跳出是絕對跳出,這個跳出的迴圈不會再繼續迴圈了(除非是迴圈巢狀)。

3. break在while-else,for-else迴圈的時候會起到不一樣的效果。

a = 0
while(a<10):
    print(a)
    if a == 8:
        break
    a+=1
else:
    print("ok")

result:
0
1
2
3
4
5
6
7
8

a = 0
while(a<10):
    print(a)
    a+=1
else:
    print("ok")

result:
0
1
2
3
4
5
6
7
8
9
ok

例子

題目來源:牛客網程式設計NP9報數遊戲

牛牛在和朋友玩報數遊戲,他和朋友們圍成一圈,共有n個人,牛牛最初站在第m個位置。從第一個人開始報數,但凡報到3的倍數或者含三的數的人就退出圈子。請問牛牛是第幾個退出圈子的人?

輸入描述:

第一行輸入n,n>2

第二行輸入m,m<n

輸出描述:

輸出一個整數表示每次有人退出時那個人的編號

輸出一個整數表示牛牛是第幾個退出圈子的人

思路:

while-for巢狀,確保這個會無限進行,然後加上兩個break,一個是在牛牛是最後一個人的時候break,另一個是牛牛成為退出的人的時候break

程式碼:

a = int(input())
b = int(input())
ls = [i for i in range(1,a+1)]
c = []
flag = True
cout = 0
num = 0
while True:
    for i in range(1,len(ls)+1):
        num += 1
        if num % 3 == 0 or "3" in str(num):
            print("編號為{}的淘汰了".format(ls[i-1]))
            c.append(ls[i-1])
            cout += 1
            if ls[i-1] == b:
                print("第{}個".format(cout))
                flag = False
                break
    ls = [i for i in range(1,a+1) if i not in c]
    if not flag:
        break

continue

continue會跳過(忽略)當次迴圈的剩下語句,接著開始下一次迴圈。多數和if一起使用,少數會出現在別的情況。

儘管continue會在if裡面出現,但是一旦執行了continue,if外面的也會被跳過。

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

result:
1

例子

題目來源:牛客網程式設計NP17前十個偶數

通過給函數 range()指定三個引數來建立一個列表my_list,其中包含 [1,10000] 中的所有奇數;再使用一個 for 迴圈將這些中是質數數位都列印出來(每個數位獨佔一行)。

思路:

先 range和迭代器一起生成一個list,然後continue搭配if判斷,輸出。

程式碼:

ls = [i for i in range(2,10001)]
for i in ls:
    notprime = False
    for j in range(2,i):
        if i % j != 0:
            continue
        notprime = True
        break
    if i == 2:
        notprime = True
    if not notprime:
        print(i)

對比

相同:

1. break 和 continue 都有著結束當前這次迴圈的作用

2. break 和 continue 都經常和if 搭配使用

3. break 和 continue 是單獨的語句,不需要引數,也不能放在判斷語句中

不同:

1. break 是跳出迴圈,不繼續下次迴圈;continue是結束當前這次迴圈,但是還繼續下次迴圈

2. break 對 for else 和 while else 有特殊的作用,continue沒有

3. break 應用的要比continue廣,多數情況下用 break 而不是 continue

到此這篇關於Python詳細對比講解break和continue區別的文章就介紹到這了,更多相關Python break和continue內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


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