Loops are our way to repeat code. We can repeat code a set number of times, or until a condition is met.
The simplest loop is an infinite loop. It will run forever, or until we break out of it.
while True:
print("Hello")This will print "Hello" forever. The user can break out of the loop by pressing Ctrl + C or by closing the terminal. To break out of the loop, we can use the break keyword (more on break and continue keywords later)
print("Starting loop")
counter = 0
while True:
print("Hello")
counter = counter + 1
break
print("Loop ended after " + str(counter) + " iterations because of the break keyword")But while loops are not very useful if we can't change the condition. We can use a variable to control the loop.
print("Starting loop")
counter = 0
while counter < 10:
print("Hello")
counter = counter + 1
print("Loop ended after " + str(counter) + " iterations")We have to remember to change the variable inside the loop, or we will get an infinite loop.
print("Starting loop")
counter = 0
while counter < 10:
print("Hello")
# We forgot to change the counter variable
print("This will never be printed, we're stuck in an infinite loop")Also, we have to note that if the condition isn't met before the loop starts, the loop will never run.
print("Starting loop")
counter = 10
while counter < 10:
print("We will never get here")
counter = counter + 1We can use loops to iterate over a list, or any other ordered collection (including str).
example_list = ["Hello", "World", "Foo", "Bar"]
index = 0
while index < len(example_list):
one_item = example_list[index]
print(one_item)
index = index + 1But this is a bit cumbersome. We can use a for loop instead
A for loop is a bit different from a while loop. It will iterate over a collection, and we don't have to keep track of the index (or the length) ourselves.
example_list = ["Hello", "World", "Foo", "Bar"]
for one_item in example_list:
print(one_item)This will print the same as the previous example.
Similarly to while, if the collection is empty, the loop will never run.
example_list = []
for one_item in example_list:
print("We will never get here")The break keyword will break out of the loop. It will stop the loop from running, and continue with the code after the loop.
print("Starting loop")
counter = 0
while True:
print("Hello")
counter = counter + 1
break
print("Loop ended after " + str(counter) + " iterations because of the break keyword")Usually, we will want to break out of a loop only if a condition is met (otherwise the loop will only run once). We can use the break keyword inside an if statement.
print("Starting loop")
counter = 0
while True:
print("Hello")
counter = counter + 1
if counter == 10:
break
print("Loop ended after " + str(counter) + " iterations because of the break keyword")There will be times when we want to skip only one iteration of the loop, and continue with the next one (without using break to end the loop). We can use the continue keyword to do that.
print("Starting loop")
counter = 0
while True:
counter = counter + 1
if counter % 2 == 0:
continue
print("Hello")
if counter == 10:
breakbreak and continue can be used in both while and for loops.
But be careful, as soon as we hit a line with break or continue, the loop will stop running that block of code (entirely for break, and only the current iteration for continue).
print("Starting loop")
counter = 0
while True:
counter = counter + 1
if counter % 2 == 0:
continue
print("Hello")
if counter == 10:
break
print("This will never be printed")Even though we used break, this is an infinite loop. This is because even numbers will be skipped with continue, so counter == 10 will never be true. The skip will happen before the print statement and before the condition is checked, so the loop will never end.


