CP104: Notes - Infinite while Loops

An infinite loop occurs when the loop keeps executing and does not stop. Why does this happen?

The following while loops are guaranteed to be infinite:

    
total = 0.0
answer = input("Buy a ticket?")

while answer == "Y":
    p = process_ticket()
    total = total + p

print(f"Total price is $[total:.2f}")

  

This loop is infinite because the loop condition variable, answer, is never changed in the body of the loop. If a loop condition variable is never changed then it cannot cause the loop condition to be falsified.


    
print("Let's play 20 Questions!")
n = 20

while n > 0:
    ask_question()
    n = n + 1

  

This loop is infinite because the loop condition variable, n, is changed in the wrong direction. It never reaches 0, which requires subtraction, not addition.


    
n = int(input("Input a grade from 0 to 100 (-1 to stop): "))

while n >= 0 or n <= 100:
    process_mark(n)
    n = int(input("Input a grade from 0 to 100 (-1 to stop): "))

  

This loop is infinite because the loop condition is incorrect. The conditions have an or between them. Thus, so long as one of the conditions is True, the loop continues to execute. Assume n is -1. The condition n >= 0 evaluates to False, but the condition n <= 100 evaluates to True, and the loop continues. This condition should use an and instead of an or.


    
while True:
    ...

  

This is infinite for obvious reasons. Don't use this type of loop in CP104.


Note: The Executing a Python Program of the Using Eclipse with PyDev explains how to identify and kill an infinite loop in Eclipse.


while Loop Checklist

A while loop is correct when:
All of a loop's condition variables have been initialized. If they are initialized such that the loop condition is True, the loop executes at least once. Otherwise the loop does not execute at all.
All of a loop's condition variables may be changed inside the body of the loop. For a sentinel condition typically the user is asked to update the sentinel value. For a count-controlled loop the count variable is automatically updated by the body of the loop.
For a count-controlled loop the count variable is updated in the correct direction.
Code that is executed only once typically is executed before the loop starts or after the loop ends, as appropriate