# 8.3. 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`

.

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.

Well, actually, you can take a shortcut but not that way. Later in this chapter youâ€™ll learn about
the `in`

operator for strings and sequences: you could write `number in [5, 6, 7]`

.

**Check your understanding**

- x > 0 and < 5
- Each comparison must be between exactly two values. In this case the right-hand expression < 5 lacks a value on its left.
- 0 < x < 5
- This is tricky. Although most other programming languages do not allow this syntax, in Python, this syntax is allowed. However, you should not use it. Instead, make multiple comparisons by using and or or.
- x > 0 or x < 5
- Although this is legal Python syntax, the expression is incorrect. It will evaluate to true for all numbers that are either greater than 0 or less than 5. Because all numbers are either greater than 0 or less than 5, this expression will always be True.
- x > 0 and x < 5
- Yes, with an ``and`` keyword both expressions must be true so the number must be greater than 0 an less than 5 for this expression to be true.

What is the correct Python expression for checking to see if a number stored in a variable x is between 0 and 5.