How to Stop or Exit a Loop in Python ?

Introduction

In Python, there are several ways to stop or exit a loop depending on your goal. Whether you want to break just the current loop, exit multiple nested loops, or stop the entire program, Python provides multiple tools to control loop execution.

Break a Single Loop

break: Stop the loop immediately

Use break when you want to exit the current loop right aw

Example

1
2
3
4
for i in range(10):
    if i == 5:
        break
    print(i)

Stops when i reaches 5.

return: Stop the loop AND exit the function

Useful when the loop is inside a function.

Example:

1
2
3
4
5
def find_value(nums, target):
    for n in nums:
        if n == target:
            return "Found!"
    return "Not found"

raise: Stop the loop by raising an exception

Used when you want to signal something unexpected.

Example:

1
2
3
for x in data:
    if x < 0:
        raise ValueError("Negative value!")

sys.exit(): Stop the loop and terminate the program

Only use for scripts that you want to exit completely.

1
2
3
4
5
6
import sys

for i in range(10):
    if i == 3:
        sys.exit()
    print(i)

Use a condition that makes the loop stop**

For while loops:

1
2
3
4
5
running = True
while running:
    x = input("Type stop: ")
    if x == "stop":
        running = False

Break **out a nested loop

Use a flag variable**

Simplest and most common.

1
2
3
4
5
6
7
8
9
stop = False

for i in range(5):
    for j in range(5):
        if j == 2:
            stop = True
            break    # breaks inner loop
    if stop:
        break        # breaks outer loop

Use return (if inside a function)**

Stops all loops immediately.

1
2
3
4
5
6
7
def search():
    for i in range(5):
        for j in range(5):
            if i == 3 and j == 2:
                return (i, j)   # exits both loops

print(search())

Raise an exception to escape all loops**

Use this when you really want to jump out multiple levels.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
class BreakLoop(Exception):
    pass

try:
    for i in range(5):
        for j in range(5):
            if j == 3:
                raise BreakLoop
except BreakLoop:
    pass

Rewrite loops using a function and return (cleanest)**

1
2
3
4
5
6
def find_value(matrix):
    for i in range(len(matrix)):
        for j in range(len(matrix[i])):
            if matrix[i][j] == 99:
                return i, j
    return None

Recommended

If your code is inside a function: use return.
If it’s not: use a flag.

Stop Code Execution with sys.exit()

sys.exit() is used when you want to stop the entire Python program, not just a loop.
It raises a SystemExit exception, which ends execution unless caught.

This is useful when:

  • you detect a fatal error and want to halt the script
  • a loop reaches a condition where continuing makes no sense
  • your program depends on an external resource that fails

Example: Stop the script from inside a loop

1
2
3
4
5
6
7
import sys

for i in range(10):
    if i == 3:
        print("Stopping program...")
        sys.exit()   # Entire script stops here
    print(i)

Output:

1
2
3
4
0
1
2
Stopping program...

No more code is executed after sys.exit().

Example: Stop program with a message

1
2
3
4
5
6
import sys

filename = "data.csv"

if not filename.endswith(".csv"):
    sys.exit("Error: The input file must be a CSV file.")

Output

1
`sys.exit("message")` prints the message and then exits.

Example: Catching the exit (optional)

You can catch SystemExit if you need custom cleanup.

1
2
3
4
5
6
import sys

try:
    sys.exit("Program stopped.")
except SystemExit as e:
    print("Exit caught:", e)

When to use sys.exit()

Use it when:

  • You want the entire script to stop
  • Loops should not continue under certain conditions
  • A critical check fails (wrong file, missing data, invalid config)

Avoid using it: In libraries meant to be imported by other code (raising SystemExit can unexpectedly kill the host app)

References