📌 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 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()