[英]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
被執行。
這是發生的事情:
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.