7.2. Logical operators¶
There are three logical operators: and
, or
, and
not
. The semantics (meaning) of these operators is similar to
their meaning in English. For example, x > 0 and x < 10
is true
only if x
is greater than 0 and at the same time, x is less
than 10. How would you describe this in words? You would say that x
is between 0 and 10, not including the endpoints.
n % 2 == 0 or n % 3 == 0
is true if either of the conditions is
true, that is, if the number is divisible by 2 or divisible by 3.
In this case, one, or the other, or both of the parts has to be true
for the result to be true.
Finally, the not
operator negates a boolean expression, so not x
> y
is true if x > y
is false, that is, if x
is less than or
equal to y
.
x: int
n: int
x = 5
print(str(x > 0 and x < 10))
n = 25
print(str(n % 2 == 0 or n % 3 == 0))
(chp05_3)
Common Mistake!
There is a very common mistake that occurs when programmers
try to write boolean expressions. For example, what if we
have a variable number
and we want to check to see if its
value is 5, 6, or 7. In words we might say: “number equal to 5
or 6 or 7”. However, if we translate this into Python,
number == 5 or 6 or 7
, it will not be correct. The or
operator must join the results of three equality checks. The
correct way to write this is number == 5 or number == 6 or
number == 7
. This may seem like a lot of typing but it is
absolutely necessary. You cannot take a shortcut.
Check your understanding
select-2-1: What is a correct Python expression for checking to see if a number stored in a variable x is between 0 and 5?