我正在尝试在Python 3中创建一段代码,允许用户在几个选项之间进行选择。我已经尝试了这几种方法,但它们似乎都不是正确的方法。
示例尝试:
usr_input = input("Input: ")
while (usr_input != '1') | (usr_input != '2'):
if usr_input == '1':
search()
elif usr_input == '2':
sys.exit()
问题在于输入错误命令后脚本会挂起。
有人能给我正确的方法吗?
答案 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并处理它来改进代码,因此它不会使程序崩溃。