2017-03-31 113 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()找出它沒有,事實上,執行無論是單獨(就非常快)。它移動得太快了,它看起來像是同時進行的。