In this chapter “Mastering Python: Control Flow and Loops”, we will delve into the concepts of control flow and loops in Python programming. We will start with an overview of if statements, including syntax, usage, and practical examples. After that, we will dive into for and while loops and learn how to use them in practice. Additionally, we will cover the topic of nested loops and loop control statements like break, continue, and pass. By the end of this chapter, you will have a solid understanding of how to control the flow of your programs and perform repetitive tasks using loops in Python.

Conditional statements (if/else) in Python:

First section of “Control Flow and Loops” is conditional statements.  Conditional statements are an essential part of any programming language, allowing you to control the flow of your program based on certain conditions. In Python, conditional statements are used with the “if” and “else” keywords. These statements allow you to execute different code blocks depending on whether a specific condition is met or not. For example, you can display a message to the user only if they have entered a valid password. This makes conditional statements an important tool for creating dynamic and interactive programs. In this section, we will discuss the basics of conditional statements in Python, including how to use the “if” and “else” statements, and how to incorporate logical operators into your conditions.

The if statement:

The if statement is one of the most fundamental building blocks of programming. It allows you to make decisions in your code based on whether a certain condition is true or false. The basic syntax of an if statement in Python is as follows:


if condition:
    # code to be executed if condition is true

Here, the condition is a Boolean expression that returns either True or False. If the condition evaluates to True, the code indented under the if statement will be executed. If the condition evaluates to False, the code indented under the if statement will be skipped. For example, consider the following code:


x = 10
if x > 5:
    print("x is greater than 5")

In this example, the condition x > 5 evaluates to True, so the code inside the if statement is executed and the message “x is greater than 5” is printed to the screen.

The if-else statement:

The general syntax of an if-else statement in Python is as follows:


if condition:
    # code to be executed if condition is true
else:
    # code to be executed if condition is false

The else clause provides a way to specify an alternative block of code that should be executed if the condition in the if statement evaluates to False. For example:


x = 3
if x > 5:
    print("x is greater than 5")
else:
    print("x is less than or equal to 5")

In this example, the condition x > 5 evaluates to False, so the code inside the else clause is executed and the message “x is less than or equal to 5” is printed to the screen.

Nesting if statements:

The “Nesting if statements” section covers the process of including one or more if statements within another if statement. The syntax and usage of nesting if statements involve adding an additional if clause inside of the main if statement, along with a corresponding else clause.

The syntax of a nested if statement is similar to a regular if statement, but with an additional if clause inside the main if statement. The general syntax for a nested if statement is as follows:


if condition_1:
    # code to be executed if condition_1 is True
    if condition_2:
        # code to be executed if condition_2 is True
    else:
        # code to be executed if condition_2 is False
else:
    # code to be executed if condition_1 is False

In this example, condition_1 is checked first. If condition_1 is true, then condition_2 is checked. If condition_2 is also true, then the code inside the second if statement is executed. If condition_2 is false, the code inside the corresponding else clause is executed. If condition_1 is false, the code inside the else clause of the main if statement is executed.

Here are a few examples of how nesting if statements can be used in practice:

Check number X is less, equal or more than Y:


x = 10
y = 20

if x > y:
    print("x is greater than y")
else:
    if x == y:
        print("x is equal to y")
    else:
        print("x is less than y")

In this example, x and y are compared using two nested if statements. The first if statement checks if x is greater than y. If x is not greater than y, then the second if statement is executed, which checks if x is equal to y. If x is equal to y, then “x is equal to y” is printed. If x is not equal to y, then “x is less than y” is printed.

Check eligibility to vote or drink alcohol:


age = 22

if age >= 18:
    if age >= 21:
        print("You are eligible to drink alcohol")
    else:
        print("You are eligible to vote but not to drink alcohol")
else:
    print("You are not eligible to vote or drink alcohol")

This example uses two nested if statements to assess a person’s eligibility to vote or drink alcohol based on their age. 

In conclusion, nesting if statements allow you to write more complex conditions and perform more advanced actions in your Python programs. By using nested if statements, you can make decisions based on multiple conditions and execute different actions based on those conditions. 

The if-elif-else statement:

