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

您需要使用elif第二个和第三个 if 语句。else只考虑紧接在它之前的语句。

于 2013-05-28T10:06:38.153 回答
3

您应该使用elif, 否则每次输入除 之外的任何内容时3else都会执行该块,因为door != 3else块仅考虑前面的ifelif块。

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 回答
3

或者,由于您似乎正在寻找 python 中不存在的 switch 语句,您可以执行以下操作:

rooms = {
    1: medical_room,
    2: library,
    3: basement,
}

chosen_room = rooms[door]

chosen_room()
于 2013-05-28T10:12:01.570 回答
1

目前,您的代码测试第一个 if 条件 (door==1) 和相关操作,然后测试第二个和第三个 if 条件。由于第三个 if 语句为 False (door==1),它将执行 else 语句。

您应该使用 elif 语句而不是重复的 if 语句。

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 回答