과제

PYTHON - 예외처리와 모듈 (문제풀이)

Chansman 2025. 3. 17. 14:58

📚 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로 하늘을 납니다.