---
title: "Control Flow: Conditions and Loops"
date: 2026-01-03T16:06:29Z
modified: 2026-01-03T16:06:31Z
permalink: "https://www.micheledpierri.com/python/control-flow/"
type: page
status: publish
excerpt: ""
wpid: 2473
featured_image: "https://www.micheledpierri.com/wp-content/uploads/2026/01/Python_05.webp"
featured_image_alt: Children dressed in lab coats are studying a python
timestamp: 2026-01-03T16:06:31Z
tags: []
---

##  Lesson Objectives

By the end of this lesson, you will be able to:

- Write conditional logic using `if`, `elif`, and `else`
- Iterate over ranges of values using `for` loops
- Control execution with `while` loops
- Understand why control flow is fundamental for data processing and modeling

This lesson marks a transition:

**Python stops being declarative and starts being algorithmic.**

---

## 1️⃣What Is Control Flow

Control flow defines how code executes:

- which instructions run
- when they run
- how many times they run

Without control flow, programs would execute linearly and be almost useless for real data.

---

## ![2️⃣](data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)

![2️⃣](data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)2️⃣Conditional Statements (if, elif, else)

### Basic Structure

age = 20

if age >= 18:
    print("Adult")
else:
    print("Minor")
```
<span class="line"><span style="color: #F8F8F2">age </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">20</span></span>
<span class="line"></span>
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> age </span><span style="color: #FF79C6">>=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">18</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Adult</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #FF79C6">else</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Minor</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
```

​How it works:

- the condition after `if` is evaluated
- if `True`, the indented block runs
- otherwise, the `else` block runs

### Multiple Conditions (elif)

score = 75

if score >= 90:
    print("Excellent")
elif score >= 60:
    print("Passed")
else:
    print("Failed")
```
<span class="line"><span style="color: #F8F8F2">score </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">75</span></span>
<span class="line"></span>
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> score </span><span style="color: #FF79C6">>=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">90</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Excellent</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #FF79C6">elif</span><span style="color: #F8F8F2"> score </span><span style="color: #FF79C6">>=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">60</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Passed</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #FF79C6">else</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Failed</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
```

Only one branch is executed.

---

## 3️⃣ Boolean Expressions

Conditions rely on boolean expressions.

#### Common Operators

==   equal
!=   not equal
>    greater than
<    less than
>=   greater or equal
<=   less or equal
```
<span class="line"><span style="color: #FF79C6">==</span><span style="color: #F8F8F2">   equal</span></span>
<span class="line"><span style="color: #FF79C6">!=</span><span style="color: #F8F8F2">   </span><span style="color: #FF79C6">not</span><span style="color: #F8F8F2"> equal</span></span>
<span class="line"><span style="color: #FF79C6">></span><span style="color: #F8F8F2">    greater than</span></span>
<span class="line"><span style="color: #FF79C6"><</span><span style="color: #F8F8F2">    less than</span></span>
<span class="line"><span style="color: #FF79C6">>=</span><span style="color: #F8F8F2">   greater </span><span style="color: #FF79C6">or</span><span style="color: #F8F8F2"> equal</span></span>
<span class="line"><span style="color: #FF79C6"><=</span><span style="color: #F8F8F2">   less </span><span style="color: #FF79C6">or</span><span style="color: #F8F8F2"> equal</span></span>
<span class="line"></span>
```

​Example:

x = 10
print(x > 5)   # True
```
<span class="line"><span style="color: #F8F8F2">x </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">10</span></span>
<span class="line"><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(x </span><span style="color: #FF79C6">></span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">5</span><span style="color: #F8F8F2">)   </span><span style="color: #6272A4"># True</span></span>
<span class="line"></span>
```

​These expressions are everywhere in data filtering and decision rules.

---

## 4️⃣Indentation Is Not Optional

Python uses indentation, not braces.

if x > 0:
    print("Positive")
    print("Still inside if")
```
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> x </span><span style="color: #FF79C6">></span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Positive</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Still inside if</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
```

​Incorrect indentation causes errors or logical bugs.

Rule:

> Indentation defines program structure.

---

## ![5️⃣](data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)

![5️⃣](data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)![5️⃣](data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==)

5️⃣for Loops

