# Writing tests for computing an average (part 281b)

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

## Задача

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

## Решение

```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://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [среднего](https://juliaroux804.overblog.fr/2026/10/escort-izmir-yol.html) · [наглядные](https://rimworld.gallery/m/random/t/16281) · [len(arr](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [ошибки](https://articlescad.com/mimi-r34-typh-furry-nsfw-ai-character-gallery-386683.html) · [количество](https://alenakral.wixsite.com/my-site-1/post/%E4%BD%93%E8%82%B2%E7%94%9F-aj) · [накроем](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/anagram-dva-sposoba-mvfm4zai.md) · [sum(arr](https://blogfreely.net/catherine-vasilyev70/film-bokep-jepang-gak-sensor-perkosaan-ayah-dan-menantu) · [пустой](https://privatebin.devol.it/?e75b2efe11d51109#YgFroRbSa5fdZC195My4PHct7ikaAprU3vKyb6z6r8K) · [времени](https://kappa.lol/hFCA0t) · [второй](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-c0a858.pdf) · [Проверка](https://paste.rs/inJIU) · [правках](https://news-ctl-posts.hashnode.dev/walking-through-the-sum-of-digits-part-0351) · [Пример](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/anthophobia-0757ce.pdf) · [работает](https://discuss.tchncs.de/post/65440136) · [average(arr](https://gallery42917.mataroa.blog/blog/japs8005/) · [среднее](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/project-physalis-nicole-watterson-bc29a1.pdf) · [Отдельно](https://emmaleroy499.overblog.fr/2026/10/kelly-medanie-desnuda.html) · [Найти](https://hinditrendz.in/solonkamay?f=instapaper) · [включая](https://statics.pancake.vn/web-media-264/d6/3d/b5/77/21caac3035582c3a0cae97f71c3a40cc0c891c38fc037bc40da5890d.pdf) · [поэтому](https://jaflysilve.freeflarum.com/d/4140-4140-sks-yabany-mharm) · [Сумма](https://ecency.com/@lukaskral2261/ai-6990ed) · [нескольких](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [Такой](https://articlescad.com/sex-with-pakistani-aunty-386687.html) · [Хорошая](https://articlescad.com/lisa-star-sessions-exclusive-adult-photo-gallery-387166.html)

