同时执行if和else语句的python
我不知道为什么,但是python在同一次迭代中执行if语句,然后执行else语句 我删掉了不重要的代码:同时执行if和else语句的python,python,if-statement,Python,If Statement,我不知道为什么,但是python在同一次迭代中执行if语句,然后执行else语句 我删掉了不重要的代码: from livewires import games ... ... def update(self): if games.keyboard.is_pressed(games.K_s): if self.y == games.screen.height/3: self.y = games.screen.height/2 else: self.y
from livewires import games
...
...
def update(self):
if games.keyboard.is_pressed(games.K_s):
if self.y == games.screen.height/3:
self.y = games.screen.height/2
else:
self.y = games.screen.height
在我看来,它应该是:
如果按下“s”:
那么,如果高度等于,做什么都行
否则,做任何事2
但计算机正在:
如果按下“s”
然后,使高度等于任意值,由于高度不再等于任意值,使其等于任意值
我尝试过使用带有“and”运算符的单个if语句和各种各样的时髦方法,但无论我做什么,代码似乎都会移到下一行,而不管if/elif/else如何
我甚至尝试实现一种计时器,这种计时器可以工作,但不可靠。这是一个非常简单的修复方法。我在初始化中添加了一个计时器,并添加了以下内容:
def update(self):
self.timer -= 1
if self.timer == 0:
self.timer = 8
if games.keyboard.is_pressed(games.K_s):
if self.y == games.screen.height/3:
self.y = games.screen.height/2
else:
self.y = games.screen.height
事实上,pdb.set_trace()发现它确实单独执行了这两个命令(只是执行得非常快)。它移动得如此之快,看起来就像是同时移动了两者。这是不可能的。可能会多次调用
update
,…使用“导入pdb”;设置_trace(),然后逐步检查每个部分,以检查计算机实际在做什么。它与跟踪配合良好。我认为这只是发展得太快了。比如说,按下并提起s键所需的时间比“计算机时间”要长得多,而且它会运行两次更新(如果我添加更多语句,则会运行两次以上)。我想,这就是为什么我将时间放在某个时间点上的原因,但即使这样也会出现类似的问题。