文本游戏-道德跟踪器/全局变量-Python

文本游戏-道德跟踪器/全局变量-Python,python,global,Python,Global,我的代码上载到githib的以下位置: 所以,我想做的是使用一个全局变量来跟踪“道德” 现在,这不是真正的道德选择,但我想用它来追踪球员的选择 我基本上有这样的设置: morality = 0 def pick(): while True: choice = input("") if choice == "Hesitate": hesitate() #hesitate() is defined already, i just d

我的代码上载到githib的以下位置:

所以,我想做的是使用一个全局变量来跟踪“道德”

现在,这不是真正的道德选择,但我想用它来追踪球员的选择

我基本上有这样的设置:

morality = 0

def pick():
    while True:
        choice = input("")
        if choice == "Hesitate":
            hesitate() #hesitate() is defined already, i just didn't include it to save space.
            morality = 1
            break
        elif choice == "Walk":
            walk() #again, walk() is previously defined.
            morality = 2
            break
        else:
            print("Invalid Input")
#+#+#+#+#+#+#+#+#+#+#+#+#+#
#Clean Up
#+#+#+#+#+#+#+#+#+#+#+#+#+#

pick()
print(morality) #This is to see if the morality worked.
遗憾的是,它不起作用。我怎样才能正确地设置它

(我的设置是这样的:第一个选项将设置第一个数字,1或2,然后第二个选项将第一个小数点设置为#.1或#.2,然后第三个选项将设置为#.1或#2等)

我所说的“它不起作用”是指

应该是什么时候

>>>What's your choice?
walk
>>>
>>>You Walk
>>>2

在函数中对变量名执行赋值时,除非使用,否则将创建局部变量。尝试将以下行添加到
pick
函数的顶部:

global morality
或者更好的方法是,让
pick
函数返回道德值,然后在调用时使用
morality=pick()

有关
global
语句的更详细解释,请参阅以下博文:

在函数中对变量名执行赋值时,除非使用,否则它将创建一个局部变量。尝试将以下行添加到
pick
函数的顶部:

global morality
或者更好的方法是,让
pick
函数返回道德值,然后在调用时使用
morality=pick()

有关
global
语句的更详细解释,请参阅以下博文:

为了简化您的问题,请查看以下代码:

morality = 0
def foo():
    morality = 99
    print "in foo:", morality

print "morality before foo:", morality
foo()
print "morality after foo:", morality
它产生输出:

morality before foo: 0
in foo: 99
morality after foo: 0
现在,请使用此版本的
foo()


我认为同样的问题也适用于您的代码。

为了简化您的问题,请查看以下代码:

morality = 0
def foo():
    morality = 99
    print "in foo:", morality

print "morality before foo:", morality
foo()
print "morality after foo:", morality
它产生输出:

morality before foo: 0
in foo: 99
morality after foo: 0
现在,请使用此版本的
foo()


我认为同样的问题也适用于您的代码。

您所说的“不工作”是什么意思?@traceur它不会打印1或2它会打印0。您所说的“不工作”是什么意思?@traceur它不会打印1或2它会打印0。实际上我已经尝试过了。遗憾的是,它只是返回相同的问题。@GameWylder您能用您尝试此操作的代码编辑您的问题吗?也许我能发现一些东西。顶部的链接将您带到github上的我的代码副本。@GameWylder您是否在
addmoral
中有输入错误:您将
choicepath
设置为1,而不是
choicepath
。我实际上已经尝试过了。遗憾的是,它只是返回相同的问题。@GameWylder您能用您尝试此操作的代码编辑您的问题吗?也许我能发现一些东西。顶部的链接将您带到github上的我的代码副本。@GameWylder您是否在
addmoral
中有输入错误:您将
choicepath
设置为1,而不是
choicepath