Coffee Machine Programme

 Coffee Machine Program Requirements 

1. Prompt user by asking “What would you like? (espresso/latte/cappuccino):” 

a. Check the user’s input to decide what to do next.

 b. The prompt should show every time action has been completed, e.g. once the drink is dispensed. The prompt should show again to serve the next customer. 



2. Turn off the Coffee Machine by entering “off” to the prompt. 

a. For maintainers of the coffee machine, they can use “off” as the secret word to turn off the machine. Your code should end execution when this happens.

 


3. Print report. 

a. When the user enters “report” to the prompt, a report should be generated that shows the current resource values. e.g. Water: 100ml Milk: 50ml Coffee: 76g Money: $2.5 



4. Check resources sufficient? 

a. When the user chooses a drink, the program should check if there are enough resources to make that drink. 

b. E.g. if Latte requires 200ml water but there is only 100ml left in the machine. It should not continue to make the drink but print: “Sorry there is not enough water.” 

c. The same should happen if another resource is depleted, e.g. milk or coffee. 



5. Process coins. 

a. If there are sufficient resources to make the drink selected, then the program should prompt the user to insert coins. 

b. Remember that quarters = $0.25, dimes = $0.10, nickles = $0.05, pennies = $0.01 c. Calculate the monetary value of the coins inserted. E.g. 1 quarter, 2 dimes, 1 nickel, 2 pennies = 0.25 + 0.1 x 2 + 0.05 + 0.01 x 2 = $0.52 


6. Check transaction successful?

 a. Check that the user has inserted enough money to purchase the drink they selected. E.g Latte cost $2.50, but they only inserted $0.52 then after counting the coins the program should say “Sorry that's not enough money. Money refunded.”. 

b. But if the user has inserted enough money, then the cost of the drink gets added to the machine as the profit and this will be reflected the next time “report” is triggered. E.g. Water: 100ml Milk: 50ml Coffee: 76g Money: $2.5 

c. If the user has inserted too much money, the machine should offer change. E.g. “Here is $2.45 dollars in change.” The change should be rounded to 2 decimal places. 




7. Make Coffee. 

a. If the transaction is successful and there are enough resources to make the drink the user selected, then the ingredients to make the drink should be deducted from the coffee machine resources. E.g. report before purchasing latte: Water: 300ml Milk: 200ml Coffee: 100g Money: $0 Report after purchasing latte: Water: 100ml Milk: 50ml Coffee: 76g Money: $2.5 

b. Once all resources have been deducted, tell the user “Here is your latte. Enjoy!”. If latte was their choice of drink.









#########  SOLUTION ############

MENU = {
"espresso": {
"ingredients": {
"water": 50,
"coffee": 18,
},
"cost": 1.5,
},
"latte": {
"ingredients": {
"water": 200,
"milk": 150,
"coffee": 24,
},
"cost": 2.5,
},
"cappuccino": {
"ingredients": {
"water": 250,
"milk": 100,
"coffee": 24,
},
"cost": 3.0,
}
}

resources = {
"water": 300,
"milk": 200,
"coffee": 100,
"money":0
}



def coffee_machine():
if a=="report":
for key in resources:
print(key.title(),end=": ")
print(resources[key])



def pay():
print("Please insert coins.")
a=int(input("How many quarters?"))
b=int(input("How many dimes?"))
c=int(input("How many nickels?"))
d=int(input("How many pennies?"))

return 0.25*a+0.1*b+0.05*c+0.01*d


for key in MENU:
if a==key:

# if resources["water"]-MENU[key]["ingredients"]["water"]<=0:

# print("Sorry there is not enough water.")
# break

# elif resources["milk"]-MENU[key]["ingredients"]["milk"]<=0:

# print("Sorry there is not enough milk.")
# break

# elif resources["coffee"]-MENU[key]["ingredients"]["coffee"]<=0:

# print("Sorry there is not enough coffee.")
# break

for items in MENU[key]["ingredients"]:
if resources[items]-MENU[key]["ingredients"][items]<=0:
print("Sorry there is not enough "+items+".")
break


paid=pay()
if paid<MENU[key]["cost"]:
print("Sorry that's not enough money. Money refunded.")
else:
for key1 in MENU[key]["ingredients"]:
resources[key1]=resources[key1]-MENU[key]["ingredients"][key1]

change = round(paid-MENU[key]["cost"],2)

print("Here is $"+str(change)+" in change.")
print("Here is your "+a+" ☕️. Enjoy!")
        resources["money"]=resources["money"]+MENU[key]["cost"]



a=input("What would you like to have?(espresso/latte/cappuccino):").lower()

while (a!='off'):
coffee_machine()
a=input("What would you like to have?(espresso/latte/cappuccino):").lower()



https://replit.com/join/dltwdxbdqd-sayanbaidya







Comments

Popular posts from this blog

Sum of Even Numbers till N

Find the Runner-Up Score!

Print All Substrings