How to Restart a Loop in Python?

Problem Formulation

Given a Python loop and a logical condition. How to restart the loop if the condition is met?

for/while ...:
    # ... loop body here ...
    if condition:
        # restart loop
    

Solution 1: Reset While Loop

The while loop checks a condition in order to determine whether the loop body should be executed or not. You can reset the condition to the initial value in order to effectively restart the loop.

In the following example, you use the loop condition i < 3 and increase the value of i in each loop iteration. You can reset the value of the loop variable to i = 0 to restart the loop as soon as the user types in 'r'.

i = 0
while i < 3:
    print('i =', i) # loop body

    # Restart loop logic
    i = i + 1
    if input() == 'r':
        i = 0 # force restart

You use the Python built-in input() function to take the user input in each iteration and return it as a string.

Here’s one example run where the loop is not restarted because the user never used 'r' as an input (every other line is the user input, whereas the second line is the first user input line):

i = 0
alice
i = 1
bob
i = 2
carl

And here’s an example where the loop is restarted in the third iteration due to the 'r' user input:

i = 0
alice
i = 1
bob
i = 2
r
i = 0
alice
i = 1
bob
i = 2
carl

In case you need a quick refresher on how to process user inputs, check out this tutorial:

Solution 2: Nested Restart Loop

An alternative to force a loop to restart if a certain condition is met is to embed the restart loop into an outer while loop to repeatedly execute it until an exit condition is met.

The following code shows how to do this in Python:

restart = True

while restart:
    for i in range(3):
        print('i =', i) # loop body

        # Default: execute once
        restart = False
        
        # Restart loop logic (any restart condition):
        if input() == 'r':
            restart = True
            break # force restart

We create a variable restart that is initially set to True. The outer loop will execute until the restart variable is set to False.

Now, you run the main loop that must be restarted potentially if a certain condition is met. The code uses the restart condition input() == 'r', so if the user types in the character 'r', the loop is restarted.

The restart is accomplished by setting the restart variable to True again, so the outer loop will run once again which means the whole inner for loop is restarted.

This whole cycle is repeated until the restart condition is never met. This automatically sets the restart variable to False which means the outer loop is not executed again, which means that the inner loop is not restarted.

Here’s one example run where the loop is not restarted because the user never used 'r' as an input:

i = 0
alice
i = 1
bob
i = 2
carl

And here’s an example where the loop is restarted in the third iteration due to the 'r' user input:

i = 0
alice
i = 1
bob
i = 2
r
i = 0
alice
i = 1
bob
i = 2
carl

Where to Go From Here?

Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!