# Writing tests for computing an average (part 62a2)

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

## Задача

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

## Решение

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

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

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

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

[элементов](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/anyannko-1119c2.pdf) · [нескольких](https://blogfreely.net/nathannazarov26/lo-clip-sex-video-sex-hot-viet-nam-2022) · [Сложность](https://frames22650.mataroa.blog/blog/pepek-tembem/) · [return](https://abrown18078.wixsite.com/my-site-1/post/who-is-john-doe-in-roblox-forsaken-character-lore) · [включая](https://blog.spikyhair.club/oz0301bc/catinred-katerina-red-lingerie-photos-and-videos) · [правках](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [ValueError("пустой](https://blogfreely.net/igorcollins26/snapcams-al-gallery-featuring-alana-grey-and-webcam-adult-content) · [Пример](https://kappa.lol/4byIrK) · [среднего](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [становится](https://hey.xyz/posts/2mvehb684zv2qgwfwa3) · [Хорошая](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/irm-os-goodman-v-deos-81bb78.pdf) · [списка](https://sway.cloud.microsoft/QYljDW6ZPyMpTUbf) · [проверки](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/irm-os-goodman-v-deos-eaa7f3.pdf) · [решение](https://sway.cloud.microsoft/lHReULlL6fVzyqvd) · [пустой](https://blogfreely.net/nataliarussell2/kirapregiato-onlyfans-leaks-and-exclusive-photos-gallery) · [выбрасывается](https://privatebin.devol.it/?4cf19dea91d24232#8gerdsLXexSE4PRtXUZcLiyjGZeLP14MGwhW2HkhrsSU) · [деление](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-44601a.pdf) · [вызова](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/scooters-and-sunflowers-and-nudists-667751.pdf) · [поэтому](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-b36593.pdf) · [списком](https://kappa.lol/4oefrm) · [добавим](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [ошибка](https://emy-life.com/isekai+nonbiri+nouka+hentai?f=instapaper) · [защищает](https://ecency.com/@filipjeline3861/post-a36d34) · [арифметическое](https://ecency.com/@jakubkolar5653/arysbella-reddit-nude-onlyfans-leaked-photo-gallery-9a7d92) · [сразу](https://discuss.tchncs.de/post/65444591)

