在迴圈中打破並繼續
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
請注意,2
和 4
沒有列印,這是因為 continue
進入下一次迭代而不是繼續到 print(i)
時 i == 2
或 i == 4
。
巢狀迴圈
break
和 continue
僅在單個迴圈級別上執行。以下示例將僅突破內部 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