for loops are used to iterate over sequences.

### Basic Example

for i in range(5):
    print(i)
```
<span class="line"><span style="color: #FF79C6">for</span><span style="color: #F8F8F2"> i </span><span style="color: #FF79C6">in</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">range</span><span style="color: #F8F8F2">(</span><span style="color: #BD93F9">5</span><span style="color: #F8F8F2">):</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(i)</span></span>
<span class="line"></span>
```

​Output:

0
1
2
3
4
```
<span class="line"><span style="color: #BD93F9">0</span></span>
<span class="line"><span style="color: #BD93F9">1</span></span>
<span class="line"><span style="color: #BD93F9">2</span></span>
<span class="line"><span style="color: #BD93F9">3</span></span>
<span class="line"><span style="color: #BD93F9">4</span></span>
<span class="line"></span>
```

​range(5) generates numbers from 0 to 4.

### Custom Ranges

for i in range(1, 6):
    print(i)
```
<span class="line"><span style="color: #FF79C6">for</span><span style="color: #F8F8F2"> i </span><span style="color: #FF79C6">in</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">range</span><span style="color: #F8F8F2">(</span><span style="color: #BD93F9">1</span><span style="color: #F8F8F2">, </span><span style="color: #BD93F9">6</span><span style="color: #F8F8F2">):</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(i)</span></span>
<span class="line"></span>
```

​Output:

1
2
3
4
5
```
<span class="line"><span style="color: #BD93F9">1</span></span>
<span class="line"><span style="color: #BD93F9">2</span></span>
<span class="line"><span style="color: #BD93F9">3</span></span>
<span class="line"><span style="color: #BD93F9">4</span></span>
<span class="line"><span style="color: #BD93F9">5</span></span>
<span class="line"></span>
```

​This pattern is extremely common in simulations and analyses.

---

## 6️⃣while Loops

while loops run as long as a condition is True.

x = 0

while x < 5:
    print(x)
    x += 1
```
<span class="line"><span style="color: #F8F8F2">x </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">0</span></span>
<span class="line"></span>
<span class="line"><span style="color: #FF79C6">while</span><span style="color: #F8F8F2"> x </span><span style="color: #FF79C6"><</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">5</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(x)</span></span>
<span class="line"><span style="color: #F8F8F2">    x </span><span style="color: #FF79C6">+=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">1</span></span>
<span class="line"></span>
```

Important:

- you must update the condition
- otherwise, you create infinite loops

---

## 7️⃣ Choosing Between for and while

General rule:

- use for when you know how many iterations you need
- use while when the stopping condition is dynamic

In data analysis:

- for → iterating over datasets
- while → iterative algorithms and convergence

---

## 8️⃣Control Flow in Data Analysis

Control flow enables:

- filtering observations
- conditional transformations
- iterative model fitting
- simulations and bootstrapping

Almost every analytical pipeline depends on it.

---

## FAQ — Frequently Asked Questions

**Q: Why does Python not use {} like other languages?**

A: Python prioritizes readability and enforces indentation-based structure.

**Q: Can I nest if statements?**

A: Yes, but excessive nesting reduces readability.

**Q: Is for slower than vectorized operations?**

A: Often yes. Loops are foundational, but later we’ll optimize.

**Q: What happens if a condition is always True?**

A: In a while loop, the program never stops.

---

## Exercises

### Exercise 1

Write an **if** statement that checks if **x** is positive.

### Exercise 2

Write an **if/else** that checks if a number is even or odd.

### Exercise 3

Use **elif** to classify a score (fail/pass/excellent).

### Exercise 4

Print numbers from 0 to 9 using a **for** loop.

### Exercise 5

Print numbers from 1 to 10.

### Exercise 6

Use a **while** loop to print numbers from 0 to 4.

### Exercise 7

Predict the output:

x = 3
if x > 5:
    print("A")
else:
    print("B")
```
<span class="line"><span style="color: #F8F8F2">x </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">3</span></span>
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> x </span><span style="color: #FF79C6">></span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">5</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">A</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #FF79C6">else</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">B</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
```

### ​Exercise 8

Explain why this code is wrong:

