### 예외 처리 (except xxx as yyy:)
try:
print('division calculator')
nums = []
nums.append(int(input('input first valuse : ')))
nums.append(int(input('input second valuse : ')))
#nums.append(int(nums[0] / nums[1]))
print('{0}/{1}={2}'.format(nums[0],nums[1],nums[2]))
except ValueError:
print('잘못된 값을 입력하였습니다.')
except ZeroDivisionError as err1:
print(err1)
except Exception as err2:
print('알 수 없는 에러가 발생하였습니다.')
print(err2)
### 에러 발생시키기 (raise XXXX)
try:
print('한 자리 숫자 나누기 전용 계산기 입니다.')
num1 = int(input('첫 번째 숫자를 입력 : '))
num2 = int(input('두 번째 숫자를 입력 : '))
if num1 >= 10 or num2 >= 10:
raise ValueError
print('{0}/{1}={2}'.format(num1,num2, int(num1/num2)))
except ValueError:
print('잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.')
### 사용자 정의 예외처리 1 (사용자가 에러를 정의)
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, int(num1/num2)))
except ValueError:
print('잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.')
except BignumberError
print('잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.')
### 사용자 정의 예외처리 2 (사용자가 에러를 정의)
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, int(num1/num2)))
except ValueError:
print('잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.')
except BignumberError as err:
print('잘못된 값을 입력하였습니다. 한 자리 숫자만 입력하세요.')
print(err)
### finally
### (try ~ excpet 예외처리 구문에서 정상이던 에러이던 마지막에 출력시킴)
finally:
print('계산기를 이용해 주셔서 감사합니다.')
### 퀴즈 9
'''동네 대기 손님이 있는 치킨집이 있다.
자동 주문 시스템을 제작하였는데, 시스템 코드를 확인하고
적절한 예외처리 구문을 넣으시오.
조건1 : 1 보다 작거나 숫자가 아닌 입력값이 들어올땐 ValueError 로 처리
출력 메세지 : '잘못된 값을 입력하였습니다.
조건2 : 대기 손님이 주문할 수 있는 총 치킨량은 10 마리
치킨 소진될 경우 사용자 정의 에러 (SoldOutError)를 발생시키고
프로그램 종료.
출력 메세지 : '재고가 소진되어 더 이상 주문을 받지 않습니다.'''
# [답안 코드]
class SoldOutError(Exception):
pass
chicken = 10
waiting = 1 # 대기번호 1 부터 시작
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('잘못된 값을 입력하였습니다.')
except SoldOutError:
print('재고가 소진되어 더이상 주문을 받지 않습니다.')
break
* 출처 나도코딩 [파이썬 코딩 무료 강의 (기본편)]
파이썬 코딩 무료 강의 (기본편) - 6시간 뒤면 여러분도 개발자가 될 수 있어요 [나도코딩] (youtube.com)
'[Tools] > Python 뿌시기' 카테고리의 다른 글
[NBcamp Python] For (0) | 2024.10.18 |
---|---|
[Python 문법 8.1] - 모듈, 패키지, _all_, 패키지/모듈 위치 (11) | 2024.09.26 |
[Python 문법 6] - 클래스를 이용한 스타크래프트 만들기 (3) | 2024.09.26 |
[Python 문법 6] - 클래스, __init__, 맴버변수, 매소드, 상속, 다중상속, 메소드 오버라이딩, pass, super (1) | 2024.09.26 |
[Python 문법 5] - 표준입출력, 출력포맷, 파일 입출력, pickle, with (7) | 2024.09.26 |