Computer Programming 1 (Python) • Control Flow

Break & Continue — I can use break/continue appropriately and explain their effect on loop flow at my level.

Master how break and continue let you take full control of your Python loops.

A Python coding terminal with a program flow and laptop.
Inside this lesson 10 sections 5 questions 7 figures

SECTION 1

Historical Context & Motivation

Every programming language needs a way to repeat tasks, but just as important is the ability to interrupt or skip parts of that repetition. Since the earliest days of computing, programmers have needed ways to exit a loop early when they find what they're looking for, or to skip over certain iterations that aren't relevant. The break and continue statements in Python give you exactly that power. Understanding where these tools came from helps you see why they matter today.

1964 • BASIC Introduces GOTO

Early languages like BASIC used GOTO to jump around in code, including escaping loops. This was flexible but led to confusing 'spaghetti code' that was hard to read.

1972 • C Language Formalizes break/continue

The C programming language introduced dedicated break and continue keywords, giving programmers structured ways to alter loop flow without the chaos of GOTO.

1991 • Python Adopts break/continue

Guido van Rossum included break and continue in Python from its very first release, borrowing the clear semantics from C while making them fit Python's readable, indentation-based style.

2000s • Modern Best Practices Emerge

As Python grew in popularity, the community developed guidelines for when break and continue improve readability versus when they should be avoided in favor of cleaner loop conditions.

The central question this lesson addresses is straightforward: when your loop is running, how do you exit early or skip specific iterations without breaking the structure of your program? Python's break and continue statements are the answer.

SECTION 2

Core Principles & Definitions

Before diving into code, let's nail down the foundational ideas. Both break and continue are loop control statements — they change what happens inside a for or while loop without affecting the rest of your program. They only make sense inside a loop; using them outside one will cause a SyntaxError.

1

break — Exit the Loop

When Python encounters break, it immediately stops the loop entirely and jumps to the first line of code after the loop body. No remaining iterations run.
2

continue — Skip to Next Iteration

When Python encounters continue, it skips the rest of the current iteration and jumps back to the top of the loop to start the next iteration.
3

Scope — Innermost Loop Only

Both statements affect only the innermost loop they appear in. If you have nested loops, a break inside the inner loop does not stop the outer loop.
4

Guarded by Conditions

You almost always place break and continue inside an if statement. Without a condition, break would stop the loop on the first pass and continue would skip every iteration — both useless.
✦

KEY TAKEAWAY

Think of a loop as a playlist on repeat. break is like pressing the stop button — the music ends and the player moves on to whatever comes next. continue is like pressing the skip button — you jump past the current song and the next one starts playing immediately.

SECTION 3

Visual Explanation — Loop Flow Diagrams

A flowchart is the best way to see how break and continue redirect the flow of execution. The diagram below traces the path Python takes through a typical for loop when it encounters each statement.

How break and continue Alter Loop FlowStart of LoopMore items?YesNoExecute loop bodyif conditionfor break?YesNobreakEXIT LOOPif conditionfor continue?YesNocontinueSKIP RESTRest of bodyCode after the loop
Follow the pink dashed path to see how break exits the loop entirely. Follow the cyan dashed path to see how continue jumps back to the top for the next iteration.

Notice two critical details in the diagram. First, break sends execution completely outside the loop — no more iterations happen and the program moves on. Second, continue only skips the remainder of the current iteration; the loop itself keeps running. This distinction is the single most important thing to remember about these two statements.

SECTION 4

How break and continue Work in Code

break in a for Loop

The break statement is most commonly used when you're searching through data and want to stop as soon as you find what you need. Consider a program that looks for the first negative number in a list. Without break, the loop would keep checking every remaining element even after finding the answer — wasting time.

BREAK SYNTAX

foriteminsequence:ifcondition:breakfor item in sequence: if condition: break

When condition evaluates to True, Python immediately exits the loop. Any code below break inside the loop body is skipped, and any remaining items in sequence are ignored.

continue in a for Loop

The continue statement is useful when certain items should be skipped without processing. For example, if you're summing test scores but want to ignore any score of zero (perhaps indicating an excused absence), continue lets you skip those zeros cleanly.

CONTINUE SYNTAX

for item in sequence: if condition: continue # rest of loop body

When condition is True, Python skips everything below continue for this iteration and proceeds to the next item in sequence.

break and continue in while Loops

Both statements work identically inside while loops. A common pattern is while True combined with break to create an infinite loop with a controlled exit. This is useful for menus or input validation where you don't know in advance how many times the loop should run.

