Python - 자판기 Level 2

닉네임유저·2023년 8월 14일

Python - Vending_machine

목록 보기
2/5
post-thumbnail

📌 class 사용


👉 메서드 분리 작업


class Vending_machine():
    menus = {
        "성수": 3000,
        "보리오차": 1500,
        "화이트": 2500,
        "맥주": 2000
    }

    def __init__(self, cash=0):
        self.cash = cash

    def display_menu(self):
        for item, price in self.menus.items():
            print(f'물품 : {item}, 가격 : {price}원 입니다.')

    def insert_cash(self):
        try:
            money = int(input('현금을 넣어주세요 : '))
            self.cash += money
        except ValueError:
            print('입력값이 잘못되었습니다.')

    def select_menu(self):
        select_menu = input('메뉴를 선택하세요 , "p" 를 입력하시면 추가로 현금을 투입합니다. : ')
        if select_menu in self.menus.keys():
            print(f'{select_menu}를 선택하셨습니다.')
            return select_menu
        elif select_menu.lower() == 'p':
            return 'p'
        else:
            print('선택된 메뉴가 없어요')
            return None

    def calculation(self,choice):
        if choice in self.menus.keys():
            price = self.menus[choice]
            if self.cash >= price:
                self.cash = self.cash - price
                print(f'거스름돈은 {self.cash} 이고 선택된 메뉴는 {choice} 입니다.')
                return False
            else:
                print(f'현금이 부족합니다. 거스름돈 : {self.cash} ')
                return True
        else:
            return False

    # def admin_mode(self):
    def run(self):
        print('자판기를 시작합니다.')
        self.insert_cash()
        while True:
            self.display_menu()
            selected = self.select_menu()
            if selected == "p":
                self.insert_cash()
                continue

            if self.calculation(selected):
                cash = input('현금이 부족합니다. 현금을 더 넣으시겠습니까? (넣으려면 "Y", 아니면 아무키나 눌러주십시오): ')
                if cash.lower() == 'y':
                    self.insert_cash()
                    continue
                else:
                    print(f'거스름돈 : {self.cash}입니다. 자판기를 종료합니다.')
                    break

vending_machine = Vending_machine()
vending_machine.run()
profile
이것저것 다해보는 개발자

0개의 댓글