I can understand how to use the while loop perfectly if just to compare it with one thing, for example:
x=int(input("Guess my number 1-10"))
while x!=7:
print("Wrong!")
x=int(input("Try again: "))
print("Correct it is 7. ")
However, if I want to compare two or more values through while loops (especially if I want to validate something), I would do something like this:
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...
When number
does equal 1, 2 or 3, the program should proceed... but it doesn't, no matter what value I input, the program will be stuck at an infinite loop at line 2-3. I have also tried while number != "1" or "2" or "3"
and the same infinite loops also occurs. When I try replacing all or
with and
, the while loop will only break when number
equals the first value compared (which in this case is "1"
).
Is there any way that I can resolve this?
If you have a condition of number != '1' or number != '2'
, one of those conditions will always be true, so it'll never break out of the loop. Try while number not in ('1', '2', '3')
instead.
As mentioned, you used or
instead of and
. But the in
operator may be a better choice:
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]")
来源:https://stackoverflow.com/questions/29088171/while-loops-comparing-more-than-one-value