DEV Community

Cover image for How to fix "SyntaxError: ‘continue’ not properly in loop" in Python
Reza Lavarian
Reza Lavarian

Posted on • Originally published at decodingweb.dev

How to fix "SyntaxError: ‘continue’ not properly in loop" in Python

Update: This post was originally published on my blog decodingweb.dev, where you can read the latest version for a 💯 user experience. ~reza

Python raises “SyntaxError: ‘continue’ not properly in loop” whenever it encounters a continue statement outside a loop – usually within an if block that’s not part of a loop.

Here’s what the error looks like:

File /dwd/sandbox/test.py, line 8
    continue
    ^^^^^^^^
SyntaxError: 'continue' not properly in loop
Enter fullscreen mode Exit fullscreen mode

A continue statement is a control flow feature used within a loop to skip the rest of the current iteration and continue to the beginning of the next one.

The difference between continue and break is that a break statement terminates the loop while continue skips one iteration.

You usually use continue when you reach a specific value and you want to skip the rest of the iteration and proceed to the next iteration. That's pretty much like the C language.

Based on Python syntax, the continue keyword is only valid inside loops - for and while.

In the following example, we iterate over a list of scores and print those above ⭐ 4.5 (inclusive):

scores = [3.5, 3.8, 4.6, 4.5, 4.9, 3.9, 5, 1.2, 3, 4, 4.6]
top_scores = []

for score in scores:
    if (score <= 4.5):
        continue

    top_scores.append(score)

print(top_scores)
# Output: [4.6, 4.9, 5, 4.6]
Enter fullscreen mode Exit fullscreen mode

In the above code, if the score value in the current iteration is less than 4.5, we continue to the next iteration.

How to fix SyntaxError: 'continue' not properly in loop

One of the most common causes of "SyntaxError: 'continue' not properly in loop" is using the continue keyword in an if block that's not part of a loop:

user = {'id': 2, 'is_active': True}

if user:
    if is_active != True:
        continue # 🚫 SyntaxError
Enter fullscreen mode Exit fullscreen mode

There's no point in using a continue statement within an if block. If the condition isn't met, the code isn't executed anyway. The above code would only make sense if it's inside a loop:

users = [
    {'id': 1, 'is_active': True},
    {'id': 2, 'is_active': False},
    {'id': 3, 'is_active': True},
]

for user in users:
    if user['is_active'] == False:
        continue

    print(f'Sending an email to user {user[id]}')
    # Some code here ...

# Output: 
# Sending an email to 1
# Sending an email to 3
Enter fullscreen mode Exit fullscreen mode

If you want to keep the if block for syntactical reasons, you can replace the continue keyword with the pass keyword.

A pass statement does nothing in Python. However, you can always use it when a statement is required syntactically, but no action is needed.

Alright, I think it does it. I hope this quick guide helped you solve your problem.

Thanks for reading.

❤️ You might like:

Top comments (0)