Created
May 27, 2023 03:36
-
-
Save TheCois/93957292c92475c5c054c728335b90d9 to your computer and use it in GitHub Desktop.
Streamlined version of the code
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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, | |
} | |
def payment(ordered_item): | |
print(f'Please insert coins. The cost is ${MENU[ordered_item]["cost"]}0') | |
quarters = int(input('How many quarters? ')) | |
dimes = int(input('How many dimes? ')) | |
nickels = int(input('How many nickels? ')) | |
pennies = int(input('How many pennies? ')) | |
total_coins = quarters * .25 + dimes * .10 + nickels * .05 + pennies * .01 | |
price = (MENU[ordered_item]["cost"]) | |
if total_coins >= price: | |
change = total_coins - price | |
print(f'Thank you. Your change is ${change}') | |
print(f'Here is your {ordered_item} ☕️. Enjoy.') | |
else: | |
print(f"Sorry that's not enough money. Money refunded.") | |
price = 0 | |
return price | |
def check_single_ingredient(ordered_item, name): | |
ret = True | |
if name in MENU[ordered_item]["ingredients"] and resources[name] < MENU[ordered_item]["ingredients"][name]: | |
print(f'Sorry, there is not enough {name}.') | |
ret = False | |
return ret | |
def check_ingredients(ordered_item): | |
return check_single_ingredient(ordered_item, "water") \ | |
and check_single_ingredient(ordered_item, "coffee") \ | |
and check_single_ingredient(ordered_item, "milk") | |
def update_single_ingredient(ordered_item, name): | |
if name in MENU[ordered_item]["ingredients"]: | |
new_amount = resources[name] - MENU[ordered_item]["ingredients"][name] | |
resources[name] = new_amount | |
def update_ingredients(ordered_item): | |
update_single_ingredient(ordered_item, "water") | |
update_single_ingredient(ordered_item, "coffee") | |
update_single_ingredient(ordered_item, "milk") | |
def is_order(request): | |
return request == "latte" or request == "espresso" or request == "cappuccino" | |
def coffee_order(): | |
keep_running = True | |
total_earned = 0 | |
while keep_running: | |
user_request = (input(f"What would you like? (espresso/latte/cappuccino): ")) | |
if is_order(user_request): | |
if check_ingredients(user_request): | |
transaction = payment(user_request) | |
if transaction > 0: | |
total_earned = total_earned + transaction | |
update_ingredients(user_request) | |
elif user_request == "report": | |
print(f'Water: {resources["water"]}ml \nMilk: {resources["milk"]}ml \nCoffee: {resources["coffee"]}g ' | |
f'\nMoney: ${total_earned}') | |
elif user_request == "off": | |
keep_running = False | |
coffee_order() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment