[강의 요약]
[Ch 03. 파이썬 중급] 강의 수강
28_예외란?부터 30_try ~ except ~ else까지 강의 수강하였음
🐢 100일 챌린지 🔥 : [▰▰▰▰▰▰▰▰▰ ] 18/100일 (18%)
바빠서 울면서 적는 중
[예외란?]
- 예외란?
- 문법적인 오류는 없지만, 실행 중에 발생하는 예상치 못한 문제를 말함
- 예외가 발생하면 프로그램은 즉시 멈추고 에러 메시지 출력
- 예외 처리를 하지 않으면 프로그램이 중단됨
▶ 예외 발생 예시
def div(n1, n2):
print(n1 / n2)
div(10, 2) # 정상 출력 → 5.0
div(10, 0) # 예외 발생! → ZeroDivisionError
ZeroDivisionError: division by zero
0으로 나누는 상황은 문법상 문제는 없으나
실행 도중 오류가 발생하는 전형적인 예
▶ 예외 종류
▶ 예제 코드 : 예외 예시
print(10 / 0) # ZeroDivisionError
int('Hello') # ValueError
tempList = [1, 2, 3]
print(tempList[5]) # IndexError
# 잘못된 들여쓰기 (IndentationError)
# if True:
# print('Hello')
# print('World')
open('no_such_file.txt', 'r') # FileNotFoundError
▶ 예외 처리 방법
예외가 발생해도 프로그램이 멈추지 않도록 try ~ except 구문을 사용
try:
print(10 / 0)
except:
print('예외 발생! 확인해주세요.')
# 출력 결과
# 예외 발생! 확인해주세요.
▶ 요약
- 예외란?
- 실행 중 발생하는 오류
- 왜 중요할까?
- 프로그램 중단을 방지하기 위해 예외 처리가 필요해서
- 어떻게 처리할까?
- try ~ except 구문으로 안전하게 처리
- 예시는 무엇이 있을까?
- ZeroDivisionError, ValueError, IndexError 등
[예외 처리]
▶ 예외 종류
- ZeroDivisionError : 0으로 나눴을 때
- ValueError : 자료형이 안 맞을 때 (int('hello'))
- IndexError : 리스트 인덱스 범위 초과
- IndentationError : 들여 쓰기 문제
- FileNotFoundError : 파일 경로 오류
▶ 예외 처리 문법
n1 = 10
n2 = 0
try:
print(n1 / n2)
except:
print('예상치 못한 예외가 발생했습니다.')
print('다른 프로그램 실행에는 문제 없습니다.')
print(n1 * n2)
print(n1 - n2)
print(n1 + n2)
try ~ except 구문으로 예외 발생을 막을 수 있음
예외가 발생해도 프로그램 전체 실행을 멈추지 않고 정상적으로 흐름을 이어감
▶ 실습 코드 : 숫자 5개 받기
nums = []
n = 1
while n < 6:
try:
num = int(input('input number: '))
except:
print('예외 발생!')
continue
nums.append(num)
n += 1
print(f'nums: {nums}')
사용자에게 숫자 5개를 입력받음
숫자가 아닌 값을 입력하면 ValueError가 발생하므로 이를 예외처리
▶ 요약
- 예외는 언제 발생?
- 실행 중에만 발생
- 비정상 종료를 막는 안전 장치는?
- try ~ except 구문
- 예외 처리가 필수인 이유는?
- 입력/파일 처리 등 사용자나 외부 요인이 관여하는 부분에 사용해야 하므로
- 예외가 발생하더라도 남은 코드가 정상 실행되도록 할 수 있음!
[try ~ except ~ else]
- try ~ except ~ else란?
- try
- 실행할 코드를 작성
- except
- 예외(에러)가 발생했을 때 실행할 코드
- else
- 예외가 발생하지 않았을 때만 실행할 코드
- try
▶ 기본 구조
try:
# 실행할 코드
except:
# 예외 발생 시 처리할 코드
else:
# 예외 없이 실행되었을 때만 작동
▶ 예제 코드
nums = []
n = 1
while n < 6:
try:
num = int(input('input number: '))
except:
print('예외 발생')
continue
else:
if num % 2 == 0:
nums.append(num)
n += 1
else:
print('입력한 숫자는 홀수입니다. 다시 입력하세요.')
continue
print(f'nums: {nums}')
숫자가 아니면 except로 빠짐
짝수면 리스트에 저장하고
홀수면 안내 메시지 출력 후 재입력 요청함
▶ 실습 코드 : 짝수 / 홀수 / 실수 구분하기
eveList = []
oddList = []
floatList = []
n = 1
while n < 6:
try:
num = float(input('input number: '))
except:
print('exception raise!!')
print('input number again!!')
continue
else:
if num - int(num) != 0:
print('float number!')
floatList.append(num)
else:
if num % 2 == 0:
print('even number!')
eveList.append(int(num))
else:
print('odd number')
oddList.append(int(num))
n += 1
print(f'eveList: {eveList}')
print(f'oddList: {oddList}')
print(f'floatList: {floatList}')
입력값에 따라 3가지 리스트로 분류됨
everList : 짝수
oddList : 홀수
floatList : 실수
▶ 요약
- try는 문제 발생할 수 있는 코드를 감싼다.
- except는 예외 발생 시 처리한다.
- else는 예외가 발생하지 않았을 때만 실행된다.
- 흐름 제어를 통해 유저 입력 검증 및 분기 처리를 깔끔하게 할 수 있다.
[나의 생각 정리]
- 예외 처리를 하면 프로그램이 중단되지 않고 계속 실행될 수 있다.
- try ~ except는 예외 발생 시 대처할 수 있도록 도와준다.
- else는 예외가 발생하지 않을 때만 실행되어 흐름을 명확히 만든다.
- 예외 처리는 사용자 입력을 다룰 때 특히 유용하다.
[적용점]
- 예외 발생 가능성이 있는 코드가 있다면?
- try ~ except로 감싸자
- 예외가 발생하지 않았을 때만 특정 작업을 하려면?
- else를 활용하자
- 사용자 입력을 안전하게 받고 싶을 때?
- try ~ except로 검증하자
- 숫자 외에 다른 형식 입력을 걸러내고 싶다면?
- except에서 안내 메시지 출력 후 continue로 반복
- 입력값을 조건에 따라 분류하고 싶다면?
- else 블록 내 조건문으로 분류 처리
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”
'제로베이스 데이터 취업 파트타임 > 100일 챌린지_일일 학습 일지' 카테고리의 다른 글
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.05] (0) | 2025.04.05 |
---|---|
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.04] (0) | 2025.04.04 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.02] (1) | 2025.04.02 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.04.01] (1) | 2025.04.01 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.31] (0) | 2025.03.31 |