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

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

'과제' 카테고리의 다른 글

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
'과제' 카테고리의 다른 글
  • PYTHON - 시퀀스 자료형 (문제풀이 3일차)
  • PYTHON - 조건문과 반복문 (문제풀이 4일차)
  • PYTHON - 함수와 클래스 (문제풀이 5일차)
  • PYTHON - 함수 (문제풀이 6일차)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (800) N
      • Python (32)
      • 프로젝트 (115) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    college reunions
    newpoliticalparty
    titaniumcase
    btsreunion
    livebroadcast
    self-growth
    classaction
    americaparty
    btsjungkook
    hotcoffeecase
    chatgpterror
    btsdischarge
    global politics
    americanlaw
    gpterror
    travel ban
    RM
    btscomeback
    remittance
    bts
    urbantrends
    life reflection
    smartphonedurability
    youngprofessionals
    뷔
    basalcellcarcinoma
    homebartrend
    chinanightlife
    lawsuitculture
    trumpmuskclash
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
PYTHON - 예외처리와 모듈 (문제풀이)
상단으로

티스토리툴바