Python - 和,OR验证

时间:2013-10-03 23:49:32

标签: python

从代码中它是非常自我解释但我想检查输入是否不等于这些值而不是再次询问。我认为这会起作用,但它不会和它的毛病,这是一个更好的方法吗?

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: ")

3 个答案:

答案 0 :(得分:4)

只需while not type in ("a","A","b","B" ...)检查type是否是列出的元素之一。

正如评论中所述,上面的代码等同于while type != someListElement,因为首先评估andor

答案 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不再存在。)