2024-04-25 09:43:40 发布
网友
我已经完成了一半的机会战斗计划,我想通过使用函数来缩短我的工作。但我发现了错误
UnboundLocalError: local variable 'Ehealth' referenced before assignment
这是我目前为止的代码。。。在
我发现线路出错了
Ehealth = (Ehealth - damage)
任何帮助都将不胜感激。在
您正在尝试使用位于函数外部的变量。无论如何,我会这么做:
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()函数中为该变量赋值:
attack()
函数中的赋值使名称局部;您似乎希望它是全局的。因为它是一个本地的,并且在该行之前还没有在函数中赋值,所以会得到错误。在
告诉Python将其视为全局的。将这一行添加到函数中(因为第一行可能是个好主意):
这告诉Python编译器将Ehealth视为函数内的全局变量,即使您将其赋值给它。在
Ehealth
Ehealth是全局变量,如果您只打印它,则不会有任何错误,但当您试图修改它时,函数会将其视为局部变量。 解决方案:
def attack(Ehealth=Ehealth):
您正在尝试使用位于函数外部的变量。无论如何,我会这么做:
请注意,如果要更改变量的值,则需要使用“global”关键字。在
您在
attack()
函数中为该变量赋值:函数中的赋值使名称局部;您似乎希望它是全局的。因为它是一个本地的,并且在该行之前还没有在函数中赋值,所以会得到错误。在
告诉Python将其视为全局的。将这一行添加到函数中(因为第一行可能是个好主意):
^{pr2}$这告诉Python编译器将
Ehealth
视为函数内的全局变量,即使您将其赋值给它。在Ehealth是全局变量,如果您只打印它,则不会有任何错误,但当您试图修改它时,函数会将其视为局部变量。 解决方案:
相关问题 更多 >
编程相关推荐