← Все вопросы

ZeroDivisionError при подсчёте среднего пустого списка — как обойти?

Задан 15 месяцев назад939 просмотров2 ответа
5

Считаю среднее значение оценок, обычно работает, но иногда падает ZeroDivisionError: division by zero:

marks = []
average = sum(marks) / len(marks)
print(average)

Как сделать, чтобы не падало, если оценок нет?

2 ответа

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

Когда список пустой, len(marks) равен 0, и ты делишь на ноль — это математически запрещено, отсюда ZeroDivisionError.

Проверь перед делением, что список не пустой:

if marks:
    average = sum(marks) / len(marks)
else:
    average = 0
print(average)

Запись if marks: истинна, только когда в списке есть хотя бы один элемент.

3

Та же логика короче, через тернарный оператор:

average = sum(marks) / len(marks) if marks else 0

Ваш ответ

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