Python 可变值

Python 可变值,python,Python,我有一个关于python教程的迷你文本游戏,我正在使用fourthdoor/vault函数询问玩家代码,如果输入正确,它会更改一个变量的值,用作打开第三扇门的键。问题是,即使在正确给出vault代码时更改了变量的值,我仍然无法打开门 有人能帮我吗?当python在vault内部遇到haskey=int(1)时,它会创建一个名为haskey的新局部变量,您只能在vault内部看到它。您需要告诉python,当它在该函数中看到haskey时,您指的是您在文件顶部声明的全局haskey。您可以通过将g

我有一个关于python教程的迷你文本游戏,我正在使用fourthdoor/vault函数询问玩家代码,如果输入正确,它会更改一个变量的值,用作打开第三扇门的键。问题是,即使在正确给出vault代码时更改了变量的值,我仍然无法打开门


有人能帮我吗?

当python在
vault
内部遇到
haskey=int(1)
时,它会创建一个名为
haskey
的新局部变量,您只能在
vault
内部看到它。您需要告诉python,当它在该函数中看到
haskey
时,您指的是您在文件顶部声明的全局
haskey
。您可以通过将
global haskey
添加到
vault
的开头来完成此操作。即:

from sys import exit
haskey = 0

# start function
def start():
print "You wake up in an empty room, feels like you've been here for days. You can't         remember anything from your past. All there is in the room is a digital clock. It says 3:26am, May 5, 2012. Get out of the room?"

next = raw_input("> ").lower()
if "yes" in next:
    lobby()
elif "no" in next:
    print "We insist"
else:
    print "Try again."

def lobby():
while True:
    print "You arrived at a lobby, all you can see are four doors. Which door   to enter? (first, second, third, fourth)?"

    next = raw_input("> ").lower()
    if "first" in next:
        firstdoor()
    elif "second" in next:
        seconddoor()
    elif "third" in next:
        thirddoor()
    elif "fourth" in next:
        fourthdoor()
    else:
        print "Are you dumb and you can't even follow instructions?"

def firstdoor():
print "You arrive at another empty room, examine further or exit?"
choice = raw_input("> ").lower()
if "examine" in choice:
    print "A trap door opened, you fell in it and died."
    exit()
elif "exit" in choice:
    lobby()
else:
    print "Are you dumb and you can't even follow instructions?"

def seconddoor():
print "You arrive at the study room, examine room or exit?"
choice = raw_input("> ").lower()
if "examine" in choice:
    print "There is a note on the table, read it?"
    secondchoice = raw_input("> ").lower()
    if "yes" in secondchoice:
        note()
    elif "no" in secondchoice:
        print "Returning to lobby."
        lobby()

def note():
print """Security Log (040412): A man from the city travelling along the highway loses control of his vehicle and fell to the cliff. He was able to jump and grab a hold to the bushes growing at the side of the cliff. We were able to rescue him, but as soon as we secured him to the ground he violently reacted to our help and fainted. A few minutes later he was out of control, like he was possessed by a demon. We had no choice but to sedate him and keep him locked in our prison until authorities from the city arrive and examine him. The key to his cell is in the vault in the vault room. The keycode changes depending on the current date.
"""
print "Returning to lobby."
lobby()

def thirddoor():
if haskey == 0:
    print "Door is locked, you need a key to continue."
    print "%d" % haskey
    lobby()
elif haskey == 1:
    exit()

def exit():
print "You are now free!"
print "To be continued.."

def fourthdoor():
print "There is a vault inside the room. Use vault?"
usevault = raw_input("> ")
if "yes" in usevault:
    vault()
else:
    print "Returning to lobby.."
    lobby()

def vault():
while True:
    print "There is a security code for this door. Enter code:"
    code = raw_input("> ")
    if "05042012" in code:
        print "Correct!"
        print "Returning to lobby.."
        haskey = int(1)
        print "%d" % haskey
        lobby()
    else:
        print "Code Error! Try again?"

start()

嗨,欢迎来到Stack Overflow!请尽量使你的问题简明扼要。大多数人不想读太多的代码,所以如果你能找出问题所在,只发布解释问题所需的代码,你很可能会得到回应。“哎哟!”堆栈说。而且,没有人想读那么多代码。保持线路短。@Wooble+1。将所有行限制为最多79个字符。PEP8:而且永远没有理由调用
int(1)
。只需使用
1
代码还有很多其他问题,我决定缩小我的文章范围。:)
def vault():
    global haskey
    while True:
        print "There is a security code for this door. Enter code:"
        code = raw_input("> ")
        ...