This commit is contained in:
Tanguy Deleplanque
2025-06-23 15:07:08 +02:00
parent 7f9b263baa
commit ad068f268d

98
015/main.py Normal file
View File

@ -0,0 +1,98 @@
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.0,
}
b_is_on = True
def print_report():
print(f"Water: {str(resources['water'])} ml")
print(f"Milk: {str(resources['milk'])} ml")
print(f"Coffe: {str(resources['coffee'])} ml")
print(f"Money: ${str(resources['money'])}")
def check_resources(drink):
for ingredient in MENU[drink]['ingredients']:
if MENU[drink]['ingredients'][ingredient] > resources[ingredient]:
print(f'Sorry there is not enough {ingredient}')
return False
return True
def collect_coins(drink):
coins = {
"quarters": 0.25,
"dimes": 0.10,
"nickels": 0.05,
"pennies": 0.01,
}
print("Please insert coins.")
total_input = 0
for coin in coins:
coins_number = input(f"How many {coin}? ")
total_input += int(coins_number) * coins[coin]
if total_input < MENU[drink]['cost']:
print("Sorry that's not enough money. Money refunded.")
return False
else:
if total_input > MENU[drink]['cost']:
print(f"Here is ${total_input - MENU[drink]['cost']} in change.")
resources['money'] = total_input + resources['money']
return True
def make_drink(drink):
for ingredient in MENU[drink]['ingredients']:
resources[ingredient] = MENU[drink]['ingredients'][ingredient] - resources[ingredient]
print(f"Here is your {drink} ☕️. Enjoy!")
def prepare_drink(drink):
if drink not in MENU.keys():
print("Invalid drink - Try again")
return
if not check_resources(drink):
return
if not collect_coins(drink):
return
make_drink(drink)
while b_is_on == True:
choice = input('What would you like? (espresso/latte/cappuccino):')
match(choice):
case "off":
b_is_on = False
case "report":
print_report()
case _:
prepare_drink(choice)