# Solving and testing computing an average (part a4fc)

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

## Задача

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

## Решение

```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://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/vaniagemash-f76f7e.pdf) · [print(average([2](https://statics.pancake.vn/web-media-264/c3/7d/ab/16/207c47109bc5b63c9f4b96e6c7267bb88c6e440e5be44d8ccf55d578.pdf) · [обрабатывается](https://rentry.co/e3n4awks) · [выбрасывается](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-e4604a.pdf) · [Хорошая](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/brima-modeller-1b9f88.pdf) · [второй](https://yakihonne.com/article/naddr1qvzqqqr4gupzqh5stzl5ftrzf4e375p8dht64qmkmg67sezmx3yun60h9qwardmmqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykngc33xgmk2dpc95ukxc34956rgcec94skywpe95mnxdn9xg6n2wfk89jry5yzs8z) · [среднего](https://paste2.org/W36IBZ9w) · [хороший](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [Найти](https://news-ctl-posts.hashnode.dev/common-mistakes-in-minimum-and-maximum-of-a-list-part-db59) · [правках](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/mihazik-2fae60.pdf) · [сразу](https://hey.xyz/posts/26bff47bbbsja1vthv8) · [наглядные](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [случай](https://rimworld.gallery/m/random/t/16280) · [Пример](https://ownforum.freeflarum.com/d/5266-5266) · [памяти](https://statics.pancake.vn/web-media-264/b3/2b/10/4b/8b2a387130b918fe2dfc96365b4c77b9dbf314f92777ca70672502e7.pdf) · [Проверка](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [Сложность](https://yakihonne.com/article/naddr1qvzqqqr4gupzqm5nyujlfeg67lad95w9ujc8lzpy8akuesuzvfr6tqtnz5m5nm2gqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknjctrvf3rsvtp956n2vrr956rswp395urvvf4943rvd3jvfjrwdf5xvuxykcj7t4) · [список](https://radicle.network/nodes/seed.pipapo.org/rad%3Az29mFNPAnQqvqSh3mBd8cZqQC5SRg/issues/627eddbfec86b3200d0b01841a45f6c400f4e103) · [случаи](https://drop.xtrafrancyz.net/selif/qaddknldtd.pdf) · [учебных](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/warhammer-40000-hentai-06a813.pdf) · [ошибки](https://paste2.org/Gt3fK9j1)

