MINERVA/Python
2024. 1. 21. 11:11
반응형
ZeroDivisionError: division by zero는 주로 코드에서 어떤 값을 0으로 나누려고 할 때 발생하는 오류입니다.
이 오류를 피하는 몇 가지 방법을 아래와 같이 정리합니다.
1. 분모가 0인 경우를 확인하여 처리하기.
def ZeroDivisionError_Solve1():
divisor = 0
numerator = 10
if divisor != 0:
result = numerator / divisor
else:
result = 0 # 또는 다른 적절한 값을 할당
print(result)
2. 예외처리 사용
0으로 나누려고 할 때 ZeroDivisionError 예외가 발생하면 예외 처리 블록이 실행되어 0 또는 다른 적절한 값을 할당
def ZeroDivisionError_Solve2():
divisor = 0
numerator = 10
try:
result = numerator / divisor
except ZeroDivisionError:
result = 0 # 또는 다른 적절한 값을 할당
print(result)
3. numpy의 np.divide 함수 사용
분모가 0인 경우에 대해 예외를 발생시키지 않고, 대신 where 매개변수를 사용하여 분모가 0이 아닌 경우에만 나누기 연산
def ZeroDivisionError_Solve3():
divisor = 0
numerator = 10
result = np.divide(numerator, divisor, out=np.zeros_like(numerator), casting='unsafe',where= divisor != 0)
print(result)
4. 분모가 0인 경우에 대한 조건문 사용
각 행(row)에 대해 분모가 0이 아닌 경우에만 나누기 연산을 수행하고, 그렇지 않은 경우에는 0을 할당합니다.
def ZeroDivisionError_Solve4():
data = {'numerator': [10, 20, 30],
'divisor': [5, 0, 3]}
df = pd.DataFrame(data)
# 분모가 0이 아닌 경우에만 나누기 연산 수행
df['result'] = df.apply(lambda row: row['numerator'] / row['divisor'] if row['divisor'] != 0 else 0, axis=1)
print(df)
5. numpy의 np.where 사용
np.where를 사용하여 분모가 0이 아닌 경우에는 나누기 연산을 수행하고, 그렇지 않은 경우에는 0을 할당
def ZeroDivisionError_Solve5():
# 예제 DataFrame 생성
data = {'numerator': [10, 20, 30],
'divisor': [5, 0, 3]}
df = pd.DataFrame(data)
# np.where를 사용하여 분모가 0인 경우에 대한 처리
df['result'] = np.where(df['divisor'] != 0, df['numerator'] / df['divisor'], 0)
print(df)
[전체코드]
import numpy as np
import pandas as pd
def ZeroDivisionError_Solve1():
divisor = 0
numerator = 10
if divisor != 0:
result = numerator / divisor
else:
result = 0 # 또는 다른 적절한 값을 할당
print(result)
def ZeroDivisionError_Solve2():
divisor = 0
numerator = 10
try:
result = numerator / divisor
except ZeroDivisionError:
result = 0 # 또는 다른 적절한 값을 할당
print(result)
def ZeroDivisionError_Solve3():
divisor = 0
numerator = 10
result = np.divide(numerator, divisor, out=np.zeros_like(numerator), casting='unsafe',where= divisor != 0)
print(result)
def ZeroDivisionError_Solve4():
data = {'numerator': [10, 20, 30],
'divisor': [5, 0, 3]}
df = pd.DataFrame(data)
# 분모가 0이 아닌 경우에만 나누기 연산 수행
df['result'] = df.apply(lambda row: row['numerator'] / row['divisor'] if row['divisor'] != 0 else 0, axis=1)
print(df)
def ZeroDivisionError_Solve5():
# 예제 DataFrame 생성
data = {'numerator': [10, 20, 30],
'divisor': [5, 0, 3]}
df = pd.DataFrame(data)
# np.where를 사용하여 분모가 0인 경우에 대한 처리
df['result'] = np.where(df['divisor'] != 0, df['numerator'] / df['divisor'], 0)
print(df)
if __name__ == '__main__':
print(f'ZeroDivisionError: division by zero')
ZeroDivisionError_Solve1()
ZeroDivisionError_Solve2()
ZeroDivisionError_Solve3()
ZeroDivisionError_Solve4()
ZeroDivisionError_Solve5()
반응형