更新全局python列表

2024-09-24 22:27:31 发布

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

完全公开——这是我的第一个堆栈溢出问题。我四处寻找类似的问题有一段时间了,但在我有限的知识范围内找不到对我有帮助的问题(有python全局变量问题,但给出的答案超出了我的理解范围)。在

我是编程新手,我正在通过zedshaw的python-hard-way学习python。我正在练习36,我的目标是写我自己的基于文本的游戏。在

游戏从以下函数开始

def start():
global Your_HP
Your_HP = 20
global Your_Ammo
Your_Ammo = 20
global HP_Scan
HP_Scan = 2
global your_stats
your_stats = [Your_HP, Your_Ammo, HP_Scan]

print "You enter a room with two doors"
print "Do you choose the Red Door\n...or the Blue door?"
start_choice = raw_input("> ")

if "red" or "Red" in start_choice:
    monster_HP = 2
    monster_attack = 3

    red_one(your_stats, monster_attack, monster_HP)

red_one函数如下所示:

^{pr2}$

脚本立即运行shoot函数,如下所示:

def shoot(Your_Ammo, monster_HP):

    print "---------"
    print "You have %d HP left" % Your_HP
    print "How many shots do you fire?"
    shots_fired = raw_input('> ')
    shots_fired = int(shots_fired)

    Your_Ammo -= shots_fired
    monster_HP -= shots_fired

    return Your_Ammo, monster_HP

问题是,当我运行脚本并只拍摄一次时,当我返回到red_one的开头时,Your_Ammo和{}变量会还原为它们的原始值,而不是我从shoot返回的更新后的值

我试着移动声明全局变量的位置(最初声明在所有函数之外,而不是在start)中,我得到了一个“x变量是局部和全局”的错误。在

我知道一般来说,全局变量并不总是最好的主意,所以我只是希望有人能以一种优雅的方式将其分解,并提供一个有用的解决方案,而不管它是否包含全局变量。在

理想情况下,我希望在整个游戏过程中更新your_stats列表中的变量。基本上,从游戏中的任何函数中,我希望能够返回your_stats列表中的任何变量,这样我就可以使用该变量作为其他函数的参数,直到玩家耗尽生命或弹药。在

抱歉,这篇文章有点冗长!非常感谢任何帮助!在


Tags: 函数游戏yourstatsredglobalstarthp