OR statement handling two != clauses Python

72,717

Solution 1

You need and:

while input != 10 and input != 20:

Think it through: If the input is 10, then the first expression is false, causing Python to evaluate the second expression input != 20. 10 is different form 20, so this expressions evaluates to true. As false or true == true, the whole expression is true.
Same for 20.

Solution 2

....or a different way to express it that may seem more natural to you:

while input not in (10, 20):
    # your code here...
Share:
72,717
thebill
Author by

thebill

Updated on April 16, 2020

Comments

  • thebill
    thebill about 4 years

    (Using Python 2.7) I understand this is pretty elementary but why wouldn't the following statement work as written:

    input = int(raw_input())
    while input != 10 or input != 20:
        print 'Incorrect value, try again'
        bet = int(raw_input())
    

    Basically I only want to accept 10 or 20 as an answer. Now, regardless of 'input', even 10, or 20, I get 'Incorrect value'. Are these clauses self conflicting? I thought that the OR statement would say OK as long as one of the clauses was correct. Thanks!

  • thebill
    thebill about 13 years
    Thanks for the full logic stepping. It appears as though I had a bit(heh) of logic dyslexia.
  • thebill
    thebill about 13 years
    You're right, I actually like this much better than the latter. Thanks too!