如何在函数中重新分配变量 (python)

How do I re-assign a variable in a function (python)

我试过使用 global,但它似乎没有重新分配变量。抱歉,如果这个问题已经得到解答,我找不到答案。 每当我 运行 代码时,它会通过计算输出健康,但不会再次计算 例如如果健康是 10,我 运行 函数,我会得到 7。如果我重新 运行,我会得到另一个 7;它不会再下降了

def mon_attack(health, monDamage, defense):
    print("The monster attacked!")
    health = health - ((monDamage // defense) + 1)
    print("You have " + str(health) + " health left!")

Health 是一个局部变量,它仅在功能持续期间存在。尽管您可能会调用该函数并传入另一个名为 health 的变量,但该变量在不同的范围内并且只是具有相同名称的不同变量,因此当您在函数中修改 health 时,您只会修改本地版本,而不是您调用该函数的版本。您可以做的是使用函数 return 攻击后的新健康值并将打印语句移到函数之外。

使用全局变量-删除“health”函数参数:

health = 100
def mon_attack(monDamage, defense):
    global health
    print("The monster attacked!")
    health = health - ((monDamage // defense) + 1)
    print("You have " + str(health) + " health left!")