我正试图将一些旧的批处理游戏代码翻译成Python,我所坚持的是将全局数字添加到5,然后在函数中进行递归。
原批号:
:MomsRoom
title Mommy's Roomy
set /a money=%money%+5
cls
echo You steal some money from your mom's purse.
echo Cash Money: $%money%
pause>nul
goto HOME
我试图把它翻译成Python:
def LabelMomsRoom():
os.system('title Mommys Roomy' if os.name == 'nt' else 'pass')
money = money+5
cls()
print ("You steal some money from your mom's purse.")
print ("Cash Money:$",(money))
pause()
LabelHOME()
我期望的结果是每次访问函数时,一个数字增加5。我的实际结果是5加到原来的数上,然后保持5不变。我已经被这个问题困了好几天了,需要一些帮助。
提前感谢。
默认情况下,LabelMomsRoom()
函数中的money
变量是本地的——它只存在于该函数的作用域中。如果您在函数外部声明了一个外部变量,并且希望引用它,则需要使用全局keyword
。考虑这个例子:
money = 0
def foo():
global money
money = money + 5
bar()
def bar():
global money
money = money + 5
foo()
print(money)
这里,函数中money
变量的global
关键字意味着该变量应该从函数作用域之外引用一个变量。您可以看到,在本例中,结果将是10。请注意,通常不鼓励使用全局变量,而应该将值作为函数参数传入。但如果你想尽量接近原始代码,也许这是一个选择。