Nerdegutta's logo

nerdegutta.no

Python - 3: Flow control

25.12.23

Programming

Mastering Control Flow with If Statements in Python

In Python, control flow structures empower developers to make decisions and execute specific blocks of code based on conditions. The `if` statement is a cornerstone of control flow, providing a mechanism to implement conditional logic. In this article, we'll delve into the nuances of using `if` statements in Python, exploring their syntax, common patterns, and practical examples.

The Basics of `if` Statements:

The `if` statement in Python enables the execution of a block of code only if a specified condition evaluates to `True`. Here's a basic example:


# Simple if statement
age = 25

if age >= 18:
    print("You are eligible to vote.")


In this example, the `if` statement checks whether the variable `age` is greater than or equal to 18. If the condition is `True`, the indented block of code beneath it (in this case, the `print` statement) is executed.

The `else` Clause:

To handle the case where the condition in the `if` statement is `False`, you can use the `else` clause:


# if-else statement
age = 15

if age >= 18:
    print("You are eligible to vote.")
else:
    print("You are not eligible to vote yet.")


Now, if the condition is `True`, the first block of code executes, and if it's `False`, the second block (in the `else` clause) executes.

The `elif` Clause:

For scenarios with multiple conditions, the `elif` (else if) clause comes into play:


# if-elif-else statement
score = 75

if score >= 90:
    print("Excellent!")
elif score >= 70:
    print("Good job!")
else:
    print("You can do better.")


In this example, if the `score` is greater than or equal to 90, the first block executes. If not, it checks the next condition in the `elif` clause. If none of the conditions are met, the code in the `else` block executes.

Combining Conditions with Logical Operators:

Python allows the use of logical operators (`and`, `or`, `not`) to combine multiple conditions in an `if` statement.

The `and` Operator:


# Using 'and' operator
age = 25
is_student = False

if age >= 18 and not is_student:
    print("You are eligible to vote.")


Here, the `and` operator ensures that both conditions (`age >= 18` and `not is_student`) must be `True` for the block of code to execute.

The `or` Operator:


# Using 'or' operator
temperature = 30

if temperature > 30 or temperature < 10:
    print("Weather conditions may not be optimal.")


In this case, the `or` operator triggers the block if either condition (`temperature > 30` or `temperature < 10`) is `True`.

The `not` Operator:


# Using 'not' operator
is_raining = True

if not is_raining:
    print("It's a clear day.")


The `not` operator negates the condition, executing the block if the condition is `False`.

Nested `if` Statements:

You can nest `if` statements within each other to create more complex decision trees.


# Nested if statements
age = 25
is_student = False

if age >= 18:
    if not is_student:
        print("You are eligible to vote.")
    else:
        print("You are a student and not eligible to vote.")
else:
    print("You are not eligible to vote yet.")


In this example, the second `if` statement is nested within the first, allowing for more fine-grained conditions.

Ternary Operator:

Python offers a concise way to express simple `if`-`else` statements, known as the ternary operator.


# Ternary Operator
age = 20
message = "You are eligible to vote." if age >= 18 else "You are not eligible to vote yet."
print(message)


This one-liner is equivalent to the longer `if`-`else` statement from earlier examples.

Practical Examples:

Example 1: Checking Palindromes

Let's create a Python program that checks whether a given word is a palindrome.


def is_palindrome(word):
    cleaned_word = word.lower().replace(" ", "")
    reversed_word = cleaned_word[::-1]
    
    if cleaned_word == reversed_word:
        return True
    else:
        return False

# Test the function
word_to_check = "level"
if is_palindrome(word_to_check):
    print(f"{word_to_check} is a palindrome.")
else:
    print(f"{word_to_check} is not a palindrome.")


This example showcases the use of an `if` statement to determine whether the input word is a palindrome.

Example 2: Temperature Classification

Let's build a program that classifies the temperature into different categories.


def classify_temperature(temp):
    if temp < 0:
        return "Freezing"
    elif 0 <= temp < 10:
        return "Very Cold"
    elif 10 <= temp < 20:
        return "Cold"
    elif 20 <= temp < 30:
        return "Moderate"
    elif 30 <= temp < 40:
        return "Warm"
    else:
        return "Hot"

# Test the function
current_temperature = 25
classification = classify_temperature(current_temperature)
print(f"The current temperature is {current_temperature}°C, classified as {classification}.")


In this example, the `if`-`elif` statements help classify the temperature based on different ranges.

Conclusion:

Understanding and mastering `if` statements is crucial for any Python programmer. These control flow structures empower you to create dynamic and responsive programs, enabling your code to make decisions based on various conditions. As you continue your Python journey, experiment with different conditions, logical operators, and nested structures to build robust and flexible applications. The ability to control the flow of your program is a fundamental skill that will serve you well in a wide range of programming scenarios.