본문 바로가기
  • Coding & Book
학습단/Python 학습단

10장 예외 (finally + 실습문제)

by 루이3 2023. 7. 26.

오류와 상관 없이 무조건 실행하기 (finally)

  • finally는 try 문에서 오류가 발생하든 말든 try 문을 벗어나는 시점에 무조건 실행됩니다.
  • 작성시 try 와 except로 이루어진 구문의 가장 밑에 정의 해주시면 됩니다.
try:
    실행할 명령1
    실행할 명령2
    ...
 except 오류 종류:
 	예외 처리 명령1
	예외 처리 명령2
    ...
 except 오류 종류2 as 변수명:
 	예외 처리 명령1
	예외 처리 명령2
    ...
finally:
    실행할 명령1
    실행할 명령2
    ....

 


 

 

실습문제: 치킨 주문하기

문제

 

항상 대기 손님이 많은 맛있는 치킨 가게가 있습니다.

손님들의 대기시간을 줄이고자 자동 주문 프로그램을 만들었습니다.

다음 코드를 확인하고 적절한 예외 처리 구문을 추가하세요

 

 

조건

 

1보다 작거나 숫자가 아닌 입력값이 들어올때 ValueError로 처리합니다.

대기손님이 주문할수 있는 최대 주문량은 10마리 입니다.

치킨 소진 시 오류(SoldOutError)를 발생시키고 프로그램을 종료합니다.

 

chicken = 10
waiting = 1

while True:
    print("남은치킨:{0}".format(chicken))
    order = int(input("치킨을 몇마리 주문하시겠습니까?"))
    if order >chicken:
        print("재료 부족")
    else:
        print("대기번호 {0}, {1}마리를 주문하셧습니다.".format(waiting, order))
        waiting +=1
        chicken -= order

 

 


문제 풀어보기

chicken = 10
waiting = 1

class SoldOutError(Exception):
    pass

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(ValueError)
        
    except SoldOutError:
        break

 

'학습단 > Python 학습단' 카테고리의 다른 글

12장 패키지 설치하기(+실습문제)  (0) 2023.07.28
11장 모듈 다루기  (0) 2023.07.27
10장 예외처리하기  (0) 2023.07.25
9-3장(게임 만들기3)  (0) 2023.07.24
3주차 완료입니다.  (0) 2023.07.21