02. For and While loops break, continue, range()

If you're coming from another language (don't worry if you're not), you may have seen a for-loop like this:

for (int i = 0; i < N; i++) {
  // do something N times

Or perhaps a while-loop that looks like this:

while (x > 100) {
  // Keep running and decrement x, until done

For Python, instead of iterating until some condition is met, we iterate over a sequence of objects in a list or a string. We call such a data structure that we can iterate through an iterable, and a construct that moves through an iterable the iterator.

We'll look at how to loop through a given number of times with the range() function, but let's first look at how we can loop through lists.

Looping through a sequence

Sometimes we'll want to loop through a sequence (such as a string) and check for some condition. Let's say you want to count the number of vowels in a word.

def vowel_count(word):
  vowel_count = 0
  for c in word
    if c is in 'aeiou':
    print("Successfully looped through all words in paragraph.")
  return vowel_count

Loops may also contain an optional else statement, that executes at the termination of a loop. These clauses, however, won't run if the loop exits by a break or return statement.

In this case, the for statement is our iterator and our word is an iterator.

Looping through a list

Perhaps you want to check how many times a certain word appears in a paragraph. We can first break the paragraph into a list, each containing one word. Then we can loop through this list to see how many times our word matches.

def word_count(word, paragraph):
  word_count = 0
  words_in_paragraph = paragraph.split()
  for paragraph_word in words_in_paragraph:
  if word == paragraph_word:
    print("Successfully looped through all words in paragraph.")
  return word_count

We may just want to print out some items in a list, which we can do in just two lines.

petnames = ['zoey', 'freddy', 'princess']
for pet in petnames:

The while loop

Besides the for-loop, we may use a while-loop, which runs until the expression is evaluated False. Each iteration proceeds, then goes back up top to check the original expression. If it's True, then the code block is repeated; if not, we break out.

while count < 5:
// Keep running until count becomes greater than 5
  // Run if loop ran through successfully (without a break)

Loop controlling: continue and break

In some cases you'll have reached a condition from within a loop that warrants a break or another iteration up from top.


The break keyword is used to exit the smallest containing loop. It completely stops the execution of the current code block and jumps out to the next line outside the for or while loop. This code block will continually repeat until the user types in STOP.

while True:
  print("I love you")
  if input is "STOP":
  input = readline()


Another way to completely break out of a loop is the return statement, which is used from within a function. However, instead of going to the next line, return will take the handle to the position where the function was called. You may also return a variable with the return keyword.


The continue keyword can be used to interrupt the current sequence, and loop back up to the top of the expression. This is to be used in for loops, when you want to move up to the next looping iteration without completing the code block. For example, let's say you want to count the number of multiples of m below some number n:

def count_multiples_below_n(m, n):
count = 0
for current_number in range(n):
    if m % current_number is 0:
    print(m + " is not a multiple of " + current_number)
return count

In the above example we used the range() function. Let's see what this does now!

range() function

To loop through a block of code a predetermined number of times or through a sequence of numbers, we use the range() function. Understanding how the range function and why we use it is an important to understand.

The nifty thing about the range() function is that it generates values as the loop operates. This means that no space is allocated on containing all the values. Let's think about this for a second through an example.

my_inefficient_range = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in my_inefficient_range:

This code seems perfectly normal, and runs flawlessly, but we are wasting a good amount of space storing a list of numbers that we are only using once. By using the range function, we can avoid using up this space, as the numbers will be generated for you as we go through the loop. Thus, on the first iteration, a value of 1 will be yielded to us.

for num in range(10):

Fun with ranges

We can see that the range() function doesn't print out properly since the values are not generated at once. To actually obtian a list, we have to wrap it around the list creator function.

>>> print(range(10))
>>> list(range(10))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Stepping in ranges

Note that the range function is not just limited to consecutative integers starting at 0. We can specify a start position, and even a (negative) step function.

>>> list(range(0, 30, 3))
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
>>> list(range(75, 5, -3))
[75, 72, 69, 66, 63, 60, 57, 54, 51, 48, 45, 42, 39, 36, 33, 30, 27, 24, 21, 18, 15, 12, 9, 6]

Aching back from coding all day?

Inversion Therapy Table

Aching back from coding all day? Try Back Problems

Stretch out your back and relieve your back muscles with inversion therapy. This device counteracts the forces of gravity on the body by decompressing and elongating the spine. By using this product just ten minutes a day, you can be well on your way to improved circulation and posture while relieving muscle aches, back pain and stress.

$$ Check price
119.98119.98Amazon 4.5 logo(1,700+ reviews)

More Back Problems resources

Learn to be a Pythonista!

Learning Python

Learn to be a Pythonista! Try Python

Get a comprehensive, in-depth introduction to the core Python language with this hands-on book. Based on author Mark Lutz's popular training course, this updated fifth edition will help you quickly write efficient, high-quality code with Python. It's an ideal way to begin, whether you're new to programming or a professional developer versed in other languages.

$ Check price
64.9964.99Amazon 4 logo(279+ reviews)

More Python resources