# Writing tests for computing an average (part 83a3)

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

## Задача

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

## Решение

```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://radicle.network/nodes/index.radicle.garden/rad%3Az3rCgikHUDtYHqRzuEhtDnwTcU4qc/issues/a604f68b1915ed3baaa70e54be2acf15b9f57a20) · [return](https://rentry.co/xhqdv76q) · [элементов](https://hey.xyz/posts/3h2v0pq7jhnm14hqq56) · [имеет](https://yakihonne.com/article/naddr1qvzqqqr4gupzpjs8uuyw5r6thuh9pgk8ndtyapzjjp5envhkmzuaj08je3qgg2zrqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykngdtyxd3nwdee95mkzc3h956x2ep594sngces95ukgv3hvenrwwfnxgcxx2z8cdp) · [стиль](https://paste.rs/ygzIo) · [случаи](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/spip-sarka-spip-collectif-sarka-spip-gpl-6e7a5e.pdf) · [list[float](https://pen.absturztau.be/oz830f0e/skhs-mthrkh) · [пустым](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/kylieaegis-6fd4c3.pdf) · [задач](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [делится](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ochincos-64fdf3.pdf) · [проверка](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [список](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/sujatha-simhadri-tango-3dfc45.pdf) · [решение](https://paper.wf/sofiarichter62log/japon-erotik-sex-filmleri) · [проверять](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/visceratio-31376a.pdf) · [нескольких](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/xteenchan-com-047f7d.pdf) · [деление](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/rennafoxy-019ab4.pdf) · [защищает](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/video-viral-ibu-dan-anak-baju-biru-07cd8f.pdf) · [Задача](https://annaroux152.overblog.fr/2026/10/ms-sethi-porn-video.html) · [ошибка](https://blogfreely.net/nathannazarov26/ri-ben-fu-nu-luan-lun) · [float](https://hey.xyz/posts/2bnkaap7v6fqx90ngnx) · [len(arr](https://articlescad.com/secret-session-olivia-384425.html) · [raise](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [списком](https://privatebin.devol.it/?5e2573ac2bd0a624#3SDcNvNL8XYFhcVDrCmSHTKgUfGTcHnM5QQjYhuFFa15) · [Проверка](https://boku-naka.com/t%C3%BCrbanl%C4%B1+ayak?f=instapaper) · [примерах](https://news-ctl-posts.hashnode.dev/solving-and-testing-palindrome-check-part-f5b9)

