我有以下代码:
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语句中停止,在块内执行并停止吗?
答案 0 :(得分:10)
您需要将elif
用于第二个和第三个if语句。 else
仅考虑紧接其之前的陈述。
答案 1 :(得分:3)
您应该使用elif
,否则每次输入3
以外的任何内容时,else
块都将被执行,door != 3
和{{1} block只考虑前面的else
或if
块。
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()