I am currently new to Python and am trying to run a few simple lines of code. I cannot understand how Python is evaluating this syntax after the if statement. Any expla
You probably want:
if number in (1, 2, 3):
Python has boolean values, such as True
and False
, and it also has falsy values, such as any empty list, tuple, or dictionary, an empty string, 0
, and None
. Truthy values are the opposite of that, namely anything that's defined.
Python's or
evaluates and short-circuts on the first element that returns a truthy value.
So, the expression (1 or 2 or 3)
is going to return 1
.
If you want to compare against all elements, then you're looking for the in
keyword:
if number in (1, 2, 3):
# Do logic
The or
operator takes two arguments, on its left and right sides, and performs the following logic:
- Evaluate the stuff on the left-hand side.
- If it is a truthy value (e.g,
bool(x) is True
, so it's not zero, an empty string, orNone
), return it and stop.- Otherwise, evaluate the stuff on the right-hand side and return that.
As such, 1 or 2 or 3
is simply 1
, so your expression turns into:
if number == (1):
If you actually mean number == 1 or number == 2 or number == 3
, or number in (1, 2, 3)
, you'll need to say that.
(Incidentally: The and
operator works the same way, except step 2 returns if the left-hand-side is falsey.)