# Writing tests for computing an average (part 79cc)

Посмотрим на задачу глазами разработчика: сначала решение, затем убеждаемся в его корректности.

## Задача

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

## Решение

```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  # и второй случай
```

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

С добавлением проверок решение становится самодокументируемым — сразу видно, что код делает.

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

[float](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [видно](https://ecency.com/@jiribenes1878/laylaray-7039f8) · [проверок](https://curated37903.mataroa.blog/blog/df1-d1-ff5/) · [python](https://radicle.network/nodes/seed.cielago.xyz/rad%3AzhqRzx9pGDRgxBhGvLWWYx82pCLv/issues/04d35ee65745d2cc289777b4969b53815910a763) · [обрабатывается](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/veroni-29036b.pdf) · [базовая](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/nude-moon-3b3607.pdf) · [времени](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-65c27c.pdf) · [становится](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [правках](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [нескольких](https://yakihonne.com/article/naddr1qvzqqqr4gupzpclsfc38n4at9gdz9ufxecms7p8yta0rcd43j9q6nh0xnxa0vch9qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykn2vm9v4nxvvfs95unwdec956rqdr995urxdfj95urzcf4vscrqdehxajxzf4uyqy) · [деление](https://discuss.tchncs.de/post/65444354) · [работы](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/word-count-tests-mvf2ort3.md) · [сначала](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bokep-pramuka-0e95d7.pdf) · [list[float](https://ecency.com/@karelcerny7473/seksam-39f83c) · [сразу](https://paper.wf/emma1999log/sks-msry-m-mrt-lbwb) · [элементов](https://portfolio18817.mataroa.blog/blog/antonia-mackenzie-naked-onlyfans-leaked-photos-and-videos/) · [Сумма](https://news-ctl-posts.hashnode.dev/two-approaches-to-palindrome-check-part-9175) · [ошибка](https://paper.wf/laura1992691/tamil-xx-porn-videos-indian-desi-sex-gallery-hd-2025) · [Задача](https://sway.cloud.microsoft/A3PfeZjfFp8e6k1p) · [делать](https://blogfreely.net/igorcollins26/definitive-hentai-pack-by-unnamed-skyrim-adult-mods-on-loverslab) · [включая](https://rentry.co/tqrabm9p) · [sum(arr](https://kappa.lol/OPIk0A) · [print(average([2](https://ikue.work/jasminesummer?f=linkcentre) · [len(arr](https://paste.rs/4h1qb) · [выбрасывается](https://blogfreely.net/igorcollins26/lu-ge-zi-chen-shan-jiao-shi)

