반응형
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마리 주문이 완료되었습니다.
재고가 소진되어 더 이상 주문을 받지 않습니다.
반응형
'기타 > Python' 카테고리의 다른 글
[Python] pip, pip3, 파이썬 패키지 관리자 사용 방법 (0) | 2023.03.23 |
---|---|
[Python] 모듈 (0) | 2023.03.23 |
[Python] 에러, 예외처리 (0) | 2023.03.23 |
[Python/파이썬] 부동산 프로그램 만들기 실습 - 나도코딩 (1) | 2023.03.23 |
[Python] 스타크래프트 게임 만들기 - 나도코딩 (0) | 2023.03.23 |