Placement Prep

break, continue, and pass in Python: A Practical Guide

Learn how break, continue, and pass work in Python loops, with verified code examples, the for-else pattern, and placement exam edge cases.

By FACE Prep Team 5 min read
python loops control-flow break-continue-pass placement-prep programming-basics

Python’s break, continue, and pass keywords each change what a loop does next, but only two of the three actually control flow.

What break, continue, and pass Actually Do

A common mistake in placement MCQ sets is to treat all three as equivalent “loop control” tools. The table below shows why that framing is off.

KeywordWhat happensChanges loop flow?
breakExits the innermost enclosing loop immediatelyYes
continueSkips remaining statements in current iterationYes
passDoes nothing at all (syntactic placeholder)No

The last row is the one most tutorials gloss over. pass is not a control statement in any functional sense. It satisfies Python’s requirement that every indented block must contain at least one statement. The loop runs exactly as if pass were not there. This distinction comes up directly in AMCAT and TCS NQT multiple-choice questions.

The break Statement

break stops the innermost enclosing loop and hands control to the first statement after that loop. The Python language reference for break describes it as terminating “the nearest enclosing for or while loop.” Notice the phrase “nearest enclosing.” It matters in nested structures.

numbers = [4, 7, 2, 9, 1]
target = 9

for num in numbers:
    if num == target:
        print("Found", target)
        break

Tracing through:

  • num = 4: condition is False, loop continues
  • num = 7: condition is False, loop continues
  • num = 2: condition is False, loop continues
  • num = 9: condition is True, prints Found 9, then break exits the loop
  • num = 1 is never visited

Output: Found 9

The loop stops the moment it finds the target. Without break, every remaining element would still be checked after a match.

break in nested loops

break exits one loop level only. This trips up students who expect it to escape all loops at once.

for i in range(3):
    for j in range(3):
        if j == 1:
            break
    print(i)

Tracing:

  • i = 0: inner loop runs j = 0 (ok), then j = 1 triggers break on the inner loop. The outer loop then executes print(0).
  • i = 1: same sequence. print(1) runs.
  • i = 2: same sequence. print(2) runs.

Output: 0, 1, 2. The outer loop is completely unaffected by the inner break. If you need to exit multiple levels of nesting, you need a flag variable or a function return.

The continue Statement

continue skips all remaining statements in the current loop iteration and jumps back to the loop header to begin the next iteration. The loop itself keeps running.

Example: skipping odd numbers

for i in range(6):
    if i % 2 != 0:
        continue
    print(i)

Tracing:

  • i = 0: condition is False, prints 0
  • i = 1: condition is True, continue fires, jumps to i = 2
  • i = 2: condition is False, prints 2
  • i = 3: condition is True, continue fires, jumps to i = 4
  • i = 4: condition is False, prints 4
  • i = 5: condition is True, continue fires, loop ends

Output: 0, 2, 4

The distinction from break is worth stating plainly: break kills the loop; continue just skips a lap. For a wider set of beginner loop patterns to practise, see Python basic programs and example programs for practice.

pass: A Placeholder, Not a Control Statement

pass is a no-op. Python requires every indented block to contain at least one statement. pass satisfies that requirement without executing anything.

The label “control statement” for pass is a misnomer that appears in many tutorials, including the original article this page replaces. Consider this example:

for char in 'FACE':
    if char == 'A':
        pass
    print(char)

Tracing:

  • char = 'F': condition is False, prints F
  • char = 'A': condition is True, pass runs (nothing happens), then prints A
  • char = 'C': condition is False, prints C
  • char = 'E': condition is False, prints E

Output: F, A, C, E. Every character is printed. pass changed nothing about loop execution.

Common pass patterns

Three situations where pass is genuinely useful:

# Empty function stub — logic comes later
def calculate_tax(income):
    pass

# Empty class body
class Placeholder:
    pass

# Silently ignore a specific exception
try:
    result = int("abc")
except ValueError:
    pass

In all three cases, pass lets the code run without errors while the rest of the program is being built. Once the actual logic is added, pass is deleted. It is a development tool, not a runtime control mechanism.

