P ython p rogramming e xercises



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

Another Solution Design 
The counting solution design, while simple, gets slower the larger the number of purchased 
coffees becomes. If you called getCostOfCoffee(1000000000, 2.50) it could take a couple 
of minutes before the function returns an answer. There’s a more direct way to calculate the total 
price for these large coffee orders. 
First, you can calculate the number of free coffees by integer dividing numberOfCoffees by 9. 
For every nine coffees, one is a free coffee. Any remainder coffees don’t matter for counting the 
number of free coffees, which is why you use the // integer division operator instead of the / regular 
division operator. Store this division result in a variable named numberOfFreeCoffees. 
To calculate the number of paid coffees, subtract numberOfFreeCoffees from 
numberOfCoffees
and store this difference in a variable named numberOfPaidCoffees. (This 
makes sense; coffees are either paid for or free, so the number of paid and free coffees must add up 
to numberOfCoffees). The final value to return is the numberOfPaidCoffees times the 
pricePerCoffee

The benefit of this solution design is that it does three calculations (a division, a subtraction, and 
a multiplication) no matter how big or small numberOfCoffees. Calling 
getCostOfCoffee(1000000000, 2.50)
with this implementation finishes in milliseconds 
rather than minutes. 
Another 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/buy8get1free2-
template.py and paste it into your code editor. Replace the underscores with code to make a working 
program: 
def getCostOfCoffee(numberOfCoffees, pricePerCoffee): 
# Calculate the number of free coffees we get in this order: 
numberOfFreeCoffees = ____ // 9 
# Calculate the number of coffees we will have to pay for in this order: 
numberOfPaidCoffees = numberOfCoffees - ____ 
# Calculate and return the price: 
return ____ * ____ 


Python Programming Exercises, Gently Explained 
57 
The complete solution for this exercise is given in Appendix A and 
https://invpy.com/buy8get1free2.py. You can view each step of this program as it runs under a debugger at 
https://invpy.com/buy8get1free2-debug/


58 

Yüklə 1,51 Mb.

Dostları ilə paylaş:
1   ...   44   45   46   47   48   49   50   51   ...   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