📚 Python 예외처리와 모듈 예제 정리
1️⃣ 나눗셈 예외처리 프로그램
✅ 핵심 키워드
- ValueError: 입력 값이 숫자가 아닐 때 발생
- ZeroDivisionError: 0으로 나눌 때 발생
- try-except-else-finally: 예외 처리 흐름 제어
try:
num1 = int(input("첫 번째 숫자를 입력하세요: "))
num2 = int(input("두 번째 숫자를 입력하세요: "))
result = num1 / num2
print(f"결과: {result}")
except ValueError:
print("숫자만 입력해주세요! 문자나 다른 값은 사용할 수 없습니다.")
except ZeroDivisionError:
print("0으로는 나눌 수 없습니다. 다른 숫자를 입력해주세요.")
except Exception as e:
print(f"알 수 없는 오류가 발생했습니다: {e}")
else:
print("정상적으로 나눗셈이 완료되었습니다.")
finally:
print("프로그램을 종료합니다.")
📋 출력 예시
첫 번째 숫자를 입력하세요: 10
두 번째 숫자를 입력하세요: 0
0으로는 나눌 수 없습니다. 다른 숫자를 입력해주세요.
프로그램을 종료합니다.
2️⃣ 파일 읽기 예외처리 프로그램
✅ 핵심 키워드
- FileNotFoundError: 파일이 존재하지 않을 때 발생
try:
with open('myfile.txt', 'r') as file:
content = file.read()
print(content)
except FileNotFoundError:
print("파일을 찾을 수 없습니다. 파일 이름을 다시 확인해주세요.")
📋 출력 예시
파일을 찾을 수 없습니다. 파일 이름을 다시 확인해주세요.
3️⃣ 숫자 리스트 입력 프로그램
✅ 핵심 키워드
- ValueError: 입력값이 숫자가 아닐 때 발생
- while True: 무한 반복
numbers = []
while True:
try:
line = input("숫자를 입력하세요 ('done'이면 종료): ")
if line.lower() == 'done':
break
numbers.append(int(line))
except ValueError:
print(f"잘못된 값: {line}. 숫자를 입력해주세요.")
print(f"입력된 숫자 리스트: {numbers}")
📋 출력 예시
숫자를 입력하세요 ('done'이면 종료): 10
숫자를 입력하세요 ('done'이면 종료): abc
잘못된 값: abc. 숫자를 입력해주세요.
숫자를 입력하세요 ('done'이면 종료): 20
숫자를 입력하세요 ('done'이면 종료): done
입력된 숫자 리스트: [10, 20]
4️⃣ 사용자 정의 예외처리 프로그램
class NegativeNumberError(Exception):
def __init__(self, value):
self.value = value
super().__init__(f"잘못된 값: {value}")
try:
num = int(input("양수를 입력하세요: "))
if num < 0:
raise NegativeNumberError(num)
print(f"입력한 숫자는 {num}입니다.")
except NegativeNumberError as e:
print("양수를 입력해주세요.")
print(f"(입력한 값: {e.value})")
📋 출력 예시
양수를 입력하세요: -3
양수를 입력해주세요.
(입력한 값: -3)
5️⃣ 현재 날짜와 시간 출력 및 나이 계산
import datetime
now = datetime.datetime.now()
print(f"현재 날짜와 시간: {now}")
birth_year = int(input("태어난 년도를 입력하세요 (예: 1990): "))
current_year = now.year
age = current_year - birth_year
print(f"당신의 나이는 {age}세입니다.")
📋 출력 예시
현재 날짜와 시간: 2024-03-17 15:00:00
태어난 년도를 입력하세요 (예: 1990): 2000
당신의 나이는 24세입니다.
6️⃣ 웹 스크레이퍼 프로그램 (requests 모듈)
import requests
try:
response = requests.get('https://kream.co.kr')
print("상태 코드:", response.status_code)
print("HTML 첫 100자:", response.text[:100])
finally:
print("요청 처리가 완료되었습니다.")
📋 출력 예시
상태 코드: 200
HTML 첫 100자: <!DOCTYPE html><html lang="ko"><head><meta charset="utf-8"><title>크림(KREAM) | 한정판 거래의 시작
요청 처리가 완료되었습니다.
7️⃣ 함수 실행 시간 측정 데코레이터
import time
def timer_decorator(function):
def wrapper(*args, **kwargs):
start_time = time.time()
result = function(*args, **kwargs)
end_time = time.time()
print(f"함수 실행 시간: {end_time - start_time:.2f}초")
return result
return wrapper
@timer_decorator
def example_function():
time.sleep(2)
print("함수 실행 완료")
example_function()
📋 출력 예시
함수 실행 완료
함수 실행 시간: 2.00초
8️⃣ 수학적 연산 모듈 (mymath.py)
def triangle_area(base, height):
return 0.5 * base * height
def circle_area(radius):
return 3.14159 * (radius ** 2)
def cuboid_area(length, width, height):
return 2 * (length * width + width * height + height * length)
사용 예시
import mymath
print(mymath.triangle_area(10, 5))
print(mymath.circle_area(7))
print(mymath.cuboid_area(4, 5, 6))
9️⃣ 동물 패키지
- animals/mammals.py
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def speak(self):
return f"{self.name}는 {self.breed} 종이며 '멍멍' 짖습니다."
- animals/birds.py
class Eagle:
def __init__(self, name, wingspan):
self.name = name
self.wingspan = wingspan
def fly(self):
return f"{self.name}는 날개 길이가 {self.wingspan}m로 하늘을 납니다."
사용 예시
from animals.mammals import Dog
from animals.birds import Eagle
dog = Dog("바둑이", "진돗개")
eagle = Eagle("독수리", 2.5)
print(dog.speak())
print(eagle.fly())
📋 출력 예시
바둑이는 진돗개 종이며 '멍멍' 짖습니다.
독수리는 날개 길이가 2.5m로 하늘을 납니다.
'과제' 카테고리의 다른 글
PYTHON - 자료형과 연산자 (문제풀이 2일차) (0) | 2025.03.17 |
---|---|
PYTHON - 시퀀스 자료형 (문제풀이 3일차) (0) | 2025.03.17 |
PYTHON - 조건문과 반복문 (문제풀이 4일차) (0) | 2025.03.17 |
PYTHON - 함수와 클래스 (문제풀이 5일차) (0) | 2025.03.17 |
PYTHON - 함수 (문제풀이 6일차) (0) | 2025.03.17 |