logo
25

Advanced Loops

⏱️ 25 min

Advanced Loops: Controlling When to Exit and When to Fall Back

What You Might Be Wondering

"I can write loops already. Why is there an advanced lesson?"

Because most loop bugs aren't about "can you loop" — they're about exit timing and fallback logic.

One-Line Definition

Advanced loops are about fine-grained flow control: for...else, nested loops, and search patterns.

Real-Life Analogy

Looking for a book:

  • Found it? Stop searching.
  • Searched everywhere and didn't find it? Then show "not found."

That's for...else.

Minimal Working Example (for...else)

nums = [1, 3, 5, 7]
target = 4

for n in nums:
    if n == target:
        print("Found")
        break
else:
    print("Not found")

Nested Loops

for row in range(1, 4):
    for col in range(1, 4):
        print(f"({row},{col})", end=" ")
    print()

Search Pattern (Worth Memorizing)

found = False
for item in items:
    if condition_met:
        found = True
        break

if not found:
    print("No match")

Quick Quiz (5 min)

  1. Use for...else to search for a username.
  2. Print a 9x9 multiplication table.
  3. Search a 2D list for a target value and output its coordinates.

Quiz Rubric & Grading Criteria

  • Direction: write runnable code that covers the core requirements and edge cases from the prompt.
  • Criterion 1 (Correctness): main flow produces correct results, key branches execute.
  • Criterion 2 (Readability): clear variable names, no excessive nesting.
  • Criterion 3 (Robustness): basic protection against empty values, type errors, or unexpected input.

Take-Home Task

Build an "inventory lookup":

  • Input: a 2D product table
  • Find the target SKU, output its position, and stop
  • If not found, output a message

Acceptance Criteria

You can independently:

  • Explain when for...else's else block actually runs
  • Write maintainable nested loops
  • Use the search-match-exit pattern

Common Errors & Debugging Steps (Beginner Edition)

  • Error message looks like gibberish: read the last line for the error type (TypeError, NameError, etc.), then trace back to the offending line.
  • Not sure what a variable holds: drop a temporary print(variable, type(variable)) to check.
  • Changed code but nothing happened: make sure you saved the file, you're running the right file, and your terminal environment (venv) is correct.

Common Misconceptions

  • Misconception: for...else's else runs every time.

  • Reality: it only runs if the loop completes without hitting a break.

  • Misconception: deeply nested loops are fine if they work.

  • Reality: past two levels, extract the inner logic into a function.