Loops in programming let us execute a set of instructions/block of code continuously until a certain condition is met.
We can also use loops to iterate over a collection of data and perform a similar operation on each item in the data set.
names = ["John", "Jane", "Doe"] for i in names: print(i) """ John Jane Doe """
Above is a Python for loop that iterates over a list of names and prints all the names.
In situations where we want to stop the iteration before getting to the last item or before a given condition is met, we can use the break statement. The break statement will have its own condition – this tells it when to “break” the loop.
In this article, we’ll first see how to use the break statement in for and while loops. Then we’ll look at some of the methods we can use to break nested loops in Python.
How Do You Write a break Statement in Python?
You define the break statement in the loop you want it to terminate. In this section, we’ll see how to use the break statement in for and while loops.
How to Use the break Statement in a for Loop
Here’s an example:
names = ["John", "Jane", "Doe"] for i in names: print(i) if i == "Jane": break
In the code above, we are printing a list of names:
for i in names: print(i)
We then created a new condition which checks when the i variable gets to a name equal to “Jane”. When that condition is met, the loop is required to stop. It stops because the break statement stops the loop when i is “Jane”:
if i == "Jane": break
This is the same as saying: “print all the names and stop once you get to Jane”. So in our console, out of the three names — [“John”, “Jane”, “Doe”] – only “John” and “Jane” will be printed.
We can also do this with numbers:
for i in range(10): print(i)
The code above prints a range of numbers from 0 to 9. But we can stop this loop from printing all the numbers – we can stop at a particular number instead. Here’s how:
for i in range(10): print(i) if i == 5: break
Now the loops stops at 5. So we’ll only see 0, 1, 2, 3, 4 and 5 in the console.
How to Use the break Statement in a while Loop
The example in this section will be similar to the last section’s. We’ll be using a while loop instead.
i = 0 while i < 10: print(i) i += 1
The code above prints a range of numbers from 0 to 9. We’re going to use the break to stop printing numbers when we get to 5.
i = 1 while i < 10: print(i) if i == 5: break i += 1
Just like we did in the last section, we created a new condition: if i == 5 and when this condition is met, the loop is terminated instead of printing all the way to 9.
How to Use the break Statement in a Nested Loop
In this section, we’ll see how to use the break statement in nested loops.
Here is what a nested loop looks like:
for x in range(4): for y in range(4): print(x, y) """ 0 0 0 1 0 2 0 3 1 0 1 1 1 2 1 3 2 0 2 1 2 2 2 3 3 0 3 1 3 2 3 3 """
Nested loops can often be confusing to beginners. So if you’re wondering how we got the output above (commented out in the code), here’s a brief explanation:
range(4) will give us a range of numbers from 0 to 3.
Printing only for x in range(4): will give us 0, 1, 2, 3. But we’re nesting another range of numbers in the loop: for y in range(4):
What the second loop does is duplicate each number of x by the the number of integers it has (in the y range). We have four numbers in the y range – 0, 1, 2, 3.
So for the x range, the first number is 0 and it will appear four times. Each time it appears, it takes one number from the y range; that is: 0 and 0, 0 and 1, 0 and 2, 0 and 3. This applies to the other numbers in the x range.
If you still find this difficult to understand, then try running the code yourself. Try changing the range of each loop to see what happens with the output.
Let’s break the loop using the break statement:
for x in range(4): for y in range(4): if x == 1: break print(x, y) """ 0 3 1 3 2 0 3 3 """
Although the loop in the example above seems to have stopped, having a closer look at the output (commented out above), you’ll realize that the outer loop is still printing out all of its values which isn’t what was intended.
So just using the break statement doesn’t actually break a nested loop. Let’s see some of the workarounds for achieving our desired result.
Using a Boolean Variable
force_break_loop = False for x in range(5): for y in range(5): if x == 2: force_break_loop = True break if force_break_loop: break print(x, y) """ 0 4 1 4 """
In the example above, we are using a boolean variable whose initial value is False. When the loop gets to the intended break point, we set this boolean as True, but that’s not all. We check when the variable is True and then assign the break statement.
Using the Break Statement Twice
for x in range(5): for y in range(5): if x == 3: break if x == 3: break print(x, y) """ 0 4 1 4 2 4 """
In this example, we define two if statements – both returning a break statement to force the loop to break.
While these workarounds may have terminated the loop at a given instance, you’ll notice that the value of the inner loop remains the same every time the loop breaks.
This does not mean that nested loops are bad. But make sure you really need them before implementing them in your logic.
In this article, we saw how to use the break statement to terminate a loop before the loop’s initial condition is met or before an iteration over the items in a data set is complete.
We saw some examples of how you can use the break statement in both for and while loops.
Lastly, we talked about nested loops. We found out that a break statement doesn’t actually stop the loop. This led us to seeing some examples of some of the methods we can use to break a nested loop in Python.