[제로베이스_데이터 취업 스쿨 16기] 6일차(6/7 ~ 8)

jumee·2023년 6월 9일
0
post-thumbnail

파이썬의 예외 처리 구문

파이썬의 에러 및 예외 구문은 다양하게 발생한다. 아래 그림은 대표적인 파이썬의 예외 발생 클래스들이다.

try ~ except

🔻 기본 구문 🔻

try:
	수행 코드
except:
	예외 발생시 수행할 코드

특정 코드를 수행했을 때, 예외가 발생한다면 except 구문 내 코드를 실행하게 된다.

예제 코드

# 숫자가 아닌 자료형이 입력되면 예외 처리를 하는 프로그램
nums = []

n = 1
while n < 6:
    try:
        num = int(input('숫자를 입력하세요: '))
    except:
        # 위의 결과에서 문제가 발생했을 경우
        print('예외 발생!')
        continue

    nums.append(num)
    n += 1 # 5 + 1 = 6 이 되었을 경우, while 문을 빠져나올 수 있기 때문에 전체 데이터 개수는 5개가 된다.

print(f'nums: {nums}')
n1 = 10; n2 = 0

try: #아래 구문을 실행했을 때 
    print(n1 / n2)
except: #예외가 발생하면 아래를 실행
    print('예상치 못한 예외가 발생했습니다.')
    print('다른 프로그램 실행에는 문제가 없습니다.')

print(n1 * n2)
print(n1 + n2)
print(n1 - n2)

# 예상치 못한 예외가 발생했습니다.
#다른 프로그램 실행에는 문제가 없습니다.
#0
#10
#10

try ~ except ~ else

예외가 발생했을 때 수행할 구문과 예외가 발생하지 않았을 때 수행할 구문을 모두 표현할 때 사용한다.

🔻 기본 구문 🔻

try:
	수행 코드
except:
	예외 발생 시 수행할 코드
else:
	예외 발생하지 않았을 때 수행할 코드

예제 코드

  1. 짝수 5개를 리스트에 담는 프로그램
nums = []
n = 1

while n < 6: # n 이 6개 미만일 때까지만 수행
	
	try:
		num = int(input('숫자를 입력하세요: '))
	
	except:
		print('예외 발생!')
		continue
	
	else:
		if num % 2 == 0: # 입력한 숫자가 짝수라면
			nums.append(num)
			n += 1
		else: # 홀수라면
			print('짝수를 입력해주세요')
			continue
  1. 숫자 5개를 입력받아 짝수, 홀수, 실수로 구분해서 각각을 리스트에 저장하는 프로그램
odd = []
even = []
number = []

n = 1  # 전체 받은 데이터 개수를 세어줄 값 초기화

while n < 6:
    try:
        value = float(input('input number : '))

    except:
        print('exception raise!!')
        print('input number again!!')
        continue
    else: # 들어온 입력에 int() 해줬을 때 오류가 발생하지 않았다면 -> 실수 or 정수
        # 실수일 경우
        if value - int(value) != 0:
            print('float number!')
            number.append(value)
            n += 1
	      # 정수일 경우
        else:
						if int(value) % 2 != 0: # 홀수일 경우
	            print('odd number!')
	            odd.append(int(value))
	            n += 1
						else: 
	            print('even number!') # 짝수일 경우
	            even.append(int(value))
	            n += 1


print(f'eveList : {even}')
print(f'oddList : {odd}')
print(f'floatList : {number}')

finally

예외 발생 여부와 상관없이 항상 실행하는 구문을 추가할 때 사용한다.

🔻 기본 구문 🔻

예제 코드

  1. 숫자 5개를 입력받아 짝수, 홀수, 실수와 입력한 모든 데이터를 각각 출력하는 프로그램
odd = []
even = []
number = []
datalist = []

n = 1
while n < 6:
    try:
        inputVal = input('input number : ')
        num = float(inputVal)
    except: # 입력한 값이 문자일 경우
        print('exception raise!!')
        print('input number again!!')
        continue
    else:
        if num - int(num) != 0: # 실수일 경우
            print('float number!')
            number.append(num)
        else:
            if num % 2 == 0: # 짝수일 경우
                print('even number!')
                even.append(int(num))
            else: # 홀수일 경우
                print('odd number!')
                odd.append(int(num))
        n += 1
    finally:
        datalist.append(inputVal)

print(f'eveList : {even}')
print(f'oddList : {odd}')
print(f'floatList : {number}')
print(f'dataList : {datalist}')

Exception 클래스

예외를 담당하는 내장 클래스다. 예외가 발생했을 때, 어떤 이유로 에러가 났는지를 표시하고 싶을 경우 사용한다.

일반적으로 Exception as e 처럼 별칭을 사용한다.

🔻 기본 구문 🔻

예제 코드

n1 = int(input('input number1 : '))
n2 = int(input('input number2 : '))

try:
    print(f'n1 / n2 = {n1 / n2}')
except Exception as e:
    print('0으로 나눌 수 없습니다.')
    print(f'exception error : {e}')

print(f'n1 + n2 = {n1 + n2}')
print(f'n1 * n2 = {n1 * n2}')
print(f'n1 - n2 = {n1 - n2}')

raise

강제로 예외를 발생시킬 수도 있다. 이럴 경우, raise함수를 사용한다.

예제 코드

def divCalculator(n1,n2):
	
	if n2 != 0:
		print(f'{n1} / {n2} = {n1 / n2}')
	else:
		raise Exception('0으로 나눌 수 없습니다.') # 강제로 예외를 발생(만들어)시킴


num1 = int(input('input number1: '))
num2 = int(input('input number2: '))

try:
	divCalculator(num1, num2)
except Exception as e:
	print(f'Exception : {e}') # e안에 '0으로 나눌 수 없습니다.'가 들어가게 된다. 

🔜 파이썬 중급 문제 풀이

여기까지 파이썬의 중급 문법들을 다뤄봤다. 다음에는 본격적으로 중급 문제 풀이를 진행하고, 기초 수학을 학습한 내용들을 정리해보겠다.

profile
공부한 내용들에 대해 끄적이는 공간입니다💎

0개의 댓글