-1

我一直在尝试在我一直在制作的基于文本的游戏中获得一些统计数据。我试图从函数中返回变量,但每次我尝试将它放入全局变量中时都会出现名称错误。我已经查找了许多有关此的主题,但我发现的内容对我没有多大帮助。这是我为尝试修复游戏而编写的代码。

def HEALTH():
    health =['''
    ===============''','''
    ==============''','''
    =============''','''
    ============''','''
    ===========''','''
    ==========''','''
    =========''','''
    ========''','''
    =======''','''
    ======''','''
    =====''','''
    ====''','''
    ===''','''
    ==''','''
    =''','''
    x''']
    return health
health =HEALTH(health)
print(health[0])
4

2 回答 2

1

在您的函数定义HEALTH中不带任何参数。因此,以下行必然会失败:

health =HEALTH(health)

事实上,这行代码看起来更像是您正在尝试创建一个名为的类HEALTH,但它尤其注定会失败,因为您正在使用您定义的变量作为函数的参数health

可能您正在尝试做的是在函数定义中接受一个参数:

def HEALTH(health_level):
    health=['''...''']]
    return health[health_level]

print(HEALTH(0))

我们也应该有一些更好的名字。为什么不调用您的函数,如下所示:

def get_health(health_level):
    health=['''...''']
    return health[health_level]

这样,您就不会以可能令人困惑的方式一遍又一遍地使用“健康”这个词。

于 2013-08-06T18:36:14.237 回答
0

另外,我认为您误解了 python 编码约定。通常 ALL_CAPS 名称是为 CONSTANTS 保留的 - 您不希望使用更改的变量。例如,您可能有一个健康的起始值,如下所示:

HEALTH_DEFAULT = 100

class Character(object):
    def __init__(self):
        self.Health = HEALTH_DEFAULT

class BuffCharacter(Character):
     def __init__(self):
        self.Health = HEALTH_DEFAULT * 2

在您的情况下,您似乎正在尝试为一系列值保留健康图形打印输出的索引。你可能想要更多这样的:

HEALTH_DISPLAY = ["=" * i for i in range (10, 0, -1)] + ["X"] # easier on the eyes!

def get_health(val):
    return HEALTH_DISPLAY[val]
于 2013-08-06T18:50:35.903 回答