Before you keep reading...
Runestone Academy can only continue if we get support from individuals like you. As a student you are well aware of the high cost of textbooks. Our mission is to provide great books to you for free, but we ask that you consider a $10 donation, more if you can or less if $10 is a burden.
Before you keep reading...
Making great stuff takes time and $$. If you appreciate the book you are reading now and want to keep quality materials free for other students please consider a donation to Runestone Academy. We ask that you consider a $10 donation, but if you can give more thats great, if $10 is too much for your budget we would be happy with whatever you can afford as a show of support.
6.3. Infinite loops¶
An endless source of amusement for programmers is the observation that the directions on shampoo, “Lather, rinse, repeat,” are an infinite loop because there is no iteration variable telling you how many times to execute the loop.
In some loops, like the countdown from last section, we can prove that the loop
terminates because we know that the value of
n is finite,
and we can see that the value of
n gets smaller each time
through the loop, so eventually we’ll reach 0. Other times a loop
is obviously infinite because it has no iteration variable at all.
Sometimes you don’t know it’s time to end a loop until you get half way
through the body. In that case you can write an infinite loop on purpose
and then use the
break statement to jump out of the loop.
This loop is obviously an infinite loop because the
logical expression on the
while statement is simply the
As you can see above, the Code Lens gives you a warning because it runs for over 1000 steps.
If you make the mistake of running this code, you will learn quickly how to
stop a runaway Python process on your system or find where the power-off
button is on your computer. This program will run forever or until your
battery runs out because the logical expression at the top of the loop
is always true by virtue of the fact that the expression is the constant
While this is a dysfunctional infinite loop, we can still use this
pattern to build useful loops as long as we carefully add code to the
body of the loop to explicitly exit the loop using
when we have reached the exit condition.
For example, suppose you want to take input from the user until they
done. You could write:
while True: line = input('Word: ') if line == 'done': break print(line) print ('Done!')
The loop condition is
True, which is always true, so the
loop runs repeatedly until it hits the break statement.
Each time through, it prompts the user with
Word:. If the
break statement exits the
loop. Otherwise, the program echoes whatever the user types and goes back
to the top of the loop. Here’s a sample run:
Word: hello there hello there Word: finished finished Word: done Done!
This way of writing
while loops is common because you can
check the condition anywhere in the loop (not just at the top) and you
can express the stop condition affirmatively (“stop when this happens”)
rather than negatively (“keep going until that happens.”).
Construct a block of code that prints the numbers 1 through 5. Make sure you use correct indentation! Also, there will be three code blocks that aren’t used in the final solution.