Python,boolean重置自己

时间:2015-06-16 14:31:20

标签: python boolean reset

我正在使用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时,应该激活上电,但由于改变整个时间的数字我需要这个布尔值。因此,只要数字等于1,我就更改布尔值,因此当数字等于1时,if语句将始终为true。但问题是布尔值重置。如果事情发生了几次就会打印出来:

False
True
False
True
False
True
False
True

3 个答案:

答案 0 :(得分:2)

进入函数时,总是将布尔值设置为False,因此自然会被重置。但这是一个局部变量;它无论如何都不存在于函数之外。

答案 1 :(得分:2)

每次调用此函数时,

powerup都设置为False。所以当你打击时:

if number == 1 or powerup == True:
        print(powerup)
        powerup = True
        print(powerup)
如果您输入该块,则

number必须为1(除非您有其他未显示的代码)。因此,当您进行首次打印时,powerup仍为False。您设置为True,然后重新打印

答案 2 :(得分:1)

这让你感到困惑:

if number == 1 or powerup == True:
    print(powerup)
    powerup = True
    print(powerup)

此处仅打印powerup的值。在第一个print语句中,值始终为False,之后为True。您只会在执行if块时将其打印出来,并将powerup更改为True。要详细了解此问题,只需在print(powerup)阻止之前添加if