while循环,比较多个值

时间:2015-03-16 22:33:02

标签: python validation loops while-loop infinite-loop

如果只是将它与一件事进行比较,我可以理解如何完美地使用while循环,例如:

x=int(input("Guess my number 1-10"))
while x!=7: 
    print("Wrong!")
    x=int(input("Try again: "))
print("Correct it is 7. ")

但是,如果我想通过while循环比较两个或更多值(特别是如果我想验证某些东西),我会这样做:

number=input("Would you like to eat 1. cake 2. chocolate 3. sweets: ")
while number!= "1" or number != "2" or number != "3":
    number=input("Please input a choice [1,2,3]")
#Some code...

number等于1,2或3时,程序应继续...但它不会,无论我输入什么值,程序都会陷入无限循环线2-3。我也尝试了while number != "1" or "2" or "3",同样也发生了无限循环。当我尝试用or替换所有and时,while循环只会在number等于比较的第一个值(在这种情况下为"1")时中断。

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

如果条件为number != '1' or number != '2',其中一个条件将始终为真,因此它永远不会脱离循环。请改为while number not in ('1', '2', '3')

答案 1 :(得分:1)

如前所述,您使用or代替and。但in运算符可能是更好的选择:

number=input("Would you like to eat 1. cake 2. chocolate 3. sweets: ")
while number not in ("1", "2","3"):
    number=input("Please input a choice [1,2,3]")