2017-11-25 195 views
-1

如果我嘗試代碼:爲什麼不「而」的工作方式相同「的」有繼續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。 我在這裏錯過了什麼?

+2

的_outer_循環遞增它,但_inner_循環不。 –

+2

while循環不增加,只要條件成立就保持循環。 –

+1

關鍵是,'continue'繼續執行_current_循環。 – ForceBru

回答

5

A while loop是一個帶有條件的代碼結構。只要條件滿足,它就會保持循環。此外,一個while循環確實是沒有其他其他(這與將下一項讀入變量的for循環相反)。

此外,while環路是環路continue語句與最近的循環綁定。因此,在您的第二條代碼聲明中,continue將讓代碼在while循環上執行新的迭代。

由於您while循環不會改變i,和continue會讓while環路(不是for環路)執行新的循環,這將因此繼續執行while循環。

這就是說,這兩個代碼片段都不是優雅的。你可以簡單地用一個range(..)語句有兩個參數陳述開始值:

for i in range(6, 10): 
    print(i)
+0

我只使用上面的代碼作爲一個簡單的例子。我不是一個完整的小白,雖然回顧性的,這個問題肯定會讓我看起來像一個XD – Daniel

2

TL;!DR while loop=if statement

你有這些環結構是如何工作的一種誤解。

A for-loop將在iterable(如range)中循環通過variable。當它到達iterable的末尾或遇到breakreturn時,它將跳出loop

A while循環連續運行,條件是True或遇到breakreturn

在你的情況下,當程序到達for-loop的第一個循環時,i0。然後輸入一個while循環,條件爲i < 5

這個條件是True(因爲0< 5)所以loop運行。您可以致電continue。這個關鍵字告訴Python移到下一個循環並且逃離當前循環。因此,在這種情況下,由於while循環是當前的loop,因此Python跳轉到while循環中的下一個循環。

在這裏,我們再次評估條件:i < 5並再次這是True。正如你所看到的,我們回到上面的2段落!因此,創建了一個無限的loop,程序永遠不會結束。

希望這會回答你的問題。

+0

或遇到「休息」。這也有效 –

+0

@ Jean-FrançoisFabre那實際上就是我的意思!我正在考慮'break',我想'return'也可以。 –

相關問題