티스토리 뷰

Python

치킨장사 에러 출력 프로그램

Programmers 2021. 4. 19. 15:45
반응형

자 "나도코딩"님의 퀴즈퀴즈~!
사실 이렇게 에러를 계속해서 생각하고 사용자가 무슨짓을 할지 예상하는게 또 개발자의 일인 듯 하다.
그냥 시키면 시키는대로 해주시면 좋을텐데... 아무튼 좌~ 만들어본다!

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

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

chicken = 10
waiting = 1 #홀 안에는 현재 만석, 대기번호 1부터 시작
while(True):
      
    try:
        print("[남은 치킨 : {0}".format(chicken))
        order = int(input("치킨 몇 마리 주문하시겠습니까?"))
        if order <= 0:
            raise ValueError

        elif order > chicken: #남은 치킨보다 주문량이 많을때
            print("재료가 부족합니다.")
            print("장사가 끝났습니다.")
            raise SoldOutError("재료가 소진되어 더 이상 주문을 받을 수 없습니다.")
                
        else:
            print("[대기번호 {0}] {1} 마리 주문이 완료되었습니다.".format(waiting, order))
            waiting += 1
            chicken -= order

        if chicken == 0:
            raise SoldOutError("재료가 소진되어 더 이상 주문을 받을 수 없습니다.")

    except ValueError:
        print("잘못된 값이 입력되엇습니다.")

    except SoldOutError as err:
       print("재고가 소진되어 더 이상 주문을 받을 수 없습니다.")
       break

class SoldOutError(Exception):
    def __init__(selfmsg):
        self.msg = msg
    def __str__(self):
        return self.msg

이 SoldOutError 예외처리 코드를 중간에 오류가 발생했을때 바로 대처 할 수있게 한다.
while(True)는 계속해서 코드가 돌수 있도록 해준다.

다음에 필요 하면 이 예제를 통해서 다시 복습하고 예외처리를 할 수있도록 하면 되겠다!
까먹을 거니깐 이렇게 기록해두자!

반응형

'Python' 카테고리의 다른 글

파이썬 기초수업 5월7일  (0) 2021.05.07
파이썬 기초수업 5월6일  (0) 2021.05.06
업무보고 일반 입출력  (0) 2021.04.18
모듈 사용예제(영화표 가격)  (0) 2021.04.17
사이트 자동 로그인 실패2 (feat. Naver)  (1) 2021.04.16
댓글
공지사항