1

所以我无法让这个系统正常工作,我不能确定我问的是正确的问题,但这是正在发生的事情以及我想要发生的事情。

money = 1
def Stats():
     print
     print "money " + str(money)

def gainM():
     money + 2
     Stats()

if money == 1:
     gainM()

现在当它去印钱时会发生什么,即使我在值上加了 2,值仍然是 1。(代码不是我实际程序的副本,而是显示正在发生的事情的示例。)

4

2 回答 2

6

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
于 2013-02-23T01:24:52.420 回答
2

您需要将新价值分配给金钱。像这样:

money = money + 2

或简写形式:

money += 2

此外,如果变量在您的函数之外,则需要将其声明为全局变量(因此它不会创建局部变量)

所以你最终得到:

def gainM():
    global money
    money += 2
    Stats()

编辑:只是为了澄清,我并不是说你应该使用全局变量。一般来说,它们是一个坏主意(尽管它们在某些情况下可能有用)。但是,这就是这个特定示例需要工作的内容。但是,您可能想要的是一个具有实例变量的类,该类的方法会修改该类。但是,鉴于您似乎还没有掌握该语言的基础知识,请一步一步来,不要担心我之前的句子中的任何您现在不理解的单词:)

于 2013-02-23T01:23:37.923 回答