如何在函数中覆盖python中的变量

时间:2017-02-13 00:07:46

标签: python variables

def Change_char_stats():
    Char_dmg = 50
    Char_health = 100
    Char_stat_choice= ''
    print('Current Damage is:',Char_dmg,'and health is:',Char_health,'.')
    Char_stat_choice=input('\nWhat character stat would you like to edit?')

    if Char_stat_choice == '1':
        print('Current damage is',Char_dmg,'.')
        Char_dmg=int(input('Character damage to: '))
        print('Character damage has been changed to',Char_dmg,'.')
        Change_char_stats()

    elif Char_stat_choice == '2':
        print('Current damage is',Char_health,'.')
        Char_health=int(input('Character health to: '))
        print('Character health has been changed to',Char_health,'.')
        Change_char_stats()
    else:
        print('Input invalid.')
        Change_char_stats()

Change_char_stats()

所以基本上我在Python上为自己做一个简单的游戏,我的变量存在问题,因为当我运行程序时,原始变量被设置为50 dmg和100健康,但我想要的是什么do能够运行代码,更改变量然后让它们保持原样。虽然我理解为什么变量不是新值,但我不知道如何覆盖它们,非常感谢帮助。

感谢。

2 个答案:

答案 0 :(得分:2)

我建议创建一个类来将所有变量打包成一个对象:

def class player_character:
    def __init__(self):
        self.health = 100
        self.dmg = 50

现在您创建一个类的实例:

player = player_character()

直接更改变量:

player.health -= 10

或者,您可以向班级添加功能:

def class player_character:
    def __init__(self):
        self.health = 100
        self.dmg = 50

    def hit(self, dmg):
        self.health -= dmg

现在你可以在一个对象上调用该函数:

player.hit(10)

类是非常强大的,是组织代码的绝佳工具。它们允许您将大量数据视为单个实体。我强烈建议您更多地了解它们和面向对象的编程。

答案 1 :(得分:0)

将变量放在函数体之外,并在usng全局关键字中访问它们:

somevar = 5

def foobar(x):
    global somevar
    somevar = x

print somevar
foobar(6)
print somevar