我一直试图在我正在制作的基于文本的游戏中获得一些统计数据。我试图从函数返回变量,但每次我尝试将它放在一个全局变量时,我得到一个名称错误。我已经查了很多关于这方面的话题,但我发现并没有帮助我。这是我尝试修复游戏的代码。
def HEALTH():
health =['''
===============''','''
==============''','''
=============''','''
============''','''
===========''','''
==========''','''
=========''','''
========''','''
=======''','''
======''','''
=====''','''
====''','''
===''','''
==''','''
=''','''
x''']
return health
health =HEALTH(health)
print(health[0])
答案 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]