Skip to content

Instantly share code, notes, and snippets.

@TheCois
Created May 27, 2023 03:36
Show Gist options
  • Save TheCois/93957292c92475c5c054c728335b90d9 to your computer and use it in GitHub Desktop.
Save TheCois/93957292c92475c5c054c728335b90d9 to your computer and use it in GitHub Desktop.
Streamlined version of the code
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