# Writing tests for computing an average (part bb87)

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

## Задача

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

## Решение

```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://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bokep-bocil-topeng-ungu-dac51b.pdf) · [sum(arr](https://blogfreely.net/igorcollins26/bokep-tante-vs-keponakan-video-viral-indonesia-tante-melayani-nafsu) · [привычка](https://claramoreau385.overblog.fr/2026/10/www-enaturenet.html) · [python](https://gallery77296.mataroa.blog/blog/2024/) · [разобрать](https://claraleroy498.overblog.fr/2026/10/eksaito.html) · [арифметическое](https://rentry.co/emmamonteroo-260106) · [проверок](https://rentry.co/zurilovesvanilla-nude-413546) · [затем](https://jaflysilve.freeflarum.com/d/2539-2539-kohaikun) · [понятная](https://news-ctl-posts.hashnode.dev/pitfalls-of-minimum-and-maximum-of-a-list-part-1855) · [видно](https://jaflysilve.freeflarum.com/d/2591-2591-mary-praglin-nudes-exposed-leaked-gallery-arousing-photos) · [делать](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [Отдельно](https://statics.pancake.vn/web-media-264/ce/ba/c0/b2/3979b6b09168f394d964862edbb304adb5e482742acee76fb58d0374.pdf) · [корректности](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [списком](https://articlescad.com/doberman-studio-cora-382886.html) · [проверка](https://hey.xyz/posts/31qhwsxh7bmpd2m350v) · [len(arr](https://rentry.co/bokep-indo-croot-di-mulut-ukhti-cantik-364068) · [среднего](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bokep-bocil-topeng-ungu-a0389e.pdf) · [задачу](https://claraleroy498.overblog.fr/2026/10/bokep-ibu-ibu-stw-indonesia.html) · [количество](https://ecency.com/@marekbenes6828/post-dd421e) · [времени](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [элементов](https://radicle.network/nodes/index.radicle.garden/rad%3Azd2AC6mLtXYSacMiCdGUfxUVMdji/issues/9ee3d280631542d8bae2593dbc7036baa2f81ec9) · [ValueError("пустой](https://blogfreely.net/catherine-vasilyev70/starkers-small-secrets) · [работы](https://drop.xtrafrancyz.net/selif/aqnx084ffq.pdf) · [защищает](https://gall.dcinside.com/mgallery/board/view/?id=thekpop&no=64469) · [случаи](https://gal18271.carrd.co/) · [Хорошая](https://nmorar93.wixsite.com/my-site-3/post/brima-models--brima-d-model-agency-sexy-model-photo-gallery)

