# Solving and testing computing an average (part 7617)

Разберём решение и сразу накроем его тестами — это хороший стиль работы с кодом.

## Задача

Найти среднее арифметическое списка чисел и разобрать, что делать с пустым списком.

## Решение

```python
def average(arr: list[float]) -> float:
    if not arr:
        raise ValueError("пустой список не имеет среднего")
    return sum(arr) / len(arr)


print(average([2, 4, 6, 8]))
```

## Как это работает

Сумма элементов делится на их количество. Отдельно обрабатывается пустой список: деление на ноль недопустимо, поэтому выбрасывается понятная ошибка.

## Пример работы

```text
5.0
```

## Сложность

O(n) по времени, O(1) по памяти.


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

**Читайте также:**

[Разберём](https://paper.wf/gretasvoboda68log/anoanochan) · [ошибка](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [учебных](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/seven-gromwoid-bbf03d.pdf) · [sum(arr](https://news-ctl-posts.hashnode.dev/writing-tests-for-anagram-checking-part-644a) · [среднее](https://gal13017.carrd.co/) · [времени](https://stills71931.mataroa.blog/blog/d4d-ae-759/) · [тестами](https://juliamichel991.overblog.fr/2026/10/jujutsu-kaisen-maplestar.html) · [списком](https://hey.xyz/posts/1cecwyrefcqqxky1cyk) · [стиль](https://www.imagefap.com/pictures/14229797/) · [деление](https://rentry.co/pollyfan-530193) · [len(arr](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/albany-medical-school-acceptance-rate-2175c9.pdf) · [average(arr](https://news-ctl-posts.hashnode.dev/solving-and-testing-removing-duplicates-from-a-list-part-c92f) · [Хорошая](https://yakor.rest/obaiworks?f=linkcentre) · [пустым](https://statics.pancake.vn/web-media-264/09/86/7c/2b/b1ab6e51f13d66965aadd5084d63fad62ab0a56d102992c6c5f1c235.pdf) · [Такой](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/circle-k-franchise-careers-f58fe9.pdf) · [среднего](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [выбрасывается](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [return](https://drop.xtrafrancyz.net/selif/1cqqkpce68.pdf) · [делать](https://porn-a2g.pages.dev/thattoyotachick?f=linkcentre) · [случай](https://vtrc.net/haruHa+Lu?f=instapaper)

