如何在函数中覆盖python中的变量
所以基本上我正在为自己在Python上做一个简单的游戏,我的变量有一个问题,因为当我运行程序时,原始变量被设置为50 dmg和100 health,但我想做的是能够运行代码,更改变量,然后让它们保持不变。虽然我理解为什么变量不能作为新值保留下来,但我不知道如何重写它们,非常感谢您的帮助如何在函数中覆盖python中的变量,python,variables,Python,Variables,所以基本上我正在为自己在Python上做一个简单的游戏,我的变量有一个问题,因为当我运行程序时,原始变量被设置为50 dmg和100 health,但我想做的是能够运行代码,更改变量,然后让它们保持不变。虽然我理解为什么变量不能作为新值保留下来,但我不知道如何重写它们,非常感谢您的帮助 谢谢。将变量放在函数体之外,并在usng global关键字中使其可访问: def Change_char_stats(): Char_dmg = 50 Char_health = 100
谢谢。将变量放在函数体之外,并在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提出的问题。我不会否决这个答案,因为它是“正确的”。但我也不会对它投赞成票,除非它解释了这种设计的问题,并提供了更好的设计。