用户输入没有正确响应If / Else语句

时间:2016-08-10 21:16:06

标签: python

我正在努力学习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!

“我不认识那个选择的打印声明,请再试一次!”如果输入指定的号码,则不应显示。我尝试在我的输入中添加整数,并且我的门选择变量不是字符串而且仍然没有运气。

5 个答案:

答案 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!"

此外,在您说“我不认识那个选项后,再试一次!”时,您没有给用户输入。