Python,布尔值自行重置
Python, boolean resets itself
我正在使用 python 并且正在制作游戏,但有一件事我不明白。
为什么这个布尔值会重置?我不希望布尔值 '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 时,应该激活 powerup,但由于数字一直在变化,所以我需要这个布尔值。因此,每当数字等于 1 时,我都会更改布尔值,因此当数字等于 1 时,if 语句将始终为真。但问题是布尔值会重置。如果事情发生几次,这将被打印出来:
False
True
False
True
False
True
False
True
你总是在输入函数时将布尔值设置为 False,所以它自然会被重置。但这是一个局部变量;它无论如何都不存在于函数之外。
每次调用此函数时,powerup
都会设置为 False
。所以当你击球时:
if number == 1 or powerup == True:
print(powerup)
powerup = True
print(powerup)
如果您输入该块,number
必须是 1
(除非您有其他未显示的代码)。所以当你第一次打印时,powerup
仍然是 False
。你设置为True
,然后再打印
这是让您感到困惑的地方:
if number == 1 or powerup == True:
print(powerup)
powerup = True
print(powerup)
这里只会打印powerup
的值。在第一个 print
语句中,值总是 False
,而之后,它是 True
。您只会在执行 if
块时将其打印出来,将 powerup
更改为 True
。要对此进行更多探索,只需在 if
块之前添加一个 print(powerup)
。
我正在使用 python 并且正在制作游戏,但有一件事我不明白。
为什么这个布尔值会重置?我不希望布尔值 '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 时,应该激活 powerup,但由于数字一直在变化,所以我需要这个布尔值。因此,每当数字等于 1 时,我都会更改布尔值,因此当数字等于 1 时,if 语句将始终为真。但问题是布尔值会重置。如果事情发生几次,这将被打印出来:
False
True
False
True
False
True
False
True
你总是在输入函数时将布尔值设置为 False,所以它自然会被重置。但这是一个局部变量;它无论如何都不存在于函数之外。
powerup
都会设置为 False
。所以当你击球时:
if number == 1 or powerup == True:
print(powerup)
powerup = True
print(powerup)
如果您输入该块,number
必须是 1
(除非您有其他未显示的代码)。所以当你第一次打印时,powerup
仍然是 False
。你设置为True
,然后再打印
这是让您感到困惑的地方:
if number == 1 or powerup == True:
print(powerup)
powerup = True
print(powerup)
这里只会打印powerup
的值。在第一个 print
语句中,值总是 False
,而之后,它是 True
。您只会在执行 if
块时将其打印出来,将 powerup
更改为 True
。要对此进行更多探索,只需在 if
块之前添加一个 print(powerup)
。