Skip to content

Mastering Loops in Python ​

Welcome back, aspiring hero! In this chapter, we'll focus on the fundamentals of loops in Python, which are essential for automating repetitive tasks and controlling the flow of your programs. Let's dive into the world of while loops, for loops, and control statements like break and continue.

The While Loop's Enchantment 🌀 ​

The while loop allows you to execute a block of code repeatedly as long as a certain condition remains True.

The Counting Spell ​

python
# The spell begins
i = 0
while i < 3:
    print(f"Magic Pulse {i}")
    i += 1
# Output:
# Magic Pulse 0
# Magic Pulse 1
# Magic Pulse 2

Question: What happens if we forget to increment i?

Answer

An infinite loop occurs because the condition i < 3 is always True.

The Break and Continue Potions ​

Sometimes, heroes need to alter their course mid-action.

The Break Statement 🔨 ​

The break statement allows you to exit a loop prematurely when a certain condition is met.

python
# Searching for the secret code
codes = ["alpha", "beta", "gamma", "delta"]
i = 0
while i < len(codes):
    code = codes[i]
    if code == "gamma":
        print(f"Secret code '{code}' found!")
        break
    i += 1
# Output:
# Secret code 'gamma' found!

The Continue Statement 🏃‍♂️ ​

The continue statement skips the current iteration and moves to the next one.

python
# Skipping over obstacles
positions = [1, -1, 2, -1, 3]
i = 0
while i < len(positions):
    if positions[i] == -1:
        i += 1
        continue
    print(f"Position {positions[i]} is clear.")
    i += 1
# Output:
# Position 1 is clear.
# Position 2 is clear.
# Position 3 is clear.

Question: What would happen if we used break instead of continue?

Answer

Using break would exit the loop entirely when positions[i] == -1, so only the positions before the first -1 would be processed.

The Pattern Conjurer ​

python
# Conjuring a pattern from the ether
no_of_stars = 5
i = 1
while i <= no_of_stars:
    print("✨" * i)
    i += 1
# Output:
# ✨
# ✨✨
# ✨✨✨
# ✨✨✨✨
# ✨✨✨✨✨

For Loop's Symphony 🎶 ​

The for loop is ideal for iterating over sequences like lists, strings, or ranges.

Intro To The Range ​

python
# A melody of numbers
for note in range(3):
    print(f"Note {note}")
# Output:
# Note 0
# Note 1
# Note 2

Question: How can we iterate over a range with a specific start and step?

Example:

python
for num in range(1, 10, 2):
    print(f"Odd Number: {num}")
# Output:
# Odd Number: 1
# Odd Number: 3
# Odd Number: 5
# Odd Number: 7
# Odd Number: 9

The Range Rhapsody ​

python
def for_loops():
    # Case 1: Simple range
    for note in range(3):
        print(f"Note {note}")

    # Case 2: Specified start and end
    for note in range(1, 4):
        print(f"Alert Level {note}")

    # Case 3: Stepping through even numbers
    for note in range(0, 10, 2):
        print(f"Even Number {note}")

    # Case 4: Counting down
    for note in range(10, 0, -2):
        print(f"Countdown {note}")

for_loops()

Output:

Note 0
Note 1
Note 2
Alert Level 1
Alert Level 2
Alert Level 3
Even Number 0
Even Number 2
Even Number 4
Even Number 6
Even Number 8
Countdown 10
Countdown 8
Countdown 6
Countdown 4
Countdown 2

The Break and Continue in For Loops ​

Control statements work similarly in for loops.

Break Example ​

python
# Finding a target
targets = ["A", "B", "C", "D"]
for target in targets:
    if target == "C":
        print(f"Target {target} acquired!")
        break
    print(f"Scanning {target}...")
# Output:
# Scanning A...
# Scanning B...
# Target C acquired!

Continue Example ​

python
# Ignoring specific items
items = [1, 2, 3, 4, 5]
for item in items:
    if item % 2 == 0:
        continue  # Skip even numbers
    print(f"Odd item: {item}")
# Output:
# Odd item: 1
# Odd item: 3
# Odd item: 5

Task: Write a loop that prints numbers from 1 to 10 but skips numbers divisible by 3.

