[英]While Loop Won't Break?
這只是學校的一個快速小代碼任務,但我一直在測試和更改條件的所有可能方式,但沒有任何效果。 while 循環只是繼續運行超過 9 圈,這是它不應該做的。 這是一個如此簡單的 while 循環,但它並沒有中斷,這讓我很困惑。 我可能超級笨,但請幫忙。
def main():
turns=0
while turns<9:
print("Turns:",turns)
print_grid()
p1()
turns+=1
print("Turns:",turns)
print_grid()
p2()
turns+=1
print("done")
main()
顯然有不必要的打印語句,它們只是我用來檢查轉彎以確保我沒有愚蠢的那些。 這是我可以告訴它繼續循環直到輪數等於 9 的最基本的方法,當代碼運行時,它在 IDLE 中直接告訴我 - “輪數:9”,這只會進一步激怒我。 由於其余代碼不允許進一步輸入,我無法輸入超過 9。
缺少一個函數print_grid但從你的描述中我認為你需要的是這個
def main():
turns=0
while turns<9:
print("Turns:",turns)
turns+=1 # to iterate and print turns, it should be after **print**
print("done")
main()
輸出
Turns: 0
Turns: 1
Turns: 2
Turns: 3
Turns: 4
Turns: 5
Turns: 6
Turns: 7
Turns: 8
done
僅在每次迭代運行之前檢查while
循環的條件。 如果在循環中間的某個點turns
大於9
,則循環不會在迭代中途中斷。 如果您希望它在中間break
,則需要手動檢查:
while turns<9:
print("Turns:",turns)
print_grid()
p1()
turns+=1
if turns >= 9: # Check here
break
print("Turns:",turns)
print_grid()
p2()
turns+=1
不過這很亂。 該循環的大部分內容都是重復的。 唯一改變的是對p1
和p2
的調用。 我只是在兩個函數之間切換,然后從一段while
更改為range
:
func = p1
for turn in range(9):
print("Turns:", turn)
print_grid()
func() # Call p1 or p2 depending
if func is p1: # Toggle
func = p2
else:
func = p1
結束部分也可以更改為:
func = p2 if func is p1 else p1
您可能應該將該while
循環轉換為for
循環,因為它更適合您的用例,但讓我解釋一下無論如何會發生什么。
在循環過程中,循環開始后增加turns
,所以它會上升到 9,然后中斷。 你可以做些什么來解決這個問題是將代碼從while turns < 9
更改為while turns != 8
或引入 if 語句
if turns == 8:
break
再說一次,我建議您將其更改為for
循環:
def main():
turns=0
for _ in range(8):
print("Turns:",turns)
print_grid()
p1()
turns+=1
print("Turns:",turns)
print_grid()
p2()
turns+=1
print("done")
main()
編輯:就像@CYREX 所說的,你也應該在打印之前而不是之后增加。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.