Suppose you want to iterate using a loop, but you don’t know the exact collection over which to do the iterating? For example, what if we want to iterate over all even numbers between 0 and n (where n is even and a variable)?

We can’t create a collection of all of the even numbers from 0 to n because it isn’t well-defined. Also if n were a 1000, writing out this collection would be very tedious to say the least. However, we have recourse, which is a while loop:

# Assume n is even.
while n >= 0:
print(n)
n -= 2


A while loop can be thought of as an if statement that keeps being checked over and over again until it finally becomes false. Each time the conditional is true, we execute the code associated with that conditional.

Note that it’s very important that the conditional will become false at some point. In this case, we are subtracting 2 from n each time (-= is known as the decrement operator). Thus, there will come a time when n >= 0 is false because n is negative. At that point, we will exit the while loop.

Suppose we forgot the decrement line and just wrote this:

while n >= 0:
print(n)


Unless n < 0 to begin with, we would print n forever because n >= 0 is always true!

Finally, we should point out that although for loops and while loops are somewhat different, we can in fact write for loops as while loops in some cases:

for x in ["a", "b", "c"]:
print(x)


Here is an equivalent representation as a while loop:

l = ["a", "b", "c"]
index = 0

while index < len(l):
print(l[index])
index += 1


In both cases, we are just printing out the letters "a", "b", and "c". The while loop example works by incrementing the index until it exceeds the last possible index for a list, which is len(l) - 1. The index of the first element is 0 (zero-indexing).

And that’s while loops! Let’s practice what we have learned so far:

• Create a while loop to iterate over the numbers 1 through 5, and for each value, print out its value, and then print out its value added with 1. (solution)

• Create a function that returns a list of all odd numbers between 0 and n (inclusive). Assume that n is always odd (solution).

• Use while loops to create a rudimentary multiplication algorithm between two integers a and b via repeated addition. (solution)

If you feel that you have mastered while loops, feel free to move on to the next lesson.