我正在努力学习Python艰难的方式,我正在创建一个游戏。由于某种原因,我的if / else语句没有正常工作。以下是我当前脚本中的相关部分:
if door_choice == '1':
room_one()
else:
print "I don't recognize that choice, try again!"
if door_choice == '2':
room_two()
else:
print "I don't recognize that choice, try again!"
if door_choice == '3':
room_three()
else:
print "I don't recognize that choice, try again!"
无论我用什么数字输入我的输入,我仍然会收到其他答案'else语句,例如:
You see 3 doors.
You must choose either 1, 2 or 3.
> 2
I don't recognize that choice, try again!
The second room is dark and smelly but you see a gold chest!
Do you open the chest or just give up?
I don't recognize that choice, try again!
“我不认识那个选择的打印声明,请再试一次!”如果输入指定的号码,则不应显示。我尝试在我的输入中添加整数,并且我的门选择变量不是字符串而且仍然没有运气。
答案 0 :(得分:1)
您应该将这些单独的if-else
块链接到一个if-elif-else
块:
if door_choice == '1':
room_one()
elif door_choice == '2':
room_two()
elif door_choice == '3':
room_three()
else:
print "I don't recognize that choice, try again!"
答案 1 :(得分:1)
问题出在你的if语句中。您的程序遇到if door_choice == '1'
这是假的,所以它会跳转到下一个else语句并打印"I don't recognize that choice, try again!"
相反,如果第一个不是真的,那么检查第二个,如果不是真的检查第三个,如果不是真的话,无效的选择。
if door_choice == '1':
room_one()
elif door_choice == '2':
room_two()
elif door_choice == '3':
room_three()
else:
print "I don't recognize that choice, try again!"
答案 2 :(得分:1)
除了显而易见的“每次传递in else”效果之外,如果你有很多情况,你可以使用表和函数指针来保存if / elif结构。
room_funcs = [room_one,room_two,room_three]
idx = int(door_choice)-1
if 0 <= idx < len(room_funcs):
room_funcs[idx]()
else:
print("I don't recognize that choice, try again!")
答案 3 :(得分:0)
If door_choice == '1'
Room_one()
elif door_choice == '2'
Room_two()
elif door_choice == '3'
Room_three()
else
Print "please input a value between 1 and 3
你有一些不好的逻辑。 如果您输入1,则会出现正确的错误,但是您再次检查输入2并获得所需结果,然后再次检查输入3但是再次出现错误。
在python中使用else if或elif是获取结果的方法之一。 如果您需要做更多案例,还有开关
答案 4 :(得分:0)
编辑:至于最大值,有一个if
语句,由任意数量的elif
语句链接。但是,每else
只能有1 if
个语句。
TutorialsPoint有一个很好的页面,关于if / elif / else:http://www.tutorialspoint.com/python/python_if_else.htm
“else语句是一个可选语句,在if之后最多只能有一个else语句。”
我认为你的缩进是对的。在if
语句之后另外将所有else语句缩进4个空格,并将它们更改为if
。还要删掉最后一个else
声明。
我会告诉你我的意思。
if door_choice == '1':
room_one()
if door_choice != 1 or 2 or 3:
print "I don't recognize that choice, try again!"
if door_choice == '2':
room_two()
if door_choice != 1 or 2 or 3:
print "I don't recognize that choice, try again!"
if door_choice == '3':
room_three()
if door_choice != 1 or 2 or 3:
print "I don't recognize that choice, try again!"
此外,在您说“我不认识那个选项后,再试一次!”时,您没有给用户输入。