while x < 10:
print(x)
```
<span class="line"><span style="color: #FF79C6">while</span><span style="color: #F8F8F2"> x </span><span style="color: #FF79C6"><</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">10</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(x)</span></span>
<span class="line"></span>
```

### ​Exercise 9

Write a loop that sums numbers from 1 to 5.

### Exercise 10

Explain why control flow is essential in data analysis.

---

## Solutions

### Exercise 1

if x > 0:
    print("Positive")
```
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> x </span><span style="color: #FF79C6">></span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Positive</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
```

### Exercise 2

if n % 2 == 0:
    print("Even")
else:
    print("Odd")
```
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> n </span><span style="color: #FF79C6">%</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">2</span><span style="color: #F8F8F2"> </span><span style="color: #FF79C6">==</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Even</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #FF79C6">else</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Odd</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
```

### ​Exercise 3

if score >= 90:
    print("Excellent")
elif score >= 60:
    print("Passed")
else:
    print("Failed")
```
<span class="line"><span style="color: #FF79C6">if</span><span style="color: #F8F8F2"> score </span><span style="color: #FF79C6">>=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">90</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Excellent</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #FF79C6">elif</span><span style="color: #F8F8F2"> score </span><span style="color: #FF79C6">>=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">60</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Passed</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"><span style="color: #FF79C6">else</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">Failed</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
```

### ​Exercise 4

for i in range(10):
    print(i)
```
<span class="line"><span style="color: #FF79C6">for</span><span style="color: #F8F8F2"> i </span><span style="color: #FF79C6">in</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">range</span><span style="color: #F8F8F2">(</span><span style="color: #BD93F9">10</span><span style="color: #F8F8F2">):</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(i)</span></span>
<span class="line"></span>
```

### ​Exercise 5

for i in range(1, 11):
    print(i)
```
<span class="line"><span style="color: #FF79C6">for</span><span style="color: #F8F8F2"> i </span><span style="color: #FF79C6">in</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">range</span><span style="color: #F8F8F2">(</span><span style="color: #BD93F9">1</span><span style="color: #F8F8F2">, </span><span style="color: #BD93F9">11</span><span style="color: #F8F8F2">):</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(i)</span></span>
<span class="line"></span>
```

### ​Exercise 6

x = 0
while x < 5:
    print(x)
    x += 1
```
<span class="line"><span style="color: #F8F8F2">x </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">0</span></span>
<span class="line"><span style="color: #FF79C6">while</span><span style="color: #F8F8F2"> x </span><span style="color: #FF79C6"><</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">5</span><span style="color: #F8F8F2">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(x)</span></span>
<span class="line"><span style="color: #F8F8F2">    x </span><span style="color: #FF79C6">+=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">1</span></span>
<span class="line"></span>
```

### ​Exercise 7

# Output: B
```
<span class="line"><span style="color: #6272A4"># Output: B</span></span>
<span class="line"></span>
```

### ​Exercise 8

# Indentation error: the print statement must be indented
```
<span class="line"><span style="color: #6272A4"># Indentation error: the print statement must be indented</span></span>
<span class="line"></span>
```

### ​Exercise 9

total = 0
for i in range(1, 6):
    total += i
print(total)
```
<span class="line"><span style="color: #F8F8F2">total </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">0</span></span>
<span class="line"><span style="color: #FF79C6">for</span><span style="color: #F8F8F2"> i </span><span style="color: #FF79C6">in</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">range</span><span style="color: #F8F8F2">(</span><span style="color: #BD93F9">1</span><span style="color: #F8F8F2">, </span><span style="color: #BD93F9">6</span><span style="color: #F8F8F2">):</span></span>
<span class="line"><span style="color: #F8F8F2">    total </span><span style="color: #FF79C6">+=</span><span style="color: #F8F8F2"> i</span></span>
<span class="line"><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(total)</span></span>
<span class="line"></span>
```

### ​Exercise 10

# Control flow allows decisions, iteration, and conditional data processing
```
<span class="line"><span style="color: #6272A4"># Control flow allows decisions, iteration, and conditional data processing</span></span>
<span class="line"></span>
```

---

## ​Next Lesson Preview

In Lesson 6, we will introduce:

- functions
- parameters and return values
- why functions are essential for reusable analytical pipelines

## This is where Python code becomes modular and scalable.