在迴圈中打破並繼續

break 宣告

break 語句在迴圈內執行時,控制流會立即中斷迴圈:

i = 0
while i < 7:
    print(i)
    if i == 4:
        print("Breaking from loop")
        break
    i += 1

執行 break 語句後,不會評估迴圈條件。請注意,break 語句只允許語法內部迴圈。函式內的 break 語句不能用於終止呼叫該函式的迴圈。

執行以下操作列印每個數字,直到數字 4 滿足 break 語句並且迴圈停止:

0
1
2
3
4
Breaking from loop

break 語句也可以在 for 迴圈中使用,這是 Python 提供的另一個迴圈結構:

for i in (0, 1, 2, 3, 4):
    print(i)
    if i == 2:
        break

執行此迴圈現在列印:

0
1
2

請注意,由於迴圈結束,因此不會列印 3 和 4。

如果一個迴圈有一個 else 子句 ,當迴圈通過 break 語句終止時它不會執行。

continue 宣告

continue 語句將跳過迴圈的下一次迭代,繞過當前塊的其餘部分,但繼續迴圈。與 break 一樣,continue 只能出現在迴圈中:

for i in (0, 1, 2, 3, 4, 5):
    if i == 2 or i == 4:
        continue
    print(i)

0
1
3
5

請注意,24 沒有列印,這是因為 continue 進入下一次迭代而不是繼續到 print(i)i == 2i == 4

巢狀迴圈

breakcontinue 僅在單個迴圈級別上執行。以下示例將僅突破內部 for 迴圈,而不是外部 while 迴圈:

while True:
    for i in range(1,5):
        if i == 2:
            break    # Will only break out of the inner loop!

Python 沒有能力同時突破多個迴圈級別 - 如果需要這種行為,將一個或多個迴圈重構為一個函式並用 return 替換 break 可能就是這樣。

在函式中使用 return 作為 break

return 語句從函式退出,而不執行後,自帶的程式碼。

如果你在一個函式內部有一個迴圈,那麼從該迴圈內部使用 return 相當於擁有一個 break,因為迴圈的其餘程式碼沒有被執行( 請注意迴圈之後的任何程式碼也不執行 ):

def break_loop():
    for i in range(1, 5):
        if (i == 2):
            return(i)
        print(i)
    return(5)

如果你有巢狀迴圈,return 語句將破壞所有迴圈:

def break_all():
    for j in range(1, 5):
        for i in range(1,4):
            if i*j == 6:
                return(i)
            print(i*j)

將輸出:

1 # 1*1
2 # 1*2
3 # 1*3
4 # 1*4
2 # 2*1
4 # 2*2
# return because 2*3 = 6, the remaining iterations of both loops are not executed