P ython p rogramming e xercises



Yüklə 1,51 Mb.
Pdf görüntüsü
səhifə47/124
tarix14.05.2023
ölçüsü1,51 Mb.
#113537
1   ...   43   44   45   46   47   48   49   50   ...   124
PythonProgrammingExercisesGentlyExplained

Solution Design 
I have two solutions for this exercise. The simpler one is a counting approach to this exercise. 
First, we create variables to track how much the total price is so far (this starts at 0) and how many 
cups until we get a free cup of coffee (this starts at 8). We then have a while loop that continues 
looping as long as there are still cups of coffee to count. Inside the loop, we decrement the 
numberOfCoffees
argument and check if this is a free cup of coffee. If it is, we reset the number 
of cups to the next free cup back to 8. If it isn't a free coffee, we increase the total price and 
decrement the number of cups to the next free cup. 
After the loop finishes, the function returns the variable tracking the total price. 
Special Cases and Gotchas 
There are several places where you can have an off-by-one error. These errors result from simple 
oversights that lead to slightly wrong calculations. 
First, note that you must buy eight cups of coffee to get the ninth cup for free; you don't get the 
eighth cup for free. Also the free cup of coffee doesn't count towards the eight cups you buy to get a 
free cup. The price of eight cups and nine cups is the same: you can purposefully forego a free cup of 
coffee. 
Now try to write a solution based on the information in the previous sections. If you still have 
trouble solving this exercise, read the Solution Template section for additional hints. 
Solution Template 
Try to first write a solution from scratch. But if you have difficulty, you can use the following 
partial program as a starting place. Copy the following code from https://invpy.com/buy8get1free-
template.py and paste it into your code editor. Replace the underscores with code to make a working 
program: 
def getCostOfCoffee(numberOfCoffees, pricePerCoffee): 
# Track the total price: 
totalPrice = ____ 
# Track how many coffees we have until we get a free one: 
cupsUntilFreeCoffee = 8 
# Loop until the number of coffees to buy reaches 0: 
while numberOfCoffees ____ 0: 
# Decrement the number of coffees left to buy: 
____ -= 1 
# If this cup of coffee is free, reset the number to buy until 
# a free cup back to 8: 
if cupsUntilFreeCoffee == ____: 
____ = 8 


Python Programming Exercises, Gently Explained 
56 
# Otherwise, pay for a cup of coffee: 
else: 
# Increase the total price: 
totalPrice += ____ 
# Decrement the coffees left until we get a free coffee: 
cupsUntilFreeCoffee -= ____ 
# Return the total price: 
return ____ 
The complete solution for this exercise is given in Appendix A and 
https://invpy.com/buy8get1free.py. You can view each step of this program as it runs under a debugger at 
https://invpy.com/buy8get1free-debug/

Yüklə 1,51 Mb.

Dostları ilə paylaş:
1   ...   43   44   45   46   47   48   49   50   ...   124




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin