0

私は Python を学ぼうとしていますが、グローバルな名前が原因で一種のテキスト アドベンチャー ゲームを作成するのに苦労しています。これが私のコードです。

def startcave():
    print "You awake in an dark cave. You can't remember your past, but you need to find a way out. You feel hungry, although tired."
    print "Would you like to delve deeper via a cave passage, or look for a way out in this room?"
    answer = raw_input("Do you go -Deeper-, -Search-, or -Rest-?").lower()
    if answer == "Deeper" or answer == "deeper":
        lowcave1()
    elif answer == "Search" or answer == "search":
        searchcave()
    elif answer == "Rest" or answer == "rest":
        caverest()
    else:
        print "You must either say -Deeper- or -Search-"
        startcave()

startcave()

def lowcave1():
    print "You go deeper into the cave, walking down a steadily reclining corridor for some time, you have lost track of time."
    print "There is a large ledge before you. You can jump down, but there is no way back up."
    print "The cave may be dangerous, and you could end up being trapped. Do you turn back?"
    answer = raw_input("Do you -Jump- or -Turn back-?").lower()
    if answer == "Jump" or answer == "jump":
        lowcave2()
    elif answer == "Turn back":
        caverest2()

lowcave1()

「もっと深く」と答えると、このエラーが発生します。

Traceback (most recent call last):
  File "C:\Users\Student\Desktop\Cavestuff.py", line 15, in <module>
    startcave()
  File "C:\Users\Student\Desktop\Cavestuff.py", line 6, in startcave
    lowcave1()
NameError: global name 'lowcave1' is not defined
4

3 に答える 3

2

global キーワードを使用して、グローバル変数を使用するつもりであることを示します。

foo = 123

def bar():
    global foo
    print(foo)
于 2013-09-17T15:35:23.490 に答える
1

呼び出す前にすべての関数を定義する必要があります

def startcave():
    print "You awake in an dark cave. You can't remember your past, but you need to find a way out. You feel hungry, although tired."
    print "Would you like to delve deeper via a cave passage, or look for a way out in this room?"
    answer = raw_input("Do you go -Deeper-, -Search-, or -Rest-?").lower()
    if answer == "Deeper" or answer == "deeper":
        lowcave1()
    elif answer == "Search" or answer == "search":
        searchcave()
    elif answer == "Rest" or answer == "rest":
        caverest()
    else:
        print "You must either say -Deeper- or -Search-"
        startcave()

def lowcave1():
    print "You go deeper into the cave, walking down a steadily reclining corridor for some time, you have lost track of time."
    print "There is a large ledge before you. You can jump down, but there is no way back up."
    print "The cave may be dangerous, and you could end up being trapped. Do you turn back?"
    answer = raw_input("Do you -Jump- or -Turn back-?").lower()
    if answer == "Jump" or answer == "jump":
        lowcave2()
    elif answer == "Turn back":
        caverest2()

startcave()

lowcave1()
于 2013-09-17T15:42:57.810 に答える
0

わかりました、使用する必要がありますglobal

a = 1
print '1: ', a # Prints 1: 1

def f1():
  a = 2
  print '2: ', a

f1() # Prints 2: 2

print '3: ', a # Prints 3: 1

def f2():
  global a
  a = 3
  print '4: ', a

f2() # Prints 4: 3

print '5: ', a # Prints 5: 3
于 2013-09-17T15:37:06.053 に答える