나를 기록하다
article thumbnail
반응형

Quiz

동네에 항상 대기 손님이 있는 맛있는 치킨집이 있습니다.
대기 손님의 치킨 요리 시간을 줄이고자 자동 주문 시스템을 제작하였습니다.
시스템 코드를 확인하고 적절한 예외처리 구문을 넣으시오.

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

[코드]
chicken = 10
waiting = 1 # 홀 안에는 현재 만석. 대기번호 1번부터 시작
while(True):
		print("[남은 치킨 : {0}]".foramt(chicken))
		order = int(input("치킨 몇 마리를 주문하시겠습니까?"))
		if order > chicken: # 남은 치킨보다 주문량이 많을 때
				print("재고가 부족합니다.")
		else:
				print("[대기번호 {0}] {1}마리 주문이 완료되었습니다.".format(waiting, order))
				waiting += 1
			chicken -= order

 

 

풀이

class SoldOutError(Exception):
    def __init__(self, msg):
        self.msg = msg

    def __str__(self):
        return self.msg


try:
    chicken = 10
    waiting = 1  # 홀 안에는 현재 만석. 대기번호 1번부터 시작
    while (True):
        print("[남은 치킨 : {0}]".format(chicken))
        order = int(input("치킨 몇 마리를 주문하시겠습니까?"))
        if order < 1:
            raise ValueError()
        if order > chicken or order > 10:  # 남은 치킨보다 주문량이 많을 때
            raise SoldOutError("재고가 부족합니다.")
        else:
            print("[대기번호 {0}] {1}마리 주문이 완료되었습니다.".format(waiting, order))
            waiting += 1
            chicken -= order
        if chicken == 0:
            break
except ValueError:
    print("잘못된 값을 입력하였습니다.")
except SoldOutError:
    print("재고가 부족합니다.")
# 결과
[남은 치킨 : 10]
치킨 몇 마리를 주문하시겠습니까?-1
잘못된 값을 입력하였습니다.
# 종료

# 재시작
[남은 치킨 : 10]
치킨 몇 마리를 주문하시겠습니까?3
[대기번호 1] 3마리 주문이 완료되었습니다.
[남은 치킨 : 7]
치킨 몇 마리를 주문하시겠습니까?2
[대기번호 2] 2마리 주문이 완료되었습니다.
[남은 치킨 : 5]
치킨 몇 마리를 주문하시겠습니까?1
[대기번호 3] 1마리 주문이 완료되었습니다.
[남은 치킨 : 4]
치킨 몇 마리를 주문하시겠습니까?3
[대기번호 4] 3마리 주문이 완료되었습니다.
[남은 치킨 : 1]
치킨 몇 마리를 주문하시겠습니까?2
재고가 부족합니다.
# 종료 -> try를 while문 안에 넣어야 함

 

답안

class SoldOutErr(Exception):
    pass


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

        if chicken == 0:
            raise SoldOutErr
    except ValueError:
        print("잘못된 값을 입력하였습니다.")
    except SoldOutErr:
        print("재고가 소진되어 더 이상 주문을 받지 않습니다.")
        break
# 결과
[남은 치킨 : 10]
치킨 몇 마리를 주문하시겠습니까?5
[대기번호 1] 5마리 주문이 완료되었습니다.
[남은 치킨 : 5]
치킨 몇 마리를 주문하시겠습니까?3
[대기번호 2] 3마리 주문이 완료되었습니다.
[남은 치킨 : 2]
치킨 몇 마리를 주문하시겠습니까?4
재고가 부족합니다.
[남은 치킨 : 2]
치킨 몇 마리를 주문하시겠습니까?세마리
잘못된 값을 입력하였습니다.
[남은 치킨 : 2]
치킨 몇 마리를 주문하시겠습니까?2
[대기번호 3] 2마리 주문이 완료되었습니다.
재고가 소진되어 더 이상 주문을 받지 않습니다.

반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...