데이터 분석가

파이썬(Python) 커피 자판기 프로그램 본문

파이썬(python) 프로젝트 모음

파이썬(Python) 커피 자판기 프로그램

PlintAn 2023. 3. 24. 18:00

안녕하세요

 

커피자판기

 

 

이번 시간에는 파이썬을 통한 커피 자판기 알고리즘을 짜보도록 하겠습니다

 

 

MENU = {
    "espresso": {"ingredients": {"water": 50,"coffee": 18,},"cost": 1500},
    "latte": {"ingredients": {"water": 200,"milk": 150,"coffee": 24},"cost": 2500},
    "cappuccino": {"ingredients": {"water": 250,"milk": 100,"coffee": 24},"cost": 4000}}

profit = 0 #받은 돈
resources = {
    "water": 300,
    "milk": 200,
    "coffee": 100,
} #재료

메뉴는 에소프레소, 라떼, 카푸치노가 있고, 그에 대한 재료는 물, 우유, 커피(원두)가 필요합니다.

 

def is_resource_sufficient(order_ingredients): #충분한 재료가 있는가?
    """주문 가능하면 True, 충분한 재료가 없을 떄 Flase"""
    for item in order_ingredients:
        if order_ingredients[item] > resources[item]:
            print(f"​ 죄송하지만 충분한 {item}이 없습니다.")
            return False #취소
    return True #주문접수

def process_coins(): #자판기 커피이기에 동전만 취급합니다
    print("동전을 넣어주세요")
    total = int(input("10원짜리 몇개 있습니까?")) * 10
    total += int(input("100원짜리 몇개 있습니까?")) * 100
    total += int(input("500원짜리 몇개 있습니까?")) * 500
    return total

 

1. def is_resource_sufficeint(order_ingredients): 

고객이 자판기에서 주문을 하면 그에 대한 재료가 있는지 먼저 확인합니다.

확인 하는 방법은 자판기 내에 있는 resources를 확인하여 True(주문접수) or False(취소) 반환

 

2. def process_Coins(): 

() 공백을 하고 input 함수로 받은 동전의 합을 total로 받아

return으로 total값을 받습니다.

 

def is_transaction_successful(money_received, drink_cost):
    """결제 성공시 True, 잔돈이 없을 경우 Fasle"""
    if money_received >= drink_cost:
        change = round(money_received - drink_cost, 2)
        print(f"잔돈 {change}원 여기 있습니다.")
        global profit
        profit += drink_cost
        return True
    else:
        print("잔돈이 여유가 없습니다. 돈을 받으십시오.")
        return False


def make_coffee(drink_name, order_ingredients):
    """주문된 메뉴에 대한 재료 소진 양을 갱신합니다."""
    for item in order_ingredients:
        resources[item] -= order_ingredients[item]
    print(f"주문한 커피 여기 있습니다 {drink_name}  ☕️. 즐거운 하루 보내세요 ! ")

3. def is_transaction_successful(money_received, drink_cost):

  2번 def 식으로 받은 돈이 충분하다면 주문을 진행, 투입한 돈을 부족하다면 반환합니다

 

4. def make_coffee(drink_name, order_ingredients):

주문으로 인한 resource물, 우유, 커피 보유양에서 소진양을 갱신하고

주문한 커피를 제공합니다.

 

is_on = True

while is_on:
    choice = input("​ 주문해주세요 (espresso/latte/cappuccino): ").lower()
    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()
            if is_transaction_successful(payment, drink["cost"]):
                make_coffee(choice, drink["ingredients"])

5. while is_on: 문은

추가로 주문할 지를 물어보는 반복문입니다. 

그리고 'report' 보고일 경우 현재 자판기에 남은 재료수익을 반환합니다.

 

 

 

이번 시간에는 자판기 커피 프로그램을 만들어 보았는데요

 

다음 시간에는 여기서 조금 더 발전된 키오스크 자판기 프로그램 코드를 짜보도록 하겠습니다 !

 

Comments