[ Python ] 대기 손님의 치킨 요리 시간을 줄이고자 제작한 자동 주문 시스템 코드를 확인하고 적절한 예외처리 구문을 넣으시오.

JooKit 주킷 2021. 3. 7. 23:59
목차 접기
728x90
반응형
# Quiz) 동네에 항상 대기 손님이 있는 맛있는 치킨집이 있습니다.
# 대기 손님의 치킨 요리 시간을 줄이고자 자동 주문 시스템을 제작하였습니다.
# 시스템 코드를 확인하고 적절한 예외처리 구문을 넣으시오.

# 조건1 : 1보다 작거나 숫자가 아닌 입력값이 들어올 때는 ValueError 로 처리 
# 출력 메세지 : "잘못된 값을 입력하였습니다."
# 조건2 : 대기 손님이 주문할 수 있는 총 치킨량은 10마리로 한정
# 치킨 소진 시 사용자 정의 에러[SoldOutError]를 발생시키고 프로그램 종료
# 출력 메시지 : "재고가 소진되어 더 이상 주문을 받지 않습니다."


# ------------------------ 풀이 시작 ----------------------------
# [코드]

class SoldOutError(Exception):
    pass

chicken = 10
waiting = 1 # 홀 안에는 현재 만석. 대기번호 1부터 시작

while(True):
    try:
        print("[남은 치킨 : {0}]".format(chicken))
        order = int(input("치킨 몇 마리 주문하시겠습니까? "))
        if order > chicken: # 남은 치킨보다 주문량이 많을때
            print("재료가 부족합니다.")
        elif order <= 0:
            raise ValueError
        else:
            print("[대기번호 {0}] {1} 마리 주문이 완료되었습니다."
                .format(waiting, order))
            waiting += 1
            chicken -= order

        if chicken == 0:
            raise SoldOutError
    except ValueError:
        print("잘못된 값을 입력하였습니다.")
    except SoldOutError:
        print("재고가 소진되어 더 이상 주문을 받지 않습니다.")
        break
# ------------------------ 풀이 끝 ----------------------------









# ------------------------ 내가 풀어낸 과정 시작 ----------------------------
#[코드]
# class SoldOutError(Exception):
#     def __init__(self, msg):
#         self.msg = msg

#     def __str__(self):
#         return self.msg

# chicken = 10
# waiting = 1 # 홀 안에는 현재 만석. 대기번호 1부터 시작

# while(True):
#     print("[남은 치킨 : {0}]".format(chicken))
#     try:
#         order = int(input("치킨 몇 마리 주문하시겠습니까? "))

#         if chicken == 0:
#             raise SoldOutError("재고가 소진되어 더 이상 주문을 받지 않습니다.")

#         if order < 1:
#             raise ValueError

#         if order > chicken: # 남은 치킨보다 주문량이 많을때
#             print("재료가 부족합니다.")
#         else:
#             print("[대기번호 {0}] {1} 마리 주문이 완료되었습니다."
#                 .format(waiting, order))
#             waiting += 1
#             chicken -= order
#     except ValueError as err:
#         print("잘못된 값을 입력하였습니다.")
#         print(err)
#     except SoldOutError as err:
#         print(err)
#         print("이용해주셔서 감사합니다.")
#         break
# ------------------------ 내가 풀어낸 과정 끝 ----------------------------
728x90
반응형
LIST

'Python' 카테고리의 다른 글

[ Python ] package  (0) 2021.03.08
[ Python ] 모듈 ( module )  (0) 2021.03.08
[ Python ] finally  (0) 2021.03.07
[ Python ] 사용자 정의 예외처리  (0) 2021.03.07
[ Python ] 에러 발생시키기.  (0) 2021.03.07