← Все вопросы

ZeroDivisionError: division by zero — как обработать деление на ноль?

Задан 17 месяцев назад173 просмотров1 ответ
7

Считаю среднее, а программа падает с ZeroDivisionError: division by zero. Делитель иногда становится нулём, и всё ломается. Как защититься от деления на ноль в Python?

1 ответ

10
✓ Принятый ответ — помог автору

Ошибка ZeroDivisionError появляется при делении на 0 — в математике это не определено, и Python отказывается считать. Касается и обычного деления /, и целочисленного //, и остатка %.

total = 100
count = 0
print(total / count)   # ZeroDivisionError

Типичная ситуация — считаете среднее, а список пустой, поэтому делитель len(lst) равен 0.

Способы защиты:

  1. Проверка перед делением:
if count != 0:
    print(total / count)
else:
    print("Делить не на что")
  1. try/except:
try:
    avg = total / count
except ZeroDivisionError:
    avg = 0
  1. Подставить безопасный делитель:
avg = total / count if count else 0

Для среднего по списку: сначала убедитесь, что список не пуст: if nums: avg = sum(nums) / len(nums). Главная мысль — прежде чем делить, убедитесь, что делитель не ноль.

Ваш ответ

, чтобы ответить на вопрос.