COMP 141: Project 5

Bottles of a Beverage

You will write a program to sing the children's (or maybe young adult) song about bottles of a beverage on a wall, with a twist. You may use whatever beverage you want in the song, just keep it PG-13; I don't want any parents calling me asking why I'm encouraging underage drinking or anything like that.

What you need to do

You must write a program that will prompt the user to enter how many bottles they wish to start with on the wall, as well as how many bottles to take off the wall at a time. Then print each verse of the song, taking care that the number of bottles on the wall never becomes negative (it may go to zero, but not below). You do not need to worry about making the song grammatically correct (changing "bottles" to "bottle" or "them" to "it." That's a challenge problem --- see below).

You may assume the user will enter a whole number (an integer), not a float or a string. However, as it says in the paragraph above, if they enter a negative integer or zero, you must ask them to re-enter it until they fix it.

You may design your program in any way you see fit, though you should follow the guidelines for good programming that we've discussed in class: using comments, choosing appropriate variable names, making use of functions where appropriate, etc. In particular, be sure to follow the commenting guidelines.

Sample Interaction

(What the user types is in bold.)
How many bottles should we start with? 0
You must start with a positive number of bottles.  Please re-enter the number.
How many bottles should we start with? -88
You must start with a positive number of bottles.  Please re-enter the number.
How many bottles should we start with? 10

How many do we take off the wall each time? -1
You must remove a positive number of bottles from the wall.  Please re-enter the number.
How many do we take off the wall each time? 0
You must remove a positive number of bottles from the wall.  Please re-enter the number.
How many do we take off the wall each time? 1

10 bottles of pop on the wall, 10 bottles of pop.
Take 1 down, pass them around, 9 bottles of pop on the wall.

9 bottles of pop on the wall, 9 bottles of pop.
Take 1 down, pass them around, 8 bottles of pop on the wall.

8 bottles of pop on the wall, 8 bottles of pop.
Take 1 down, pass them around, 7 bottles of pop on the wall.

7 bottles of pop on the wall, 7 bottles of pop.
Take 1 down, pass them around, 6 bottles of pop on the wall.

6 bottles of pop on the wall, 6 bottles of pop.
Take 1 down, pass them around, 5 bottles of pop on the wall.

5 bottles of pop on the wall, 5 bottles of pop.
Take 1 down, pass them around, 4 bottles of pop on the wall.

4 bottles of pop on the wall, 4 bottles of pop.
Take 1 down, pass them around, 3 bottles of pop on the wall.

3 bottles of pop on the wall, 3 bottles of pop.
Take 1 down, pass them around, 2 bottles of pop on the wall.

2 bottles of pop on the wall, 2 bottles of pop.
Take 1 down, pass them around, 1 bottles of pop on the wall.

1 bottles of pop on the wall, 1 bottles of pop.
Take 1 down, pass them around, 0 bottles of pop on the wall.
Another run:
How many bottles should we start with? 8 
How many do we take off the wall each time? 2

8 bottles of pop on the wall, 8 bottles of pop.
Take 2 down, pass them around, 6 bottles of pop on the wall.

6 bottles of pop on the wall, 6 bottles of pop.
Take 2 down, pass them around, 4 bottles of pop on the wall.

4 bottles of pop on the wall, 4 bottles of pop.
Take 2 down, pass them around, 2 bottles of pop on the wall.

2 bottles of pop on the wall, 2 bottles of pop.
Take 2 down, pass them around, 0 bottles of pop on the wall.
Another run:
How many bottles should we start with? 10
How many do we take off the wall each time? 3

10 bottles of pop on the wall, 10 bottles of pop.
Take 3 down, pass them around, 7 bottles of pop on the wall.

7 bottles of pop on the wall, 7 bottles of pop.
Take 3 down, pass them around, 4 bottles of pop on the wall.

4 bottles of pop on the wall, 4 bottles of pop.
Take 3 down, pass them around, 1 bottles of pop on the wall.
Notice how the last run stops at 1 bottle on the wall, because with taking three down each time, we have to stop there because we don't want to have -2 bottles on the wall.

Your code does not have to follow this exact script verbatim, but all the mentioned functionality should be there: asking the user for number of bottles and how many to remove each time, and printing each verse in turn, stopping before hitting a negative number.

What to turn in

Through Moodle, turn in your code as a file called bottles_yourLastName_yourFirstName.py.

Challenge Problems