if Statements
Decision-making is a fundamental concept in programming, and the if-elif-else statement in Python
is a powerful tool for precisely that purpose. π€ Should I stay or should I go? Should I have
another coffee or switch to decaf? (The answer is always more coffee.) These statements allow you
to create dynamic, branching logic within your programs. With them, you can instruct your code to
take different actions based on specific conditions, making your programs more intelligent and
responsive.
What & Why?
An if-elif-else statement is a control structure in Python that enables your program to make
choices. It starts with an if statement that checks a particular condition. If that condition
is True, a specific block of code is executed. However, if the condition is not met, the program
can continue to evaluate other conditions using elif (short for βelse ifβ) statements. These
elif clauses allow for multiple conditions to be checked sequentially. Finally, if none of the
preceding conditions are True, the else code block is executed.
See Also
if/else statements evaluate to True or False - which are boolean values. See
Booleans for more details.
The primary purpose of if-elif-else statements is to introduce decision-making capabilities
into your code. They allow your program to adapt and respond to varying situations. There are
three examples below of how you might use if-elif-else statements to implement logic:
Example 1: Game Over Conditions
| If-Else Statement Use Case: Game Over Conditions | |
|---|---|
Example 2: User Authentication
- The preceeding backslash is a line continuation. Both of these conditions are evaluated
in the
ifstatement.
Would result in:
Example 3: Grade Evaluation
| If-Else Statement Use Case: Grade Evaluation | |
|---|---|
Would output:
In these examples, if-elif-else statements allow the program to take different actions depending
on specific conditions. They provide the flexibility to handle a wide range of scenarios and are
essential for building responsive and intelligent software. π§
Nested Conditionals
Sometimes one decision leads to another. You can nest if statements inside each other to handle
more complex logic:
| Nested If Statements | |
|---|---|
While nesting works, too many levels can make code hard to follow. Consider flattening with
and/or operators or using early returns in functions:
| Flattening Nested Conditionals | |
|---|---|
The Rule of Thumb
If you find yourself nesting more than 2-3 levels deep, it's usually a sign to refactor. Your future self will thank you. π
The Ternary Operator (Conditional Expression)
For simple either/or assignments, Python offers a compact one-liner syntax:
| Ternary Operator | |
|---|---|
The syntax is: value_if_true if condition else value_if_false
| Ternary Examples | |
|---|---|
Nested Ternaries
While you can chain ternary expressions, they quickly become unreadable. If you need
multiple conditions, stick with if-elif-else. Readability counts. π
Match Statements (Python 3.10+)
Python 3.10 introduced match statements β a powerful pattern matching feature that's like
if-elif on steroids. Think of it as a sophisticated switch statement:
| Basic Match Statement | |
|---|---|
Matching Multiple Values
| Matching Multiple Values | |
|---|---|
Matching with Guards
Add if conditions to patterns for more precise matching:
Matching Sequences and Structures
This is where match really shines β destructuring data structures:
When to Use Match
match excels at:
- Handling multiple specific values (like HTTP status codes or commands)
- Destructuring complex data structures (lists, dicts, tuples)
- Making state machines and command parsers readable
For simple boolean conditions, if-elif-else is still your friend.
Key Takeaways
| Concept | What to Remember |
|---|---|
| if-elif-else | The workhorse of decision-making |
| Nested conditionals | Useful but flatten when possible |
| Ternary operator | value_if_true if condition else value_if_false |
| match (3.10+) | Pattern matching with destructuring |
Wildcard _ |
Matches anything in match statements |
| Guards | Add if conditions to match cases |