简单的if / elif语句+ raw_input为什么不起作用

时间:2016-09-21 17:23:03

标签: python python-2.7

我遇到简单的if语句问题。我希望用户按一个键'1','2'或'3'来选择任何选项,然后程序将执行某些操作。对于测试,它只是在按下'2'后打印文本,例如“Wybrano 2”。

这是我的代码:

if raw_input() == '1':
        print "Wybrano 1"

elif raw_input() == '2':
        print "Wybrano 2"

elif raw_input() == '3':
        print "Wybrano 3"

因此,如果按1则正确打印“Wybrano 1”但是当我按下2或3时,程序什么都不做。

1 个答案:

答案 0 :(得分:3)

当我按2或3时,程序没有任何错误。它等着你下一次输入。

让我告诉你这是如何运作的。

  • raw_input是用于接受用户输入的python函数。(我知道你知道这个:))
  • 执行代码时,首先会转到" if"声明。 'if'语句后面有'raw_input'个函数。所以,它等待你的输入。
  • 当您输入' 1',"1" = "1"时,它会为您提供预期的输出并退出代码。
  • 但是,下次再次执行代码时,'raw_input'执行'if'后再次等待输入。当您输入' 2'由于'1' == '2'为false,因此代码转到下一个'elif'语句。在'elif'之后,有'raw_input'函数正在等待输入。
  • 因此,你觉得,程序什么都不做。
  • 当您输入' 3'。
  • 时也会如此

上述行为的示例

if raw_input("Enter number : ") == '1':

    print "Wybrano 1"
elif raw_input("Enter number : ") == '2':

    print "Wybrano 2"
elif raw_input("Enter number : ") == '3':

    print "Wybrano 3"

<强>输出:

C:\Users\dinesh_pundkar\Desktop>python c.py
Enter number : 1
Wybrano 1

C:\Users\dinesh_pundkar\Desktop>python c.py
Enter number : 2
Enter number : 2
Wybrano 2

C:\Users\dinesh_pundkar\Desktop>python c.py
Enter number : 3
Enter number : 3
Enter number : 3
Wybrano 3

如何使代码正常工作?

答案很简单。正如第一条评论中的 @MooingRawr 所解释的那样,只需将用户输入保存在某个变量中,然后进行检查。

x = raw_input("Enter number : ")
if  x == '1':
    print "Wybrano 1"
elif x == '2':
    print "Wybrano 2"
elif x == '3':
    print "Wybrano 3"

<强>输出:

C:\Users\dinesh_pundkar\Desktop>python c.py
Enter number : 1
Wybrano 1

C:\Users\dinesh_pundkar\Desktop>python c.py
Enter number : 2
Wybrano 2

C:\Users\dinesh_pundkar\Desktop>python c.py
Enter number : 3
Wybrano 3

C:\Users\dinesh_pundkar\Desktop>