所以我无法让这个系统工作,我无法确定我是在问正确的问题,但这里发生了什么,我想要发生什么。
money = 1
def Stats():
print
print "money " + str(money)
def gainM():
money + 2
Stats()
if money == 1:
gainM()
现在当打印钱时会发生什么,即使我在值上加2,该值仍为1。 (代码不是我实际程序的副本,而是一个显示正在发生的事情的示例。)
答案 0 :(得分:5)
money + 2
是无操作。实际上,您必须将money
分配给新值
money = money + 2
# or
money += 2
但是你会发现你得到一个错误 - 你不能分配给函数范围之外的变量。您可以使用global
关键字:
global money
money += 2
这将允许您更改函数中的money
值。
但是,推荐的方法是将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
答案 1 :(得分:2)
您需要将新值分配给金钱。像这样:
money = money + 2
或简写形式:
money += 2
此外,如果变量在函数之外,则需要将其声明为全局变量(因此它不会创建局部变量)
所以你最终得到:
def gainM():
global money
money += 2
Stats()
编辑:只是为了澄清,我不是说你应该使用全局变量。一般来说,它们是一个坏主意(虽然它们在某些情况下可能有用)。但是,这就是这个特定的例子需要工作的东西。但是,您可能需要的是一个具有该类方法修改的实例变量的类。但是,鉴于你似乎还没有掌握语言的基础知识,一次只做一步,不要担心我以前的句子中你不理解的任何单词:)