← Все вопросы
ZeroDivisionError при подсчёте среднего пустого списка — как обойти?
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
Ваш ответ
Войдите, чтобы ответить на вопрос.