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