Common mistakes in computing an average (part 9c05)
Каждая учебная задача таит пару-тройку грабель; вот они.
Задача
Найти среднее арифметическое списка чисел и разобрать, что делать с пустым списком.
Решение
def average(arr: list[float]) -> float:
if not arr:
raise ValueError("пустой список не имеет среднего")
return sum(arr) / len(arr)
print(average([2, 4, 6, 8]))
Как это работает
Сумма элементов делится на их количество. Отдельно обрабатывается пустой список: деление на ноль недопустимо, поэтому выбрасывается понятная ошибка.
Пример работы
5.0
Сложность
O(n) по времени, O(1) по памяти.
Частые ошибки
- Не обрабатывать крайние случаи. Пустой ввод, ноль, отрицательные числа — именно там решение чаще всего ломается.
- Смешивать типы данных. Строки и числа ведут себя по-разному; неявное приведение типов — источник неочевидных багов.
- Писать код без проверки на маленьких примерах. Прогоните решение вручную на 2-3 значениях, прежде чем считать задачу решённой.
Если решение заработало с первого раза — всё равно сверьтесь со списком ошибок: половина багов рождается при доработках.
Читайте также:
решённой · Пустой · Прогоните · len(arr · ломается · сверьтесь · работает · Отдельно · вручную · Смешивать · обрабатывается · Каждая · проверки · выбрасывается · элементов · Задача · задачу · доработках · пару-тройку · пустым · маленьких · Решение · понятная · имеет · чисел · average(arr · деление
