我如何在全局变量中的函数中使用变量?

时间:2013-08-06 18:33:46

标签: python

我一直试图在我正在制作的基于文本的游戏中获得一些统计数据。我试图从函数返回变量,但每次我尝试将它放在一个全局变量时,我得到一个名称错误。我已经查了很多关于这方面的话题,但我发现并没有帮助我。这是我尝试修复游戏的代码。

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

2 个答案:

答案 0 :(得分: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]

这样你就不会一次又一次地以混乱的方式使用“健康”这个词。

答案 1 :(得分: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]