簡體   English   中英

While 循環計數器混淆

[英]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.

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