[英]While Loop Counter Confusion
我正在使用 while 循環,我對如何以我想要的方式擺脫它有點困惑。 所以我在while循環中嵌套了一個for循環:
x = True
y = 0
while x:
if y >= 5:
x = False
print('break')
else:
for x in range(7):
y += 1
print('test')
我正在尋找的 output 是打印出 5 個測試和一個中斷。 但是,每次我運行程序時,它都會在中斷之前打印出 7 個測試。 我不太確定,但我認為我只是對 while 循環中的某些內容感到困惑:如果有人可以向我解釋這一點,請告訴我,)我已經找到了解決方法。 但我想了解它為什么不起作用。
這是因為它在 while 循環中執行整個 for 循環,因此 y 在再次檢查之前將變為 7。 刪除 for 循環將解決此問題。
x = True
y = 0
while x:
if y >= 5:
x = False
print('break')
else:
y += 1
print('test')
y = 0
while y < 5:
print("test")
y += 1
print("break")
會工作。
當 while 循環允許您直接設置條件時,為 while 循環設置另一個變量(如“x”)是沒有意義的。
因為內循環將在外循環的下一次迭代之前完成。 即,一旦內部循環開始,它會在開始 while 循環的下一次迭代之前執行所有 7 次迭代。
您只需使用一個循環就可以做到這一點。 打印出“test”增加計數器,並在計數器為 5 時放入 if 條件來中斷。
嘗試
i = 0
while True:
if i == 5:
break
print('test')
i = i + 1
打印 7 個test
而不是 5 個的原因是您的整個for
循環在您 go 回到您的while
語句的開頭之前執行。 我認為您的理解是,在for
循環的一次迭代之后,您 go 回到了while
循環的開頭,但這是不正確的:您的for
循環在回到while
循環的開頭之前完全執行。
進入for
循環后,將y
遞增 7 次並打印test
7 次。 y
現在 >= 5,並且您 go 回到您的if
語句中。 if
語句將x
變為 false,從而“關閉” while
循環,並打印一個break
語句。 如果您只想打印 5 個test
和一個break
,那么簡化代碼會容易得多:
y = 0
while True:
if y < 5:
print('test')
y += 1
else:
print('break')
break
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.