It is common to have multiple conditions in a program, and you may want to execute different code blocks based on different conditions. In such cases, you can use the if-elif-else statement. The elif clause allows you to test multiple expressions for truth value and execute a block of code as soon as one of the conditions becomes true. The else clause is used to specify a code block to be executed if all the conditions in the if-elif chain are false. The general syntax for aif-elif-else Statement is as follows:


if condition1:
    # execute block of code 1
elif condition2:
    # execute block of code 2
.
.
.
elif conditionN:
    # execute block of code N
else:
    # execute block of code else

Here’s an example to illustrate the use of the if-elif-else statement:


x = 5
if x < 0:
  print("x is negative")
elif x == 0:
  print("x is zero")
else:
  print("x is positive")

In this example, the value of x is 5, which is positive. The first condition x < 0 is false, so the code block under it is not executed. The second condition x == 0 is also false. Finally, the code block under the else clause is executed, printing “x is positive”.

You can have as many elif clauses as you need, and the code block under each elif clause will be executed only if the corresponding condition is true. If all conditions are false, the code block under the else clause will be executed.

In conclusion, the if-elif-else statement allows you to test multiple conditions and execute different code blocks based on the results. With the help of this powerful control flow construct, you can write much more complex and dynamic programs in Python.

Ternary operator:

Conditional expressions, also known as ternary operators, provide a shorthand way to write simple if/else statements in Python. Unlike traditional if/else statements, conditional expressions can be written in a single line, making them a convenient way to write concise code.

Syntax and Usage of Conditional Expressions

The syntax of a conditional expression in Python is as follows: value_if_true if condition else value_if_false. The condition is evaluated first, and if it’s true, value_if_true is returned. If condition is false, value_if_false is returned.


value_if_true if condition else value_if_false

Comparison with if/else Statements

Conditional expressions are a more concise way to write simple if/else statements. However, they should not be used for more complex logic as they can become difficult to read and understand. In such cases, it’s better to use traditional if/else statements.

Example of Conditional Expressions in Practice

Here are some examples of how conditional expressions can be used in Python:


result = "Pass" if score >= 60 else "Fail"
print(result)

In the first example, If score is greater than or equal to 60, “Pass” is assigned to result. Otherwise, “Fail” is assigned to result.

In conclusion, conditional statements and conditional expressions are important tools in Python programming. Understanding their syntax and usage, as well as their pros and cons, will help you write clean, readable, and efficient code.

This Section on “Conditional statements” has provided you with a comprehensive understanding of the if and else statements in Python. You should now be able to implement these statements in your own programs, and control the flow of execution based on conditions. Remember to continue practicing and experimenting with the examples provided to further improve your skills. Don’t hesitate to seek out additional resources as you continue on your Python journey.

For and while loops in Python:

Second section of “Control Flow and Loops” is For and while loops. In this section, we will explore two important control structures in Python programming language – For and while loops. Loops are a fundamental programming concept that allow you to repeat a block of code multiple times. This allows you to perform a task repeatedly until a certain condition is met, making it an essential aspect of programming.

The for Loop

In Python, the for loop is used for iterating over a sequence of elements such as a list, tuple, or string. It is a fundamental structure for performing repetitive operations and is one of the most commonly used loop constructs in Python.

Syntax and Usage of the for Loop

The general syntax for a for loop in Python is as follows:


for item in sequence:
    # block of code to be executed

Here, the item is a variable that takes on each value of the sequence one by one as the loop executes. The loop continues to run until all elements of the sequence have been processed.

Examples of for Loops in Practice

Here is a simple example of using a for loop to print the elements of a list:


fruits = ['apple', 'banana', 'cherry']
for fruit in fruits:
    print(fruit)

Output


apple
banana
cherry

In this example, the for loop iterates over each element of the fruits list and prints it. The fruit variable takes on each value of the fruits list in turn as the loop executes.

The while Loop

The while loop is a type of loop in Python that allows you to repeatedly execute a block of code as long as a specified condition is met. Unlike the for loop, the while loop does not have a fixed number of iterations and will keep executing as long as the specified condition is true.

Syntax and Usage of the while Loop The syntax for a while loop in Python is as follows:


while condition:
    code to be executed

The while loop starts by evaluating the condition. If the condition is True, the code inside the loop will be executed. Once the code inside the loop has been executed, the condition will be evaluated again, and the process repeats until the condition is False.

