Conditions Related Tips
Learn how conditions work in Python in different ways.
Compare one to many
We have a variable and we want to check if its value is permissible. Let’s say that the user enters the name of a day and we want to check if it’s Saturday or Sunday. It seems obvious in Python, but it’s not:
if day.lower() == 'saturday' or 'sunday': # It’s weekend!
The boolean or
operator has lower precedence than the comparison operator (==
), which means that the comparison is evaluated before the boolean operator. So if we place parentheses around the higher-precedence operator to avoid confusion, the above statement looks like this:
if (day.lower() == 'saturday') or 'sunday': ...
The value of an or
expression is true if any of its operands are true. The non-empty 'sunday'
string is always interpreted as true. Thus, the condition is always true, regardless of the day. It’s good to have a never-ending weekend.
Perhaps, then, we should adjust the precedence by enclosing the or
expression in the parentheses?
if day.lower() == ('saturday' or 'sunday'): ...
No, again. The value of the or
operator is first True
operand, or False
if both operands are false. Because 'saturday'
is a non-empty string, it’s interpreted as true. The expression in the parentheses is always 'saturday'
and never 'sunday'
. The expression treats Sunday as a weekday. We’d rather have a never-ending weekend than a one-day weekend.
The correct way to go is to check if the day is in a collection of suitable days using the membership operator, in
. The collection can be a list, a tuple, or even a dictionary, but we get optimal performance by using sets.
Get hands-on with 1400+ tech skills courses.