Python,函数改变值
所以我很难让这个系统工作,我不能确定我问的是正确的问题,但这里是正在发生的事情和我想要发生的事情Python,函数改变值,python,Python,所以我很难让这个系统工作,我不能确定我问的是正确的问题,但这里是正在发生的事情和我想要发生的事情 money = 1 def Stats(): print print "money " + str(money) def gainM(): money + 2 Stats() if money == 1: gainM() 现在,当它用于印刷货币时,值仍然是1,即使我在值上加2。(代码不是我的实际程序的副本,而是一个显示正在发生什么的示例。)您需
money = 1
def Stats():
print
print "money " + str(money)
def gainM():
money + 2
Stats()
if money == 1:
gainM()
现在,当它用于印刷货币时,值仍然是1,即使我在值上加2。(代码不是我的实际程序的副本,而是一个显示正在发生什么的示例。)您需要将新值分配给货币。像这样:
money = money + 2
或速记形式:
money += 2
此外,如果变量在函数外部,则需要将其声明为全局变量(这样它就不会创建局部变量)
因此,你最终会:
def gainM():
global money
money += 2
Stats()
编辑:只是澄清一下,我不是说你应该使用全局变量。一般来说,它们是一个坏主意(尽管它们在某些情况下可能有用)。然而,这正是这个特定示例需要解决的问题。然而,很可能您想要的是一个具有实例变量的类,该类的方法可以修改该实例变量。然而,考虑到你似乎还没有掌握这门语言的基本知识,一步一步地去做,不要担心我前面的句子中你现在还不懂的任何单词:)你需要给钱赋予新的价值。像这样:
money = money + 2
或速记形式:
money += 2
此外,如果变量在函数外部,则需要将其声明为全局变量(这样它就不会创建局部变量)
因此,你最终会:
def gainM():
global money
money += 2
Stats()
编辑:只是澄清一下,我不是说你应该使用全局变量。一般来说,它们是一个坏主意(尽管它们在某些情况下可能有用)。然而,这正是这个特定示例需要解决的问题。然而,很可能您想要的是一个具有实例变量的类,该类的方法可以修改该实例变量。然而,考虑到你似乎还没有掌握语言的基本知识,一步一个脚印,不要担心我前面的句子中你现在还不懂的任何单词:)
money+2
是不可行的。你实际上必须将money
赋值给一个新值
money = money + 2
# or
money += 2
但是你会发现你得到了一个错误-你不能分配给函数范围之外的变量。您可以使用global
关键字:
global money
money += 2
这将允许您在函数中更改money
的值
def gainM(money):
money += 2
Stats(money)
return money
但是,推荐的方法是将金钱作为参数传递:
def gainM(money):
money += 2
Stats()
return money
if money == 1:
money = gainM(money)
如果使用第二个选项(应该是),还需要更改Stats
函数,以获得money
参数
def Stats(money):
print
print "money " + str(money)
否则,该函数将打印1
,而不是3
另一个建议是使用字符串格式
'money %d' % money # the old way
'money {}'.format(money) # the new and recommended way
现在将money
传递到Stats
函数中
def gainM(money):
money += 2
Stats(money)
return money
money+2
是不可操作的。实际上,您必须将money
分配给一个新值
money = money + 2
# or
money += 2
但是你会发现你得到了一个错误-你不能分配给函数范围之外的变量。您可以使用global
关键字:
global money
money += 2
这将允许您在函数中更改money
的值
def gainM(money):
money += 2
Stats(money)
return money
但是,推荐的方法是将金钱作为参数传递:
def gainM(money):
money += 2
Stats()
return money
if money == 1:
money = gainM(money)
如果使用第二个选项(应该是),还需要更改Stats
函数,以获得money
参数
def Stats(money):
print
print "money " + str(money)
否则,该函数将打印1
,而不是3
另一个建议是使用字符串格式
'money %d' % money # the old way
'money {}'.format(money) # the new and recommended way
现在将money
传递到Stats
函数中
def gainM(money):
money += 2
Stats(money)
return money
money+2
没有任何作用。在任何情况下,这两个函数都无权访问money
——您应该将它们放入一个类中,或者将money
作为参数传递,并返回更新后的值。money+2
不起任何作用。在任何情况下,这两个函数都不能访问money
-你应该将它们放在一个类中,或者将money
作为参数传递,并返回更新的值。谢谢大家,熵,你可能是对的,我还没有掌握基本知识,但就我的学习方式而言,我喜欢随大流,我想出了一个主意,当我遇到问题时,我学会了如何克服它。这绝对是迄今为止我发现的学习新东西的最好方法。虽然在某种程度上,一旦你掌握了基本知识,阅读更多抽象的东西,比如帮助管理代码复杂性的通用设计模式,肯定会有所帮助。祝你好运,朋友:-)谢谢大家,熵,你可能是对的,我还没有掌握基本的知识,但从我的学习方式来看,我喜欢从容不迫,我想出了一个主意,当我遇到问题时,我学会了如何克服它。这绝对是迄今为止我发现的学习新东西的最好方法。虽然在某种程度上,一旦你掌握了基本知识,阅读更多抽象的东西,比如帮助管理代码复杂性的通用设计模式,肯定会有所帮助。祝你好运,伙计:-)谢谢你的帮助。。我想指出的是,我最初的测试结果是money=money+2,但我有一个错误,所以我修改了它,但没有考虑测试我所做的是否真的做了什么。谢谢你的帮助。。我想指出的是,我最初的测试结果是money=money+2,但我有一个错误,所以我修改了它,但没有考虑测试我所做的是否真的做了什么。谢谢