# Writing tests for computing an average (part 2aaf)

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

## Задача

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

## Решение

```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://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/olgun-olgun-ask-asspumistr-twitter-70e6fd.pdf) · [работает](https://rentry.co/av-559296) · [Сумма](https://inlist.pk/sonkei?f=instapaper) · [правках](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/stickyspoodge-775139.pdf) · [sum(arr](https://jamesd716.wixsite.com/my-site-1/post/liseli-sakso-twitter--gizli-t%C3%BCrk-liseli-koleksiyonu) · [делать](https://radicle.network/nodes/seed.pipapo.org/rad%3Aztp8kUbJq8yjpvfaR4XZqHzjr2PH/issues/023dc02b18a528ec2614b532c91967aabd1257ba) · [list[float](https://drop.xtrafrancyz.net/selif/r2wvccojs6.pdf) · [нескольких](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/8-prophetic-prayer-watches-ff9748.pdf) · [Разберём](https://sway.cloud.microsoft/4zWKZZk75s1mw5pq) · [поэтому](https://articlescad.com/sarah-miller-rule34-hentai-images-and-rule-34-pics-388175.html) · [чисел](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bokep-indo-ewe-istri-saat-cuci-piring-2-7b2d24.pdf) · [ошибка](https://paper.wf/irena2001log/ts-xiao-ye-jiang-asian-ts-ladyboy-porn-with-cumshot) · [print(average([2](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [len(arr](https://annabarbosa51.wixsite.com/my-site-1/post/misspinkroom-chaturbate-private-show-videos-and-exclusive-cam-clips) · [список](https://sway.cloud.microsoft/sx7L4xaetHDWIJsa) · [стиль](https://articlescad.com/x-388375.html) · [накроем](https://gal99222.carrd.co/) · [случайной](https://privatebin.devol.it/?ea4f8dcca8d15c3d#6iTFkGDf43CYhvgLey9F8Sgm4uu4Zjrc56VX3JH8jELc) · [Тесты](https://sistters.com/bokep+anastasya+khosasih?f=linkcentre) · [короткие](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/boyst0021-a73a94.pdf) · [хороший](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [вызова](https://blog.spikyhair.club/oz79847a/starsessions-michelle) · [raise](https://mariemoreau575.overblog.fr/2026/10/3d-3d.html) · [включая](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/anagram-dva-sposoba-mvgrvs57.md) · [python](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [решение](https://happypasta-capricciosa.com/t%C3%BCrbanl%C4%B1+kad%C4%B1nlar%C4%B1n+%C3%A7%C4%B1plak+am+g%C3%B6t+resimleri?f=linkcentre) · [float](https://drop.xtrafrancyz.net/selif/1u5rijwv6v.pdf) · [понятная](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/idol-deepfake-8b9a48.pdf) · [Решение](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/pronstats-49385e.pdf)

