본문 바로가기
08.개발&프로그래밍/1.파이썬

6. Python ZeroDivisionError(0으로 나누기) 완벽 가이드

by JWJ Family 2025. 7. 18.
728x90

이 챕터에서는 Python에서 0으로 나누기 시도 시 발생하는 ZeroDivisionError의 정의와 주요 원인, 예제, 해결 방법을 단계별로 살펴봅니다. 예제 코드와 출력 예시, 디버깅 팁을 통해 초보 개발자도 쉽게 문제를 이해하고 해결할 수 있습니다. 마지막에는 다음 챕터인 IndexError: 시퀀스 인덱스 범위 초과 예고가 포함되어 있습니다.

1. ZeroDivisionError란?

ZeroDivisionError는 분모가 0인 나누기(/) 또는 모듈로(%) 연산을 시도할 때 발생하는 예외입니다. Python에서는 수학적으로 정의되지 않은 연산을 막기 위해 런타임(runtime) 중에 이 예외를 발생시킵니다. ZeroDivisionErrorArithmeticError의 하위 클래스이며, 연산 오류를 나타내는 대표적인 예외입니다. 나누기 연산뿐만 아니라 모듈로 연산에서도 동일하게 발생합니다.

2. 실습 예제

아래 예제 코드를 실행하면 ZeroDivisionError가 발생하는 대표적인 상황을 확인할 수 있습니다.

# 예제: 분모가 0인 나누기
def safe_divide(a, b):
    return a / b

print(safe_divide(10, 0))   # ZeroDivisionError: division by zero

# 모듈로 연산에서도 동일하게 발생
print(10 % 0)               # ZeroDivisionError: integer division or modulo by zero

3. 실행 결과 및 설명

실행 시 터미널에 다음과 같은 메시지가 출력됩니다:

Traceback (most recent call last):
  File "example.py", line 3, in 
    print(safe_divide(10, 0))
ZeroDivisionError: division by zero

Traceback (most recent call last):
  File "example.py", line 6, in 
    print(10 % 0)
ZeroDivisionError: integer division or modulo by zero

4. 해결 방법 & 디버깅 팁

  1. 분모 검증: 연산 전에 if 문으로 분모가 0인지 확인해 예외를 방지합니다.
    if denominator != 0:
        result = numerator / denominator
    else:
        result = None  # 또는 사용자 메시지 출력
  2. try-except 블록 활용: 예외 처리 구문으로 ZeroDivisionError만 잡아 사용자 정의 로직을 수행합니다.
    try:
        result = x / y
    except ZeroDivisionError:
        print("0으로 나누기 오류가 발생했습니다.")
  3. 함수 내부 검증 추상화: 입력 검증 로직을 함수에 모아 재사용성을 높입니다.
    def divide(a, b):
        if b == 0:
            return None
        return a / b
  4. 사용자 입력 검증: input()으로 받은 값을 str.isdigit() 등으로 검사해 0 입력을 사전에 차단합니다.
  5. 로깅 및 사용자 피드백: 예외 발생 시 로깅을 통해 모니터링하고, 사용자에게 친절한 안내 메시지를 제공합니다.

5. 정리 및 다음 단계

이번 챕터에서는 ZeroDivisionError의 정의, 주요 원인, 실습 예제, 해결 방법까지 단계별로 살펴보았습니다. 분모 검증 및 예외 처리로 프로그램 중단 없이 안정적으로 연산을 수행하는 방법을 습득하셨길 바랍니다. 다음 챕터에서는 IndexError: 시퀀스 인덱스 범위 초과 문제의 원인과 해결 방법을 다룰 예정이니 많은 기대 부탁드립니다.

 

반응형