簡體   English   中英

帶有 continue 關鍵字的無限 while 循環

[英]Infinite while loop with continue keyword

我的問題 - 我不知道為什么有一個關鍵字continue ,它應該保留 3 的值並繼續前進。 事實上,我有一個無限循環——也就是說,它使程序崩潰。


tab = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
i = 0
while i < len(tab):
    print(tab[i])
    if tab[i] == 3:
        continue
    i+=1

看起來您正在嘗試遍歷列表,直到找到3然后break 做這樣的事情:

items = [1,2,3,4,5]
for item in items:
   if item == 3:
       break

關鍵字continue將傳遞到循環的下一次迭代,其中break將停止循環。

continue關鍵字繼續循環的下一次迭代。

在你的情況下,它會阻止語句i+=1被執行。

這是發生的事情:

  1. 循環通過 0,1,2 就好了
  2. 當它評估tab[i] = 3它繼續循環的下一次迭代,並且i+=1永遠不會執行,因此i保持 3 並且永遠不會增加。 它永遠這樣做。

如果要退出循環,可以使用break語句而不是continue

有關更多信息,您可以在此處閱讀continue關鍵字: https : //docs.python.org/3/tutorial/controlflow.html

您正在使用continue關鍵字,但我認為您想要break

您的代碼將永遠運行,因為i從不迭代超過 3。一旦i == 4 ,它就會進入您的 if 語句並繼續循環。 由於它繼續,它從不重復。

我認為這里的答案都假設 OP 想要使用break而不是continue

但是,如果您需要在 while 循環中使用 continue,請確保在 continue 語句上方有一個遞增/遞減操作,因為 continue 語句跳轉到 while 循環的頂部,在您的情況下, i仍然是 3。

do-while 循環中的continue語句分別跳轉到循環底部。 因此,在您的情況下,您有兩個選擇,要么在 continue 之上遞增,要么使用 for 循環。

tab = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
i = -1
while i < len(tab):
    i += 1
    print(tab[i])
    if tab[i] == 3:
        continue
    

或者

for i in range(0,15):
    if i == 3:
       continue
    print(i)

因為您使用的是跳過其余代碼的continue關鍵字。 一旦 i 達到 3,它就會跳過i+=1命令。 看來您想使用關鍵字break 你也可以這樣做:

for i in tab:
    print(i)
    if i == 3:
        break

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM