如果我嘗試代碼:爲什麼不「而」的工作方式相同「的」有繼續staement
for i in range(10):
if i < 5:
continue
print(i)
將打印的數字6-10。 但代碼:
for i in range(10):
while i < 5:
continue
print(i)
將永不終止。 似乎while循環不增加i。 我在這裏錯過了什麼?
如果我嘗試代碼:爲什麼不「而」的工作方式相同「的」有繼續staement
for i in range(10):
if i < 5:
continue
print(i)
將打印的數字6-10。 但代碼:
for i in range(10):
while i < 5:
continue
print(i)
將永不終止。 似乎while循環不增加i。 我在這裏錯過了什麼?
A while
loop是一個帶有條件的代碼結構。只要條件滿足,它就會保持循環。此外,一個while
循環確實是沒有其他其他(這與將下一項讀入變量的for
循環相反)。
此外,while
環路是環路。 continue
語句與最近的循環綁定。因此,在您的第二條代碼聲明中,continue
將讓代碼在while
循環上執行新的迭代。
由於您while
循環不會改變i
,和continue
會讓while
環路(不是for
環路)執行新的循環,這將因此繼續執行while
循環。
這就是說,這兩個代碼片段都不是優雅的。你可以簡單地用一個range(..)
語句有兩個參數陳述開始值:
for i in range(6, 10):
print(i)
我只使用上面的代碼作爲一個簡單的例子。我不是一個完整的小白,雖然回顧性的,這個問題肯定會讓我看起來像一個XD – Daniel
TL;!DR while loop
=if statement
你有這些環結構是如何工作的一種誤解。
A for-loop
將在iterable
(如range
)中循環通過variable
。當它到達iterable
的末尾或遇到break
或return
時,它將跳出loop
。
A while
循環連續運行,條件是True
或遇到break
或return
。
在你的情況下,當程序到達for-loop
的第一個循環時,i
是0
。然後輸入一個while
循環,條件爲i < 5
。
這個條件是True
(因爲0
是< 5
)所以loop
運行。您可以致電continue
。這個關鍵字告訴Python移到下一個循環並且逃離當前循環。因此,在這種情況下,由於while
循環是當前的loop
,因此Python跳轉到while
循環中的下一個循環。
在這裏,我們再次評估條件:i < 5
並再次這是True
。正如你所看到的,我們回到上面的2
段落!因此,創建了一個無限的loop
,程序永遠不會結束。
希望這會回答你的問題。
或遇到「休息」。這也有效 –
@ Jean-FrançoisFabre那實際上就是我的意思!我正在考慮'break',我想'return'也可以。 –
的_outer_循環遞增它,但_inner_循環不。 –
while循環不增加,只要條件成立就保持循環。 –
關鍵是,'continue'繼續執行_current_循環。 – ForceBru