gpt4 book ai didi

Python:while循环,如何保持计数器?

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:35 24 4
gpt4 key购买 nike

我正在尝试创建一个游戏,其中有 2 个计数器 a 和 b,当 a 不等于 2(最初为 0)且 b 不等于 5(最初为 3)时游戏继续进行,b 将每次公主触摸窗口上的某个点时增加。我无法保留 a 和 b 值。我正在基于 TKinter 构建的 Zelle 第二版图形框架上构建这款游戏。我的 b 似乎从未超过 4,并且总是重置回 3 而不是达到 5 以停止 while 循环。

相关代码如下(我的形象公主是一个类,有自己的构造函数和方法move),处理b的代码:

.... (irrelevant class informtion) ...

# I did not pass b into the __init__
# I only passed it into the move method, is that fine?

def move( self, mouse, b ):
dX = 0
if mouse.getY() > 300:
dY = 2
else:
dY = -2

self.img.move( dX, dY )

if self.img.getAnchor().getY() == 350:
newB = b + 1
return newB
else:
return b

.....(无关代码)...

while a != 2 or b!= 5:

mouse = win.getMouse()
b = 3

princess.move( mouse, b )

newB = princess.move( mouse, b )

continue

最佳答案

我会说这只是与范围有关,但进一步挖掘似乎并非如此。

你有一个 while 循环,它应该在 a==2 和 b==5 时结束,它们最初都设置为 0,但是在循环,你永远不会改变 a,所以第一个条件总是 true,你会得到一个无限循环。

你的 b 总是恢复到 3 因为你有 b=3 在循环中,你从来没有将它设置为任何东西别的。我假设 princess.move(...) 函数返回新位置 b

此外,循环末尾的 continue 完全是多余的。

试试这个:

a,b = 0,0
while a != 2 or b!= 5:
mouse = win.getMouse()
b = princess.move(mouse, b)

作为旁注,您是否也计划在其中使用 a 做一些事情?因为目前它没有做任何事情,所以这应该足够了:

b = 0
while b!= 5:
mouse = win.getMouse()
b = princess.move(mouse, b)

然后作为进一步说明,称为变量 ab 对阅读您的代码的任何人都没有帮助。给它们命名。

关于Python:while循环,如何保持计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30074975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com