-2

私のpythonプログラムでは、ifステートメントで一番上のものだけが機能することがあります

ここに私のプログラムがあります http://ubuntuone.com/0u2NxROueIm9oLW9uQVXra

北東西南に移動してプログラムを実行すると機能しない場合、問題は関数 room4() にあります。

def room4():
    """Forest go south to small town room 1 and east to forest path room8"""
    room = 4
    print "Forest you can go south to small town, east to forest path, or continue to explore the forest"
    cmd = raw_input('> ') 
    cmd = cmd.lower()
    if cmd == "e" or cmd == "east" or "go east":
        print room8()
    if cmd == "s" or cmd == "south" or "go south":
        print room1()
    if cmd == "forest" or cmd == "explore" or cmd == "explore forest" or cmd == "explore the forest":
        print room13()
    else:
        print error()
        print room4()
4

1 に答える 1

5

今後は、質問から関連するコードを含めてください。次のことを指していると思います。

if cmd == "e" or cmd == "east" or "go east":
    print room8()
if cmd == "s" or cmd == "south" or "go south":
    print room1()
if cmd == "forest" or cmd == "explore" or cmd == "explore forest" or cmd == "explore the forest":
    print room13()
else:
    print error()
    print room4()

常に最初のifステートメントを入力する理由は、or "go east"代わりにor cmd == "go east". ブール コンテキスト (ifステートメントなど) の文字列は true として評価されます。

の代わりにif cmd == "e" or cmd == "east" or cmd == "go east"、次を使用できます。

if cmd in {"e", "east", "go east"}:
    ...

設定リテラルが存在しない Python 2.6 以下を{"e", "east", "go east"}使用している場合は、代わりにset(("e", "east", "go east")).

于 2013-01-08T17:41:14.593 に答える