代码一次又一次地循环

时间:2013-05-28 10:02:43

标签: python if-statement

我有以下代码:

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功能,但接着执行了语句并且代码一遍又一遍地重新启动。

我的问题是为什么还要执行其他语句?不应该在if语句中停止,在块内执行并停止吗?

4 个答案:

答案 0 :(得分:10)

您需要将elif用于第二个和第三个if语句。 else仅考虑紧接其之前的陈述。

答案 1 :(得分:3)

您应该使用elif,否则每次输入3以外的任何内容时,else块都将被执行,door != 3和{{1} block只考虑前面的elseif块。

elif

答案 2 :(得分:3)

或者因为看起来你正在寻找python中不存在的switch语句,你可以这样做:

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

chosen_room = rooms[door]

chosen_room()

答案 3 :(得分:1)

目前,您的代码会测试第一个if条件(门== 1)和相关操作,然后测试第二个和第三个if条件。由于第三个if语句为False(门== 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()