3

次のコードがあります。

def begin_game():
    print "You landed on planet and see three rooms."
    door = int(raw_input("Pick number of door>>>"))
    print "You approach and see that you need to enter password..."
    password = raw_input("Enter your surname>>>")
    if door == 1:
        medical_room()
    if door == 2:
        library()
    if door == 3:
        basement()
    else:
        print "No room exists"
        begin_game()

begin_game()

door数値を入力するとmedical_room関数が実行されますが、else ステートメントが実行され、コードが何度も繰り返されます。

私の質問は、else ステートメントが実行される理由です。if文で止めて、ブロック内で実行して止めるべきじゃないの?

4

4 に答える 4

10

elif2 番目と 3 番目の if ステートメントに使用する必要があります。elseその直前のステートメントのみを考慮します。

于 2013-05-28T10:06:38.153 に答える
3

を使用する必要があります。そうしないとelif、 以外のものを入力するたび3elseブロックが実行され、door != 3ブロックelseは前のifまたはelifブロックのみを考慮します。

def begin_game():
    print "You landed on planet and see three rooms."
    door=int(raw_input("Pick number of door>>>"))
    print "You approach and see that you need to enter password..."
    password=raw_input("Enter your surname>>>")
    if door==1:
        medical_room()
    elif door==2:
        library()
    elif door==3:
        basement()
    else:
        print "No room exists"
        begin_game()

begin_game()
于 2013-05-28T10:07:04.670 に答える
1

現在、コードは最初の if 条件 (door==1) と関連アクションをテストし、次に 2 番目と 3 番目の if 条件をテストします。3 番目の if ステートメントは False (door==1) であるため、else ステートメントを実行します。

if ステートメントを繰り返すのではなく、elif ステートメントを使用する必要があります。

def begin_game():
    print "You landed on planet and see three rooms."
    door=int(raw_input("Pick number of door>>>"))
    print "You approach and see that you need to enter password..."
    password=raw_input("Enter your surname>>>")
    if door==1:
        medical_room()
    elif door==2:
        library()
    elif door==3:
        basement()
    else:
        print "No room exists"
        begin_game()
于 2013-05-28T10:07:03.920 に答える