2017-03-31 80 views
0

我不知道为什么,但蟒蛇正在执行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”按: 然后,如果高度等于不管做什么 否则,做whatever2

但电脑是怎么回事: 如果's'被按下 那么,使高度等于任何因为高度不再等于任何东西,使它等于whatever2

我已经尝试过使用带有'和'运算符的单个if语句和各种时髦的做法,但我做的一切,代码只是似乎移动到下一行,无论如果/ elif/else

我什至尝试实现一种计时器,这种工作,但是不可靠的。

+5

这是不可能的。有可能是'update'被调用很多次,.. –

+1

使用'import pdb; pdb.set_trace()'然后遍历每个部分来检查计算机实际上在做什么 – chbchb55

+0

它跟踪工作得很好。我认为这只是移动得太快了。就像一个按键和S键的提升比“计算机时间”所说的要花费更多时间,所以它会运行更新两次(或者更多,如果我添加更多的语句) 我认为这就是为什么我把时间放在一个时间点上,但即使这样也有类似的问题。 –

回答

0

这是一个非常简单的修复。我在初始化添加一个计时器,并添加了这个:

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()找出它没有,事实上,执行无论是单独(就非常快)。它移动得太快了,它看起来像是同时进行的。