Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在函数中覆盖python中的变量_Python_Variables - Fatal编程技术网

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

如何在函数中覆盖python中的变量,python,variables,Python,Variables,所以基本上我正在为自己在Python上做一个简单的游戏,我的变量有一个问题,因为当我运行程序时,原始变量被设置为50 dmg和100 health,但我想做的是能够运行代码,更改变量,然后让它们保持不变。虽然我理解为什么变量不能作为新值保留下来,但我不知道如何重写它们,非常感谢您的帮助 谢谢。将变量放在函数体之外,并在usng global关键字中使其可访问: def Change_char_stats(): Char_dmg = 50 Char_health = 100

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


谢谢。

将变量放在函数体之外,并在usng global关键字中使其可访问:

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()

将变量放置在函数体外部,并使其在usng global关键字中可访问:

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()

我建议创建一个类,将所有变量打包到一个对象中:

somevar = 5

def foobar(x):
    global somevar
    somevar = x

print somevar
foobar(6)
print somevar
现在创建该类的一个实例:

def class player_character:
    def __init__(self):
        self.health = 100
        self.dmg = 50
player.health -= 10
并直接更改变量:

player = player_character()
或者,您可以向类中添加函数:

def class player_character:
    def __init__(self):
        self.health = 100
        self.dmg = 50
player.health -= 10
现在可以对对象调用函数:

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

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

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

我建议创建一个类,将所有变量打包到一个对象中:

somevar = 5

def foobar(x):
    global somevar
    somevar = x

print somevar
foobar(6)
print somevar
现在创建该类的一个实例:

def class player_character:
    def __init__(self):
        self.health = 100
        self.dmg = 50
player.health -= 10
并直接更改变量:

player = player_character()
或者,您可以向类中添加函数:

def class player_character:
    def __init__(self):
        self.health = 100
        self.dmg = 50
player.health -= 10
现在可以对对象调用函数:

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

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

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

您在这行
Char\u stat\u choice=input('\n您想编辑哪个字符stat?)
上缺少一个结束引号
您一直在调用
Change\u Char\u stats()
递归,但不跟踪对
Char\u health
等所做的任何更改。最好将一个字符表示为类的实例,以便跟踪更改。您应该使用类并在那里使用实例-但在定义yur之前,您确实应该更好地了解函数的工作原理角色类。我建议您在Do上阅读Python教程
如果
语句属于
Change\u char\u stats()
函数?您在这一行
char\u stats\u choice=input('\n您想编辑哪个字符stat?
您一直在调用
Change\u char\u stats()
递归,但不跟踪对
Char\u health
等所做的任何更改。最好将一个字符表示为类的实例,以便跟踪更改。您应该使用类并在那里使用实例-但在定义yur之前,您确实应该更好地了解函数的工作原理角色类。我建议您在Do上阅读Python教程,了解
if
语句是否属于
Change\u char\u stats()
函数?这在多人游戏中会很有趣:)这里没有理由使用globals。从某种意义上说,它确实正确地回答了OP的问题。我不会否决这个答案,因为它是“正确的”。但我也不会投票,除非它解释了这种设计的问题,并提供了更好的设计。这在多人游戏中会很有趣:)这里没有理由使用globals。从某种意义上说,它确实正确地回答了OP提出的问题。我不会否决这个答案,因为它是“正确的”。但我也不会对它投赞成票,除非它解释了这种设计的问题,并提供了更好的设计。