Answer
python
for num in range(1, 11):
    if num % 3 == 0:
        continue
    print(num)
# Output:
# 1
# 2
# 4
# 5
# 7
# 8
# 10

Iterating Over Lists ​

python
# Heroes assemble!
heroes = ["Iron Man", "Captain America", "Thor"]
for hero in heroes:
    print(f"{hero} is ready for battle.")
# Output:
# Iron Man is ready for battle.
# Captain America is ready for battle.
# Thor is ready for battle.

The Starlit Loom ​

python
# Weaving stars into patterns
no_of_stars = 3
for i in range(no_of_stars, 0, -1):
    print("✨" * i)
# Output:
# ✨✨✨
# ✨✨
# ✨

Introduction to List Comprehensions 🚀 ​

List comprehensions offer a concise way to create lists.

Basic List Comprehension ​

python
# Squaring numbers in a list
numbers = [1, 2, 3, 4, 5]
squares = [num ** 2 for num in numbers]
print(squares)
# Output: [1, 4, 9, 16, 25]

Note: We'll explore more advanced comprehensions in later chapters.

Practical Examples ​

Summing Numbers ​

python
# Sum of the first 5 natural numbers
total = 0
for num in range(1, 6):
    total += num
print(f"The total is {total}")
# Output:
# The total is 15

Factorial Calculation ​

python
# Calculating factorial of 5
factorial = 1
for num in range(1, 6):
    factorial *= num
print(f"5! = {factorial}")
# Output:
# 5! = 120

Understanding Loop Control Flow ​

The Importance of Conditions ​

Always ensure that your loops have proper exit conditions to prevent infinite loops.

Example of an Infinite Loop:

python
# This will run forever!
i = 0
while i >= 0:
    print(i)
    i += 1

Solution: Set a condition that becomes False.

python
# Corrected loop
i = 0
while i < 10:
    print(i)
    i += 1

Tips for Effective Looping ​

  • Initialize Loop Variables Properly: Ensure variables used in conditions are initialized before the loop.
  • Update Variables: Modify loop variables within the loop to eventually meet the exit condition.
  • Avoid Infinite Loops: Double-check your conditions and updates.
  • Use Break and Continue Wisely: Control the flow for specific scenarios.

Exercises ​

Exercise 1: Counting Down ​

Write a while loop that counts down from 5 to 1 and then prints "Blast off!".

Answer
python
i = 5
while i > 0:
    print(i)
    i -= 1
print("Blast off!")
# Output:
# 5
# 4
# 3
# 2
# 1
# Blast off!

Exercise 2: Sum of Even Numbers ​

Calculate the sum of all even numbers between 1 and 10 using a for loop.

Answer
python
total = 0
for num in range(1, 11):
    if num % 2 == 0:
        total += num
print(f"Sum of even numbers: {total}")
# Output:
# Sum of even numbers: 30

Task: Patrol Route Simulation 🚓 ​

Task

Simulate a superhero's patrol route by printing street numbers from 1 to 10. If the street number is even, print "Safe", otherwise print "Investigate".

Example:

Street 1: Investigate
Street 2: Safe
...
Answer
python
for street in range(1, 11):
    status = "Safe" if street % 2 == 0 else "Investigate"
    print(f"Street {street}: {status}")

Correcting a Scrambled Message 🔄 ​

Help the heroes unscramble a vital message.

Task

Unscramble the sentence: "universe the save to time no is there"

python
scrambled = "universe the save to time no is there"
words = scrambled.split()
unscrambled = " ".join(words[::-1])
print(unscrambled)
# Output: there is no time to save the universe

Question: How can we reverse each word individually?

Answer
python
reversed_words = [word[::-1] for word in words]
result = " ".join(reversed_words)
print(result)
# Output: esrevinu eht evas ot emit on si ereht

Conclusion ​

You've now learned the basics of loops in Python, including how to use while loops, for loops, and control statements like break and continue. These are fundamental tools that will help you automate repetitive tasks and control the flow of your programs.

Farewell, Aspiring Hero! 👋 ​

Keep practicing these concepts, and you'll continue to grow your coding superpowers. Until next time, happy coding!