Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同时执行if和else语句的python_Python_If Statement - Fatal编程技术网

同时执行if和else语句的python

同时执行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

我不知道为什么,但是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 = 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键所需的时间比“计算机时间”要长得多,而且它会运行两次更新(如果我添加更多语句,则会运行两次以上)。我想,这就是为什么我将时间放在某个时间点上的原因,但即使这样也会出现类似的问题。