Examples of while Loops in Practice Here is an example of a while loop that prints the numbers 1 to 10:


count = 1
while count <= 10:
    print(count)
    count += 1

In this example, the loop continues to run as long as the value of the count variable is less than or equal to 10. On each iteration, the value of count is printed and then incremented by 1. Once the value of count reaches 11, the loop will exit and the program will continue to run any code that comes after the loop.

Nesting Loops

In this section, we will cover the concept of nesting loops in Python. Nesting loops refer to the idea of placing one loop inside another loop. This allows you to execute a set of instructions multiple times, depending on the values of the inner and outer loops.

Syntax and Usage of Nesting Loops: The general syntax of a nested loop is as follows:


for outer_loop_variable in outer_loop_iterable:
    # code inside outer loop
    for inner_loop_variable in inner_loop_iterable:
        # code inside inner loop

while outer_loop_condition:
    # code inside outer loop
    while inner_loop_condition:
        # code inside inner loop

In the above syntax, outer_loop_variable and outer_loop_iterable represent the outer loop, and inner_loop_variable and inner_loop_iterable represent the inner loop. There are few possible conbinations like for loop inside another for loop, while loop inside another while loop, for loop inside a while loop, while loop inside a for loop. Each combination of nested loops can provide a different outcome and solution for a specific problem. It’s important to understand the logic and structure of nested loops, as well as their proper usage, to effectively solve problems using nested loops.

Examples of Nesting Loops in Practice: Let’s take an example to understand how nested loops work in practice.


for i in range(1,4):
    for j in range(1,4):
        print(f"{i} * {j} = {i*j}")

In the above example, the outer loop iterates over the values of i from 1 to 3, and the inner loop iterates over the values of j from 1 to 3. The result of multiplying i and j is calculated and printed in each iteration.

In conclusion, for and while loops are a crucial part of any programming language. By understanding the syntax and usage of these two looping structures, you will be able to write code that can perform repetitive tasks, save time and make your code more efficient. Keep practicing and experimenting with the examples provided to master these loops.

Loop control statements:

Third section of “Control Flow and Loops” is Loop control statements. Loop control statements are used to control the flow of execution within loops in Python. They allow you to manipulate the behavior of loops and conditionally skip or end the looping process. In this section, we will cover break, continue, and pass statements, and discuss how they are used to control the flow of loop execution.

The break Statement:

The break statement is used to exit a loop prematurely. Once the break statement is executed, the loop will end, and the program will continue to the next statement after the loop. The syntax for the break statement is as follows:


for value in collection:
    if value == target:
        break
    else:
        # code to be executed for each value in the collection

In this example, the loop will end as soon as the value in the collection matches the target value.

The continue Statement:

The continue statement is used to skip the current iteration of a loop and move on to the next iteration. The syntax for the continue statement is as follows:


for value in collection:
    if value == target:
        continue
    else:
        # code to be executed for each value in the collection

In this example, if the value in the collection matches the target value, the iteration will be skipped, and the program will move on to the next value in the collection.

The pass Statement:

The pass statement is used as a placeholder in situations where the program requires a statement. You don’t want the program to do anything. The syntax for the pass statement is as follows:


for value in collection:
    pass

In this example, the loop will iterate over the values in the collection. The pass statement will ensure that no action is taken for each iteration.

Loop control statements are an essential tool for controlling the flow of execution within loops in Python. You can manipulate the behavior of loops using break, continue, and pass statements. You can skip iterations and create placeholder statements as needed with these statements. This section covered the syntax and usage of break, continue, and pass statements. Examples of their usage in practice were provided. Keep loop control statements (break, continue, and pass) in mind while working with loops in Python.

In this chapter “Mastering Python: Control Flow and Loops”, we have covered the essential concepts of control flow and loops in Python. You have learned how to use if statements to control the flow of your programs based on conditions, as well as how to use for and while loops to perform repetitive tasks. Additionally, you have learned how to nest loops and use loop control statements like break, continue, and pass to manipulate the behavior of your loops. With these skills, you are now ready to create complex programs and automate repetitive tasks in Python. We encourage you to continue exploring and practicing the concepts covered in this chapter. Keep up the good work and happy coding!

Don’t forget to check out other blogs in the “Mastering Python” series for more in-depth information and tips on mastering Python. 

Categorized in: