본문 바로가기
프로그램

[파이썬] 문제 : 자판기

by 오디세이99 2023. 11. 22.
728x90
반응형
# 메뉴정보를 딕션너리로 만듬. 메뉴명은 딕셔너리의 key. 값은 리스트의 [단가, 수량] 정보가 됨
menu_dic = {'coffee':[500, 5], 'cookie':[600, 4], 'milk':[700, 6], 'bread':[800, 8]}

# 메뉴 출력을 위한 번호와 메뉴명 문자열이 붙은 리스트 만듬
no_menu_str = [f"{i+1}.{key}" for i, key in enumerate(list(menu_dic.keys()))]
menu_str = '  '.join(no_menu_str)        # 번호와 메뉴명의 리스트를 문자열로 만듬
change = 0                               # 거스름돈 변수 선언
while True:                             # 무한 반복. 계속 돈,구입메뉴,수량등을 입력 받음
    money = int(input('money:'))         # 구입비 입력 받음
    menu = int(input(menu_str + ' : '))          # 선택할 메뉴명을 보이고 번호 입력 받음
    menu_cnt = int(input('구입 수량:'))  # 구입수량 입력 받음
    
    menu_name = list(menu_dic.keys())[menu - 1]   # 메뉴명을 Key의 리스트에서 입력 받음 메뉴번호로 메뉴명 찾음
    unit_price = menu_dic[menu_name][0]  # 메뉴명을 key로 해서 단가정보(리스트의 인덱스 0의 값) 찾음
    price = unit_price * menu_cnt        # 단가와 구입수량으로 구입비용 계산
    
    if money >= price:                   # 입력 받은 돈이 계산된 구입비용보다 크면
        change = money - price           # 거스름돈 계산
        print(f"{menu_name} ({menu_cnt} 개), 거스름돈:{change}")  # 구입한 메뉴와 수량, 거스름돈 출력
        menu_dic[menu_name][1] -= menu_cnt   # 해당 메뉴의 수량에서 구입수량을 뺌
    else:
        print('부족')

    if menu_dic[menu_name][1] <= 0:      # 수량이 붖족하면 무한 반복 종료
        break
 
    con = input('계속(y/n):')            # 계속할 것인지 입력 받음
    if con.upper() == 'N':               # 계속하지 않으면 종료. con변수에 대/소문자로 입력되도 같은 처리
        break

print('판매중지')

728x90
반응형

댓글