我正在使用python和我正在做一個遊戲,但有一件事我沒有得到。Python,布爾重置本身
爲什麼這個布爾值重置?我不希望boolean'powerup'重置。
def spawnPowerup()
number = 0
powerup = False
if (a certain thing happens, the thing happens for one frame.):
number = random.randint(1,2)
if number == 1 or powerup == True:
print(powerup)
powerup = True
print(powerup)
這段代碼背後的想法是,無論什麼時候發生,我都會得到一個數字。當數字等於1時,上電應該被激活,但是由於改變整個時間的數字,我需要這個布爾值。所以,只要數字等於1,我就改變布爾值,所以當數字等於1時,if語句總是爲真。但問題是布爾重置。如果事情發生了幾次,這將是印:
False
True
False
True
False
True
False
True
你是什麼意思的布爾重置?你能否再增加一些printlns來查看它是否在數字== 2時重置? –
在你的第二條if語句中,'powerup'的值將始終爲假,因爲你在函數的開頭將其更改爲false – USFBS
每個人都在這裏得到的是您需要查看'powerup的範圍'變量。現在因爲它在一個函數內部,所以它是一個每次都被重置的私有變量。考慮在'spawnPowerup'之外的'powerup'放在全局範圍內。這樣可以防止每次調用'spawnPowerup'時重置它,除非您在函數本身內重置它。這是一個很好的職位範圍參考http://stackoverflow.com/questions/291978/short-description-of-python-scoping-rules – Kyrubas