1

したがって、私はまったくの初心者であり、Zed Shaw の Learn Python The Hard Way に取り組んでいます。なんらかの理由で、今日プログラムを実行していると、ランダムに異なる出力が得られます。以下は、私のコードの一部と、一貫性のない入出力の一部です。私はこれを連続して何度も試しましたが、コードが適切に機能して次の関数を呼び出すこともあれば、その大部分をスキップすることもあります。

これが一貫して実行されていない私のコードです...

def bear_room():    
    print "There is a bear in here."
    print " The bear has a bunch of honey."
    print " The fat bear is in front of another door."
    print " How are you going to move the bear?"
    bear_moved = False 

    while True:
        next = raw_input(">")

        if next == "take honey":                        
            dead("The bear looks at you and slaps your face off.")
        elif next == "taunt bear" and not bear_moved:
            print "The bear has moved from the door. You can go through it now."
            bear_moved = True
        elif next == "taunt bear" and bear_moved:
            dead("The bear gets pissed off and chews your leg off.")
        elif next == "open door" and bear_moved:
            gold_room()
        else: 
            print " I have no idea what that means."

これは一貫性のない出力の一部です... ここでは、プログラムを実行し、プロンプトで入力「左」を使用します。

Theresa-Beckers-MacBook-Pro:Summer 2013 Python leafgirl12$ python ex35.py   
You are in a dark room.  
There is a door to your right and left  
Which one do you take?  
>left  
You stumble around the room until you starve. Good job!

ここでは、直後に同じことを行いますが、今回は実行されますが、出力は異なります。

 Theresa-Beckers-MacBook-Pro:Summer 2013 Python leafgirl12$ python ex35.py   
 You are in a dark room.  
 There is a door to your right and left  
 Which one do you take?  
 >left  
 There is a bear in here.  
 The bear has a bunch of honey.  
 The fat bear is in front of another door.  
 How are you going to move the bear?  

C++ で新しい変数を作成するときに、スタックとヒープの問題になる可能性があることは知っていますが、同じコンピューター上で Python 関数の答えが見つかりません。また、表示されていないインデント エラーがある場合に備えて、コードを再入力しました。続行して「ハニーを取る」と入力すると、正しい出力が得られることが数回ありましたが、これは半分の時間しか機能せず、「taunt bear」はまだまったく機能していません。それは他のものにまっすぐに通り抜けます。何かご意見は?これは理にかなっていますか?

4

2 に答える 2

1

この演習のコードを見ると、試行の 1 つで「左」のスペルを間違えたに違いありません。これは、不必要な大文字化や先頭または末尾の偶発的なスペースなど、小さなものである可能性があることに注意してください。

問題のコードは次のとおりです。

def start():
    print "You are in a dark room."
    print "There is a door to your right and left."
    print "Which one do you take?"

    next = raw_input("> ")

    if next == "left":
        bear_room()
    elif next == "right":
        cthulhu_room()
    else:
        dead("You stumble around the room until you starve.")

「左」をきっちり入力してエンターを押せば必ずくまの部屋に入るはずです。

于 2013-05-29T19:22:34.093 に答える