Bird
Raised Fist0
Pythonprogramming~10 mins

Nested while loops in Python - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Nested while loops
Initialize outer variable i=0
Check outer condition i < 2?
NoEXIT
Yes
Initialize inner variable j=0
Check inner condition j < 3?
NoIncrement i
Yes
Execute inner loop body
Increment j
Back to inner condition
Increment i
Back to inner condition
The outer loop runs while i < 2. For each i, the inner loop runs while j < 3. Inner loop resets j each time.
Execution Sample
Python
i = 0
while i < 2:
    j = 0
    while j < 3:
        print(i, j)
        j += 1
    i += 1
Print pairs of i and j where i goes 0 to 1 and j goes 0 to 2 for each i.
Execution Table
StepijOuter condition (i<2)Inner condition (j<3)ActionOutput
10-True-Initialize j=0
200TrueTruePrint (0,0), j+=1(0, 0)
301TrueTruePrint (0,1), j+=1(0, 1)
402TrueTruePrint (0,2), j+=1(0, 2)
503TrueFalseInner loop ends, i+=1
61-True-Initialize j=0
710TrueTruePrint (1,0), j+=1(1, 0)
811TrueTruePrint (1,1), j+=1(1, 1)
912TrueTruePrint (1,2), j+=1(1, 2)
1013TrueFalseInner loop ends, i+=1
112-False-Outer loop ends
💡 At step 11, i=2, outer condition i<2 is False, so loop ends.
Variable Tracker
VariableStartAfter 1After 2After 3After 4After 5After 6After 7After 8After 9After 10Final
i000001111122
j-0123-0123--
Key Moments - 3 Insights
Why does j reset to 0 each time the outer loop runs?
Because at each outer loop iteration (see steps 1 and 6), j is set to 0 before the inner loop starts. This is shown in the execution_table where j is '-' before initialization and then 0 after.
When does the inner loop stop running?
The inner loop stops when j reaches 3, making the condition j < 3 false (see steps 5 and 10). Then control goes back to the outer loop.
Why does the outer loop run only twice?
Because the outer loop condition is i < 2. When i becomes 2 at step 11, the condition is false and the loop ends.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at step 4. What are the values of i and j?
Ai=0, j=2
Bi=1, j=2
Ci=0, j=3
Di=1, j=3
💡 Hint
Check the 'i' and 'j' columns in execution_table row with Step 4.
At which step does the outer loop condition become false?
AStep 10
BStep 11
CStep 5
DStep 6
💡 Hint
Look at the 'Outer condition' column in execution_table and find where it is False.
If we change the outer loop condition to i < 3, how many times will the inner loop run in total?
A6 times
B3 times
C9 times
D2 times
💡 Hint
Each outer loop runs inner loop 3 times; with i < 3, outer runs 3 times, so 3*3=9.
Concept Snapshot
Nested while loops:
- Outer loop runs while condition true
- Inner loop runs fully for each outer iteration
- Inner loop variable resets each outer iteration
- Use indentation to show nesting
- Loop ends when outer condition false
Full Transcript
This example shows nested while loops in Python. The outer loop variable i starts at 0 and runs while i < 2. For each i, the inner loop variable j starts at 0 and runs while j < 3. Each inner loop prints the pair (i, j). After inner loop ends, i increments. The loops stop when i reaches 2. Variables i and j change as shown in the variable tracker. Key points: j resets each outer loop, inner loop runs fully each time, outer loop runs twice total.

Practice

(1/5)
1. What does a nested while loop do in Python?
while condition1:
  while condition2:
    # code
easy
A. Runs the inner loop completely for each iteration of the outer loop
B. Runs both loops only once
C. Runs the outer loop only after the inner loop finishes all iterations
D. Runs the inner loop only if the outer loop condition is false

Solution

  1. Step 1: Understand nested loops structure

    The outer loop runs while condition1 is true. For each iteration of this outer loop, the inner loop runs fully while condition2 is true.
  2. Step 2: Explain the inner loop behavior

    The inner loop completes all its iterations before the outer loop moves to the next iteration.
  3. Final Answer:

    Runs the inner loop completely for each iteration of the outer loop -> Option A
  4. Quick Check:

    Inner loop runs fully inside outer loop [OK]
Hint: Inner loop finishes all cycles before outer loop continues [OK]
Common Mistakes:
  • Thinking both loops run only once
  • Confusing order of loop execution
  • Assuming inner loop runs only if outer loop is false
