8.4. Other uses of while

Sentinel Values

Indefinite loops are much more common in the real world than definite loops.

Let’s implement the last of these in Python, by asking the user for prices and keeping a running total and count of items. When the last item is entered, the program gives the grand total, number of items, and average price. We’ll need these variables:

The pseudocode (code written half in English, half in Python) for the body of the loop looks something like this:

while more_items
    ask for price
    add price to total
    add one to count

This pseudocode has no option to set more_items to False, so it would run forever. In a grocery store, there’s a little plastic bar that you put after your last item to separate your groceries from those of the person behind you; that’s how the clerk knows you have no more items. We don’t have a “little plastic bar” data type in Python, so we’ll do the next best thing: we will use a price of zero to mean “this is my last item.” In this program, zero is a sentinel value, a value used to signal the end of the loop. Here’s the code:

There are still a few problems with this program.

Validating Input

You can also use a while loop when you want to validate input; when you want to make sure the user has entered valid input for a prompt. Let’s say you want a function that asks a yes-or-no question. In this case, you want to make sure that the person using your program enters either a Y for yes or N for no (in either upper or lower case). Here is a program that uses a while loop to keep asking until it receives a valid answer. When you run the following code, try typing something other than Y or N to see how the code reacts:

You have attempted of activities on this page
Next Section - 8.5. Glossary