# 예외처리로 실행할 코드를 try: 로 감싼다.
try:
print("나누셈 계산기")
nums = []
num1 = int(input("첫 번째 숫자를 입력하세요. : "))
num2 = int(input("두 번째 숫자를 입력하세요. : "))
print("{0} / {1} = {2}".format(num1, num2, num1/num2))
# 예외처리할 에러명과 해당 에러 발생시 수행할 행동을 입력한다.
except ValueError:
print("에러! 잘못된 값을 입력하였습니다.")
# err을 통해 기존의 에러 원인을 출력할 수 있다.
except ZeroDivisionError as err: # 에러 원인 출력
print(err)
# division by zero
# Exception은 위에서 일일히 지정하지 않은 나머지 에러들의 묶음을 의미한다.
except Exception as err:
print("알 수 없는 에러가 발생하였습니다.")
print(err)
try:
print("한 자리 숫자 나눗셈 계산기")
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
# 에러를 띄울 상황과 어떤 에러를 띄울 것인지 정한다.
# 두 자리 이상의 숫자 입력 시 ValueError 발생
if num1 >= 10 or num2 >= 10:
raise ValueError
print("{0} / {1} = {2}".format(num1, num2, num1/num2))
# ValueError 발생 시
except ValueError:
print("잘못된 값을 입력하였습니다. 한 자리 숫자만 입력해주세요.")
# 사용자 정의 에러명 입력
# 상속은 Exception
class BigNumberError(Exception):
pass
try:
print("한 자리 숫자 나눗셈 계산기")
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
# 특정 상황에 앞서 사용자 정의 에러명 호출하기
if num1 >= 10 or num2 >= 10:
raise BigNumberError
print("{0} / {1} = {2}".format(num1, num2, num1/num2))
except ValueError:
print("잘못된 값을 입력하였습니다.")
# 사용자 정의 에러 예외처리
except BigNumberError:
print("에러가 발생하였습니다. 한 자리 숫자로 입력해주세요.")
# 에러가 발생하였습니다. 한 자리 숫자로 입력해주세요.
# 에러시 띄울 문구도 정의가 가능하다.
class BigNumberError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try:
print("한 자리 숫자 나눗셈 계산기")
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
# 에러를 띄울 상황과 어떤 에러를 띄울 것인지
if num1 >= 10 or num2 >= 10:
# 에러 문구 입력
raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))
print("{0} / {1} = {2}".format(num1, num2, num1/num2))
except ValueError:
print("잘못된 값을 입력하였습니다.")
except BigNumberError as err:
print("에러가 발생하였습니다. 한 자리 숫자로 입력해주세요.")
print(err)
# 에러가 발생하였습니다. 한 자리 숫자로 입력해주세요.
# 예시) 입력값 : 10, 1
class BigNumberError(Exception):
def __init__(self, msg):
self.msg = msg
def __str__(self):
return self.msg
try:
print("한 자리 숫자 나눗셈 계산기")
num1 = int(input("첫 번째 숫자를 입력하세요 : "))
num2 = int(input("두 번째 숫자를 입력하세요 : "))
# 에러를 띄울 상황과 어떤 에러를 띄울 것인지
if num1 >= 10 or num2 >= 10:
raise BigNumberError("입력값 : {0}, {1}".format(num1, num2))
print("{0} / {1} = {2}".format(num1, num2, num1/num2))
except ValueError:
print("잘못된 값을 입력하였습니다.")
except BigNumberError as err:
print("에러가 발생하였습니다. 한 자리 숫자로 입력해주세요.")
print(err)
finally:
print("계산기를 이용해 주셔서 감사합니다.")
치킨집 대기 손님을 위한 자동 주문 시스템을 제작하였다.
이 시스템의 코드를 확인하고, 적절한 예외처리 구문 넣기.
조건 1
조건 2
남은 치킨 재고는 10마리인 것으로 가정.
재고 소진 시 사용자 정의 에러 [soleOutError] 발생시키고 프로그램 종료시키기
출력은 "재고가 소진되어 더 이상 주문을 받지 않습니다."
문제 코드
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
# 사용자 정의 에러
class soldOutError(Exception):
pass
chicken = 10
waiting = 1
try: # try문으로 감싸기
while(True):
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("잘못된 값을 입력하였습니다.")
except soldOutError:
print("재고가 소진되어 주문 접수를 마감합니다.")