Conditionals
Python allows us to compare values using comparison operators, enabling us to make decisions based on these comparisons. This is fundamental for controlling the flow of a program.
Boolean Data Type
The result of a comparison is a Boolean value: either True
or False
. Booleans represent one of two possible states.
Comparison Operators
Python provides several comparison operators:
Operator | Name | Description |
---|---|---|
== | Equal to | Checks if two values are equal |
!= | Not equal to | Checks if two values are not equal |
> | Greater than | Checks if the left value is greater than the right value |
< | Less than | Checks if the left value is less than the right value |
>= | Greater than or equal to | Checks if the left value is greater than or equal to the right value |
<= | Less than or equal to | Checks if the left value is less than or equal to the right value |
Examples with Numbers
print(10 > 1) # True
print(3 == 5) # False
print(7 != 2) # True
print(5 >= 5) # True
print(4 < 8) # True
print(9 <= 3) # False
Note: Comparison operators return Boolean values (True
or False
).
Equality vs. Assignment
Be careful not to confuse the equality operator ==
with the assignment operator =
.
a = 5 # Assignment: sets the value of a to 5
print(a == 5) # Equality check: True
Comparing Different Data Types
Comparing incompatible data types (e.g., an integer and a string) can result in a TypeError
.
print(1 < "1") # TypeError: '<' not supported between instances of 'int' and 'str'
However, equality ==
and inequality !=
comparisons between different data types are valid but usually return False
.
print(1 == "1") # False
print(1 != "1") # True
Comparing Strings
Comparison operators can also be used with strings, comparing their lexicographical order based on Unicode values.
Character | Unicode Value |
---|---|
'A' | 65 |
'B' | 66 |
... | ... |
'a' | 97 |
'b' | 98 |
... | ... |
Examples with Strings
print("apple" == "apple") # True
print("apple" != "banana") # True
print("cat" > "bat") # True
print("Dog" < "dog") # True
print("Zebra" < "apple") # True
Note: Uppercase letters have lower Unicode values than lowercase letters.
Logical Operators
Logical operators allow us to build complex boolean expressions by combining simpler ones.
Operators
and
: True if both operands are True.or
: True if at least one operand is True.not
: Inverts the Boolean value.
and
Operator
print((5 > 1) and (5 < 10)) # True and True => True
print((5 > 10) and (5 < 10)) # False and True => False
or
Operator
print((5 > 10) or (5 < 10)) # False or True => True
print((5 > 10) or (5 == 10)) # False or False => False
not
Operator
print(not (5 > 1)) # not True => False
print(not (5 > 10)) # not False => True
Control Flow with Conditional Statements
Conditional statements allow us to control the flow of execution based on certain conditions.
if
Statements
An if
statement executes a block of code if its condition evaluates to True
.
if condition:
# Code to execute if condition is True
Example
username = "jsmith"
if len(username) < 3:
print("Invalid username: Must be at least 3 characters long.")
else
Statements
An else
statement can follow an if
statement and executes if the if
condition is False
.
if condition:
# Code if condition is True
else:
# Code if condition is False
Example
if len(username) < 3:
print("Invalid username: Must be at least 3 characters long.")
else:
print("Username is valid.")
The Modulo Operator %
The modulo operator %
returns the remainder of the division between two numbers.
print(5 % 2) # Output: 1
print(10 % 5) # Output: 0
Checking for Even or Odd Numbers
def is_even(number):
if number % 2 == 0:
return True
else:
return False
print(is_even(4)) # True
print(is_even(7)) # False
Simplified Version:
def is_even(number):
return number % 2 == 0
elif
Statements
An elif
(else if) statement allows us to check multiple conditions sequentially.
if condition1:
# Code if condition1 is True
elif condition2:
# Code if condition2 is True
else:
# Code if none of the above conditions are True
Example: Username Validation
if len(username) < 3:
print("Invalid username: Must be at least 3 characters long.")
elif len(username) > 15:
print("Invalid username: Must be at most 15 characters long.")
elif not username.isalpha():
print("Invalid username: Must contain only letters.")
else:
print("Username is valid.")
Note: Conditions are evaluated in order. Once a condition is True
, the corresponding block executes, and the rest are skipped.
Key Takeaways
- Comparison Operators allow comparison of values, resulting in a Boolean (
True
orFalse
). - Logical Operators (
and
,or
,not
) enable the creation of complex logical expressions. - Conditional Statements (
if
,elif
,else
) control the flow of a program based on conditions. - Modulo Operator
%
is useful for determining divisibility and checking for even or odd numbers.