나를 기록하다
article thumbnail
반응형

1. Quiz

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

 

 

1.1. 풀이

<code />
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("재고가 부족합니다.")
<code />
# 결과 [남은 치킨 : 10] 치킨 몇 마리를 주문하시겠습니까?-1 잘못된 값을 입력하였습니다. # 종료 # 재시작 [남은 치킨 : 10] 치킨 몇 마리를 주문하시겠습니까?3 [대기번호 1] 3마리 주문이 완료되었습니다. [남은 치킨 : 7] 치킨 몇 마리를 주문하시겠습니까?2 [대기번호 2] 2마리 주문이 완료되었습니다. [남은 치킨 : 5] 치킨 몇 마리를 주문하시겠습니까?1 [대기번호 3] 1마리 주문이 완료되었습니다. [남은 치킨 : 4] 치킨 몇 마리를 주문하시겠습니까?3 [대기번호 4] 3마리 주문이 완료되었습니다. [남은 치킨 : 1] 치킨 몇 마리를 주문하시겠습니까?2 재고가 부족합니다. # 종료 -> try를 while문 안에 넣어야 함

 

1.2. 답안

<code />
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
<code />
# 결과 [남은 치킨 : 10] 치킨 몇 마리를 주문하시겠습니까?5 [대기번호 1] 5마리 주문이 완료되었습니다. [남은 치킨 : 5] 치킨 몇 마리를 주문하시겠습니까?3 [대기번호 2] 3마리 주문이 완료되었습니다. [남은 치킨 : 2] 치킨 몇 마리를 주문하시겠습니까?4 재고가 부족합니다. [남은 치킨 : 2] 치킨 몇 마리를 주문하시겠습니까?세마리 잘못된 값을 입력하였습니다. [남은 치킨 : 2] 치킨 몇 마리를 주문하시겠습니까?2 [대기번호 3] 2마리 주문이 완료되었습니다. 재고가 소진되어 더 이상 주문을 받지 않습니다.

반응형
profile

나를 기록하다

@prao

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