15日目 - コーヒーマシンのロジックを実装
今回から初級編で得た知識を生かして、現実のコーヒーマシマシン製造に活かせるプログラムを製作します。
コーヒーを抽出するだけでなく、実際にメンテナンスや資源の注入といったプロセスも再現します。
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 is_resource_sufficient(order_ingredients):
is_enough = True
#指定されたコーヒーに必要な資源の量が、今の資源の量を上回っているかをチェックする
for item in order_ingredients:
#資源が足りない際は処理に進まない
if order_ingredients[item] >= resources[item]:
print( f"Sorry, there's no enough {item}.")
is_enough = False
#資源が足りている際は処理に進む
return is_enough
#投入されたコインが足りているか、釣銭をどうするかを処理する
def process_coins():
print("Please insert coins.")
#クオータ以下の硬貨の数を計算
total = int(input("How many quarters?:")) * 0.25
total += int(input("How many dimes?:")) * 0.1
total += int(input("How many nickles?:")) * 0.05
total += int(input("How many pennies?:")) * 0.01
return total
def is_transaction_successful(money_received, drink_cost):
#金額が足りているときはTrue, 足りない時はFalseを返す
if money_received >= drink_cost:
#釣銭の処理
change = round(money_received - drink_cost, 2)
print(f"Here is ${change} in change.")
return True
else:
print("Sorry, that's not enough money.")
return False
def make_coffee(drink_name, order_ingredients):
#コーヒーを製造。資源が足りない時は製造しない。
for item in order_ingredients:
resources[item] -= order_ingredients[item]
print(f"Here is your {drink_name} ☕️. Enjoy!")
#マシーンに投入された金額を保持するプレイスホルダー
profit = 0
is_on = True
while (is_on == True):
#どのコーヒーが欲しいかを選択
choice = input( "What coffee whould you like?: ( Espresso/ Latte/ Cappucino )" )
#電源を切る選択肢も用意する
if choice == "off":
is_on = False
#製造に必要な資源が足りているかをチェック
elif choice == "report":
print(f"Water: {resources['water']}ml")
print(f"Milk: {resources['milk']}ml")
print(f"Coffee: {resources['coffee']}g")
print(f"Money: ${profit}")
#特定のコーヒーが選ばれた時の動作を記述
else:
drink = MENU[choice]
if is_resource_sufficient(drink["ingredients"]):
#投入されたコインの計算に進む
payment = process_coins()
#投入金額の処理→Trueであればコーヒーを抽出するのに必要な資源があるかどうかを計算
if is_transaction_successful(payment, drink["cost"]):
make_coffee(choice, drink["ingredients"])
完全にモチベーションを失ってしまう
「フロントエンジニアになればいっぱいお金が稼げて、やりたいことが沢山出来る」という動機で学習をしていましたが、突然モチベーションを失ってしまって困っています。しばらく休んでPythonでやりたいことが見つかったら再開してみようと思います。次回更新する際には頑張りたいと思います。
この記事が気に入ったらサポートをしてみませんか?