WHILE TRUE + BREAK PATTERN

whileTrue:userinput=input("Enter′quit′tostop:")ifuserinput==′quit′:breakprint(f"Youtyped:userinput")while True: user_input = input("Enter 'quit' to stop: ") if user_input == 'quit': break print(f"You typed: {user_input}")

The loop runs forever until the user types 'quit', at which point break ends the loop. This is one of the most common real-world uses of break.

SECTION 5

Tracing Through Code — What Actually Happens

The best way to understand break and continue is to trace through concrete examples step by step. Below is a side-by-side comparison showing the output of two nearly identical loops — one using break and one using continue — so you can see exactly how the output differs.

Side-by-Side: break vs. continuebreak Examplefor i in range(1, 6): if i == 3: break print(i)Trace TableiActionOutput1print12print23BREAK—4never reached5never reachedOutput: 1 2continue Examplefor i in range(1, 6): if i == 3: continue print(i)Trace TableiActionOutput1print12print23SKIP—4print45print5Output: 1 2 4 5break stops the loop entirely; continue only skips iteration 3
Both loops iterate over range(1, 6) and check if i == 3. The left panel uses break and only prints 1 and 2. The right panel uses continue and prints 1, 2, 4, and 5 — skipping only the 3.

This side-by-side view makes the difference crystal clear. With break, iterations 4 and 5 are never reached because the loop is completely terminated. With continue, the loop keeps going — it just skips the print call when i equals 3 and moves on to 4.

SECTION 6

Worked Example — Finding a Password in a List

Let's work through a realistic example that uses both break and continue. Imagine you have a list of attempted passwords and you need to find the first valid one. Blank entries should be skipped, and the search should stop as soon as a valid password is found.

Password Search Program

  1. 1

    Step 1 — Set Up the Data

    Define the list of attempts and the correct password. We also create a variable to track whether we found a match. attempts = ["", "hello", "", "letmein", "secret123", "pass"] correct = "secret123" found = False
    We have 6 attempts; two are blank strings.
  2. 2

    Step 2 — Loop with continue to Skip Blanks

    We use continue to skip blank entries. When attempt == "" is true, we skip the rest of the loop body and go to the next item. for attempt in attempts: if attempt == "": continue
    Blank entries at index 0 and 2 are skipped entirely.
  3. 3

    Step 3 — Check for Match and break

    For non-blank attempts, we check if the attempt matches the correct password. If so, we set found = True and break out of the loop — no need to check the remaining entries. if attempt == correct: found = True break print(f"'{attempt}' is incorrect.")
    When attempt is "secret123", break fires. "pass" is never checked.
  4. 4

    Step 4 — Output the Result

    After the loop, we use the found variable to print the outcome. if found: print("Access granted!") else: print("All attempts failed.")
    Console output: 'hello' is incorrect. → 'letmein' is incorrect. → Access granted!
💡

Why Not Just Use an else Clause?

You could use if/else instead of continue in this example. However, continue keeps the main logic at a lower indentation level, making the code easier to read — especially when the body of the loop has many lines.

SECTION 7

When to Use break vs. continue — And When Not To

Just because you can use break or continue doesn't mean you always should. Using them wisely makes your code clearer; overusing them can make it confusing. The table below summarizes good and bad use cases.

ScenarioRecommendedWhy
Search: stop after finding the first matchbreakAvoids wasted iterations; clearly signals intent to stop.
Input validation: keep asking until valid inputwhile True + breakClean pattern for unknown iteration count; exit at any point.
Skip invalid or unwanted items in a listcontinueReduces nesting; main logic stays at base indent level.
You want to exit an outer loop from an inner loopRefactor into a function with returnbreak only exits the innermost loop, which causes bugs if misused.
Every iteration uses break or continueRethink your loop conditionIf you always break/continue, your loop logic is probably wrong.

Guidelines for appropriate use of break and continue

✦

KEY TAKEAWAY

Think of break and continue like the emergency exit and the elevator skip button in a building. The emergency exit (break) gets you out of the building fast when you need it, but you wouldn't use it to leave every room. The skip button (continue) lets the elevator pass a floor — handy for avoiding construction, but pressing it on every floor defeats the purpose of the elevator.

SECTION 8

Connection to Advanced Concepts

Once you're comfortable with break and continue, you'll encounter related ideas as you advance in programming. The table below previews how these simple tools connect to more sophisticated concepts you'll see in later courses.

