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 logical constant
n = 10 while True: print(n, end=' ') n = n - 1 print('Done!')
If you make the mistake and run 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 value
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
breakwhen we have reached the exit condition.
For example, suppose you want to take input from the user until they type
done. You could write:
while True: line = input('> ') if line == 'done': break print(line) print('Done!') # Code: http://www.py4e.com/code3/copytildone1.py
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 an angle bracket. If the user types
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:
> hello there hello there > finished finished > 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.").