15日目 - コーヒーマシンのロジックを実装

今回から初級編で得た知識を生かして、現実のコーヒーマシマシン製造に活かせるプログラムを製作します。
コーヒーを抽出するだけでなく、実際にメンテナンスや資源の注入といったプロセスも再現します。

1、現在の状態をリポート
2、製造に必要な資源が足りているかをチェック
3、コインを投入したときの動作
4、コイン導入後のチェック・お釣りの返金のプロセス
5、コーヒーを製造

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でやりたいことが見つかったら再開してみようと思います。次回更新する際には頑張りたいと思います。

この記事が気に入ったらサポートをしてみませんか?