UnboundLocalError:在assignmen之前引用了局部变量“Ehealth”

2024-04-25 09:43:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经完成了一半的机会战斗计划,我想通过使用函数来缩短我的工作。但我发现了错误

UnboundLocalError: local variable 'Ehealth' referenced before assignment 

这是我目前为止的代码。。。在

^{pr2}$

我发现线路出错了

Ehealth = (Ehealth - damage)

任何帮助都将不胜感激。在


Tags: 函数代码local错误variable线路计划机会
3条回答

您正在尝试使用位于函数外部的变量。无论如何,我会这么做:

def attack():
    global Ehealth
    damage = (random.randrange(5,21))
    time.sleep(3)

    print ("You attack the Boar for " + str(damage) + " attack points.")
    time.sleep(3)

    Ehealth = (Ehealth - damage)

    print ("The Boars health is at " + str(Ehealth) + ".")
    time.sleep(3)

请注意,如果要更改变量的值,则需要使用“global”关键字。在

您在attack()函数中为该变量赋值:

Ehealth = (Ehealth - damage)

函数中的赋值使名称局部;您似乎希望它是全局的。因为它是一个本地的,并且在该行之前还没有在函数中赋值,所以会得到错误。在

告诉Python将其视为全局的。将这一行添加到函数中(因为第一行可能是个好主意):

^{pr2}$

这告诉Python编译器将Ehealth视为函数内的全局变量,即使您将其赋值给它。在

Ehealth是全局变量,如果您只打印它,则不会有任何错误,但当您试图修改它时,函数会将其视为局部变量。 解决方案:

def attack(Ehealth=Ehealth):

相关问题 更多 >