从代码中它是非常自我解释但我想检查输入是否不等于这些值而不是再次询问。我认为这会起作用,但它不会和它的毛病,这是一个更好的方法吗?
type=input("Please choose an option: ")
while type.isalpha() == False:
type=input("Please choose an option: ")
while type != ("a" and "A" and "b" and "B" and "c" or "C"):
type=input("Please choose an option: ")
答案 0 :(得分:4)
只需while not type in ("a","A","b","B" ...)
检查type
是否是列出的元素之一。
正如评论中所述,上面的代码等同于while type != someListElement
,因为首先评估and
和or
。
答案 1 :(得分:1)
你需要写:
while (type != "a" and type !="A" and type !="b" and type !="B" and type !="c" or type !="C"):
答案 2 :(得分:1)
我认为最简单的解决方案是使用
type = raw_input("Please choose an option: ")
while type not in list('AaBbCc'):
type = raw_input("Please choose an option: ")
list
会将字符串转换为单字符字符串列表,然后您可以使用in
测试其是否包含在内。我认为您不需要isalpha
的测试,因为您要检查的所有内容都已经是一封信。
此外,您应始终使用raw_input
而非input
来获取用户输入,因为raw_input
始终返回字符串,而input
会尝试eval
用户输入的内容,这不是您想要的内容。
(假设你使用的是Python 2.如果你使用的是Python 3,那么input
就是raw_input
之前的版本,raw_input
不再存在。)