This LessonAdvanced VersionWhere You'll See It
break exits one loopreturn exits an entire functionFunctions unit — you'll learn return acts like a super-break for functions.
continue skips one iterationList comprehensions with if filtersData structures unit — [x for x in lst if x > 0] replaces many continue patterns.
while True + breakEvent loops in GUIs and web serversAdvanced CS — frameworks like Flask use infinite loops that break on shutdown signals.
Nested loops with breakException handling with try/exceptError handling unit — exceptions provide a way to break out of deeply nested code.

How break and continue concepts scale up

ℹ

Python's for/else — A Unique Feature

Python has an unusual else clause that can follow a for or while loop. The else block runs only if the loop completes without hitting a break. This is a handy way to handle 'not found' scenarios and is something you won't find in most other languages.

SECTION 9

Practice Problems

Test your understanding with these five problems. They start with a simple concept check and build up to a challenge that requires you to combine break and continue in more complex situations.

Question 1: CONCEPTUAL

What is the difference between break and continue? If you place break inside a nested loop (a loop inside another loop), which loop does it exit?
Show answer
The break statement terminates the entire loop it's inside, so no further iterations occur. The continue statement only skips the rest of the current iteration and returns to the top of the loop for the next cycle. When break is inside a nested loop, it only exits the innermost loop that directly contains it — the outer loop keeps running as normal.

Question 2: BASIC CALCULATION

What does this code print? for num in [10, 20, 30, 40, 50]: if num == 30: break print(num)
Show answer
The output is: 10 20 The loop starts with num = 10 and prints it. Then num = 20 is printed. When num = 30, the condition num == 30 is True, so break fires and the loop ends immediately. The values 30, 40, and 50 are never printed because break terminates the loop entirely.

Question 3: INTERMEDIATE

Write a for loop that iterates over the numbers 1 through 10 and prints only the odd numbers, using continue to skip even numbers. What will the output be?
Show answer
Here is the solution: for i in range(1, 11): if i % 2 == 0: continue print(i) The output is: 1, 3, 5, 7, 9 (each on a new line). The condition i % 2 == 0 checks if i is even. When true, continue skips the print call and moves to the next number. Odd numbers don't trigger continue, so they are printed normally.

Question 4: APPLIED

You are building a simple ATM simulator. The user can enter withdrawal amounts, but amounts over $500 should be rejected (skipped) with a warning, and entering 0 should end the session. Write a while True loop that uses both break and continue to handle this.
Show answer
while True: amount = int(input("Enter withdrawal (0 to quit): ")) if amount == 0: print("Session ended.") break if amount > 500: print("Over $500 limit. Try again.") continue print(f"Dispensing ${amount}") When the user enters 0, break exits the loop and ends the session. When the amount exceeds 500, continue skips the dispensing step and asks for input again. For valid amounts between 1 and 500, the program prints the dispensing message and loops back to ask for the next amount.

Question 5: CRITICAL THINKING

Consider the following nested loop. Predict the exact output and explain why break does not stop the outer loop: for row in range(1, 4): for col in range(1, 4): if col == 2: break print(f"({row},{col})", end=" ") print() Then modify the code so that the entire program stops (both loops) as soon as row == 2 and col == 2. Hint: you can use a flag variable.
Show answer
The output is: (1,1) (2,1) (3,1) For each row, the inner loop starts with col = 1 (which prints) and then col = 2 triggers break, ending only the inner loop. The outer loop is unaffected and starts a new row. To stop both loops, add a flag: stop = False for row in range(1, 4): for col in range(1, 4): if row == 2 and col == 2: stop = True break print(f"({row},{col})", end=" ") if stop: break print() The flag stop is set to True inside the inner loop, which then breaks. The outer loop checks stop and also breaks, ending all iteration.

SUMMARY

Lesson Summary

Summary

In this lesson you learned how two loop control statements alter the flow of Python loops. The break statement terminates the loop entirely, sending execution to the first line after the loop. The continue statement skips the rest of the current iteration and jumps back to the top of the loop. Both work in for and while loops, and both affect only the innermost loop they appear in.

Use break for search-and-stop patterns and input validation loops. Use continue to skip unwanted items and keep the main loop body clean. Always place them inside an if condition, and remember that overusing them is a sign your loop logic could be simplified. These small tools give you precise control over repetition — a skill that carries forward into functions, list comprehensions, and event-driven programming.

Varsity Tutors • Computer Programming 1 (Python) • Break & Continue