The for-else (and while-else) Pattern

This is the feature most students have not encountered. Placement test writers know that.

Python allows an else block on a for or while loop. Per the Python reference for the for statement, the else block runs only when the loop exits normally, meaning without a break statement firing.

When break fires, else does not run

for i in range(5):
    if i == 3:
        break
else:
    print("No break occurred")
  • i = 0, 1, 2: no break
  • i = 3: break fires

The else block does not run. Nothing is printed.

When break never fires, else runs

for i in range(5):
    if i == 10:
        break
else:
    print("No break occurred")

The condition i == 10 is never True for any value in range(5). The loop completes normally.

Output: No break occurred

Practical use: search with a “not found” branch

names = ["Ananya", "Ravi", "Priya"]
search = "Ravi"

for name in names:
    if name == search:
        print(search, "found")
        break
else:
    print(search, "not found")

Tracing:

  • "Ananya": no match
  • "Ravi": match, prints Ravi found, break fires

Output: Ravi found. The else does not run because break fired. If search were "Deepak", break would never fire and else would print Deepak not found. This replaces the common found = False flag pattern with something more idiomatic.

Placement Test Edge Cases

These are the question types that catch students who memorised definitions without tracing through examples.

Edge case 1: What does continue print?

for i in range(1, 5):
    if i == 2:
        continue
    print(i)

Tracing:

  • i = 1: False, prints 1
  • i = 2: True, continue, skips print
  • i = 3: False, prints 3
  • i = 4: False, prints 4

Output: 1, 3, 4. The value 2 is skipped, not replaced.

Edge case 2: break inside while

count = 0
while count < 10:
    if count == 5:
        break
    count += 1
print(count)

Tracing: count increments through 0, 1, 2, 3, 4, then on count = 5 the condition is True and break exits the while loop. print(count) runs after the loop.

Output: 5

Edge case 3: pass inside a loop

for i in range(3):
    pass
print("done")

The loop runs three iterations, each executing pass (which does nothing), then exits normally. print runs after.

Output: done

For conditional structures nested inside loops, the pattern of checking character types uses a similar if/elif structure. See check whether a given character is uppercase, lowercase, number, or special character for that version. Combining conditionals with loop control also appears in Python’s greatest-of-three program. For a real menu-driven program that uses while with break to exit on user choice, the calculator program in Python is worth reading through.

The for-else pattern above (where a break suppresses the else clause entirely) is the kind of construct that trips students on paper-based aptitude rounds. Once you’re past placement prep and want to apply loop control to something actual (an API poller, a data processor, a prompt pipeline), TinkerLLM is where to run this logic against real inputs rather than toy examples. The ₹299 entry is enough to test whether loop-driven automation is something you want to build further.

Primary sources

Frequently asked questions

What does break do in a nested loop in Python?

`break` exits only the innermost loop where it appears. The outer loop continues running normally from its next iteration.

What is the difference between break and continue in Python?

`break` exits the loop entirely. `continue` skips the remaining statements in the current iteration and moves to the next one; the loop itself keeps going.

Is pass a control statement in Python?

`pass` is a no-op placeholder, not a control statement. It satisfies Python's requirement for a non-empty block without changing loop flow in any way.

When does the for-else block run in Python?

The `else` block on a `for` or `while` loop runs only when the loop exits normally, meaning no `break` statement fired during any iteration.

Can continue be used inside a while loop?

Yes. `continue` works the same way in `while` loops as in `for` loops. It skips the rest of the loop body for the current iteration and re-evaluates the while condition.

When should I use pass in Python?

Use `pass` as a placeholder in empty function stubs, empty class bodies, or `except` blocks you plan to fill in later but need the code to run without errors now.

Build AI projects

A self-paced playground for building with LLMs.

TinkerLLM is FACE Prep's sister property. A guided environment for shipping real LLM applications, the kind of project that earns a paragraph on your resume, not a line.

Try TinkerLLM (₹299 launch)
Free AI Roadmap PDF