7.2 Logical Operators¶
- There are three logical operators: 
and,or, andnot 
and¶
- For example, 
x > 0 and x < 10is true only ifxis greater than 0 and at the same time, x is less than 10 
or¶
n % 2 == 0 or n % 3 == 0is true if either of the conditions is true
not¶
- Finally, the 
notoperator negates a boolean expression, sonot x > yis true ifx > yis false 
Truth Tables¶
- To show how logical operators work
 
| a | b | a and b | a or b | not a | not b | 
|---|---|---|---|---|---|
| T | T | T | T | F | F | 
| T | F | F | T | F | T | 
| F | T | F | T | T | F | 
| F | F | F | F | T | T | 
Python Quick Note:¶
- CORRECT:
number == 5 or number == 6 or number == 7
 - NOT CORRECT:
number == 5 or 6 or 7
 
7.2.1 Logical Opposites¶
| Operator | Definition | Logical Opposites | 
|---|---|---|
| == | Equals to | != | 
| != | Not Equals to | == | 
| < | Less than | >= | 
| <= | Less Than or Equal to | > | 
| > | Greater Than | <= | 
| >= | Greater Than or Equal to | < | 
- Understanding these logical opposites allows us to sometimes get rid of notoperators | 
||
- notoperators are often quite difficult to read in computer code | 
||
| - Our intentions will usually be clearer if we can eliminate them. | 
Harder to understand:
if not (age >= 17):
   print("Hey, you're too young to get a driving licence!")
Easier to understand
if age < 17:
   print("Hey, you're too young to get a driving licence!")
De Morgan’s Laws¶
- Two powerful simplification laws
 
not (x and y)  ==  (not x) or (not y)
not (x or y)   ==  (not x) and (not y)
Examples¶
Harder to Understand
if not ((phone_charge >= 0.50) and (phone_storage >= .15)):
   print("You cannot restart your phone. Battery too low or not enough free space.")
else:
   print("Updating now...Several restarts may be required.")
Easier to Understand
if (phone_charge < 0.50) or (phone_storage < .15):
   print("You cannot restart your phone. Battery too low or not enough free space.")
else:
   print("Updating now...Several restarts may be required.")
Easiest Understanding/Implementation
if (phone_charge >= 0.50) and (phone_storage >= .15):
   print("Updating now...Several restarts may be required.")
else:
   print("You cannot restart your phone. Battery too low or not enough free space.")