2. Which of the following is the correct syntax for a nested while loop in Python?
easy
A. while x < 3: while y < 2: print(x, y) y += 1
B. while x < 3 while y < 2: print(x, y) y += 1
C. while x < 3: while y < 2: print(x, y) y += 1
D. while x < 3: while y < 2: print(x, y) y += 1

Solution

  1. Step 1: Check indentation and colons

    Python requires a colon after while conditions and proper indentation for nested blocks.
  2. Step 2: Identify correct indentation and syntax

    while x < 3: while y < 2: print(x, y) y += 1 uses colons and indents the inner while and print statements correctly.
  3. Final Answer:

    while x < 3: while y < 2: print(x, y) y += 1 -> Option D
  4. Quick Check:

    Correct colons and indentation = while x < 3: while y < 2: print(x, y) y += 1 [OK]
Hint: Look for colons and consistent indentation [OK]
Common Mistakes:
  • Missing colons after while statements
  • Incorrect indentation of inner loop
  • Mixing indentation levels
3. What is the output of this code?
i = 1
while i <= 2:
    j = 1
    while j <= 3:
        print(i, j)
        j += 1
    i += 1
medium
A. 1 1\n1 2\n2 1\n2 2
B. 1 1\n2 1\n3 1
C. 1 1\n1 2\n1 3\n2 1\n2 2\n2 3
D. 1 1\n1 2\n1 3

Solution

  1. Step 1: Trace outer loop iterations

    i starts at 1 and runs while i <= 2, so i = 1 and i = 2.
  2. Step 2: Trace inner loop iterations for each i

    For each i, j runs from 1 to 3, printing i and j each time.
  3. Final Answer:

    1 1\n1 2\n1 3\n2 1\n2 2\n2 3 -> Option C
  4. Quick Check:

    Inner loop prints 3 times per outer loop iteration [OK]
Hint: Inner loop runs fully for each outer loop iteration [OK]
Common Mistakes:
  • Only printing inner loop once
  • Mixing up i and j values
  • Stopping loops too early
4. Find the error in this nested while loop code:
i = 0
while i < 2:
    j = 0
    while j < 2:
    print(i, j)
    j += 1
    i += 1
medium
A. No error, code runs fine
B. Inner loop print and increments are not indented properly
C. Variables i and j are not initialized
D. Outer loop condition is incorrect

Solution

  1. Step 1: Check indentation inside inner while loop

    The print and j increment lines must be indented inside the inner while loop to run repeatedly.
  2. Step 2: Identify effect of wrong indentation

    Without indentation, print and j += 1 run only once, causing an infinite loop or logic error.
  3. Final Answer:

    Inner loop print and increments are not indented properly -> Option B
  4. Quick Check:

    Indent inner loop body correctly [OK]
Hint: Indent inner loop body to avoid logic errors [OK]
Common Mistakes:
  • Forgetting to indent inner loop code
  • Incrementing outer loop variable inside inner loop
  • Misplacing loop conditions
5. You want to print a 3x3 grid of numbers where each cell shows the sum of its row and column indexes (starting from 1). Which nested while loop code correctly does this?
hard
A. row = 1 while row <= 3: col = 1 while col <= 3: print(row + col, end=' ') col += 1 print() row += 1
B. row = 1 while row <= 3: col = 1 while col <= 3: print(row * col, end=' ') col += 1 print() row += 1
C. row = 0 while row < 3: col = 0 while col < 3: print(row + col, end=' ') col += 1 print() row += 1
D. row = 1 while row < 3: col = 1 while col < 3: print(row + col, end=' ') col += 1 print() row += 1

Solution

  1. Step 1: Check loop ranges for 1 to 3

    We want rows and columns from 1 to 3 inclusive, so conditions should be <= 3 starting at 1.
  2. Step 2: Verify sum calculation and printing format

    row = 1 while row <= 3: col = 1 while col <= 3: print(row + col, end=' ') col += 1 print() row += 1 sums row and col indexes and prints with space, then prints a newline after each row.
  3. Final Answer:

    row = 1 while row <= 3: col = 1 while col <= 3: print(row + col, end=' ') col += 1 print() row += 1 -> Option A
  4. Quick Check:

    Correct ranges and sum print = row = 1 while row <= 3: col = 1 while col <= 3: print(row + col, end=' ') col += 1 print() row += 1 [OK]
Hint: Use <= 3 and start from 1 for correct grid indexes [OK]
Common Mistakes:
  • Starting loops at 0 instead of 1
  • Using < 3 instead of <= 3 to miss last row/column
  • Printing product instead of sum