Python 3:为用户选择创建函数

时间:2012-02-25 12:47:19

标签: python if-statement python-3.x while-loop

我正在尝试在Python 3中创建一段代码,允许用户在几个选项之间进行选择。我已经尝试了这几种方法,但它们似乎都不是正确的方法。

示例尝试:

usr_input = input("Input: ")
while (usr_input != '1') | (usr_input != '2'):
    if usr_input == '1':
        search()
    elif usr_input == '2':
        sys.exit()

问题在于输入错误命令后脚本会挂起。

有人能给我正确的方法吗?

3 个答案:

答案 0 :(得分:3)

这里有一些问题。

首先,你只能在循环外获得usr_input一次。如果它不是一个正确的选择,你不会给用户更改以纠正他们的选择:你只需循环。您需要在循环中执行input

其次,您的布尔条件错误。它相当于说“x不是OR而不是b”,总是为真,因为即使它是a,它仍然不是b。更好的说法是not in ['1', '2']

将这些放在一起:

usr_input = ''
while usr_input not in ['1', '2']:
    usr_input = input("Input: ")
    ... etc... 

答案 1 :(得分:1)

当用户没有正确输入内容时,您希望使用while循环来继续询问输入。在循环中,usr_input永远不会改变,所以它只是保持循环。

你还有另外一个问题:只有当usr_input不是1而且不是2时才应该保持循环。不是2而不是2总是为真(如果它是2,它不是1,如果它是1则是不是2)。

usr_input = input("Input: ")
while (usr_input != '1') and (usr_input != '2'):
    usr_input = input("Input: ")

if usr_input == '1':
    search()
elif usr_input == '2':
    sys.exit()

答案 2 :(得分:-1)

input()执行等效于eval(raw_input())的操作,因此如果您的用户输入语法不正确的内容,则会抛出SyntaxError异常。请参阅文档:http://docs.python.org/library/functions.html#input

您可以通过捕获SyntaxError并处理它来改进代码,因此它不会使程序崩溃。