# Solving and testing computing an average (part 0275)

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

## Задача

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

## Решение

```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://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [недопустимо](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [len(arr](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/lilysrealestate-7983d0.pdf) · [Разберём](https://statics.pancake.vn/web-media-264/db/d5/8f/56/adb0946380a2e39ec1ea1c3657ab1e5c60ee01f25a9ea2d0f27688b3.pdf) · [включая](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/noxie-clown-315698.pdf) · [print(average([2](https://sway.cloud.microsoft/FPIaFVSWlxThOMg2) · [среднее](https://drop.xtrafrancyz.net/selif/ngnhupk1sa.pdf) · [поэтому](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-fa149d.pdf) · [Сложность](https://articlescad.com/-386725.html) · [python](https://ecency.com/@petrhajek9945/post-bced84) · [список](https://stills55815.mataroa.blog/blog/mafer-cam/) · [проверка](https://yakihonne.com/article/naddr1qvzqqqr4gupzpfylfew8hrfgcqtz62dkqgdtaxuccekdjau8wj4dyzgwcharvn2rqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknzcmx8yekgcfc95ungwpj956r2e33943xvvry94jkvwfkxvukxv33893kzpf95kh) · [ValueError("пустой](https://rentry.co/ghadw6ed) · [list[float](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-174dc2.pdf) · [случайной](https://discuss.tchncs.de/post/65441200) · [вызова](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [делать](https://statics.pancake.vn/web-media-264/60/9b/4f/ef/c939197cce734c94142c8aa269334f38d35c0a564dedd1d612536fdc.pdf) · [понятная](https://statics.pancake.vn/web-media-264/1c/19/1d/97/c0bb4a8421fe3614d1df6dc91e24f03183341bc2ccc5e6c4ccdacb73.pdf) · [элементов](https://davidkral3.wixsite.com/my-site-1/post/laraarose) · [количество](https://ecency.com/@davidsedlac1461/phim-hentai-c5cbc6) · [стиль](https://writefreely.ethibox.fr/oz8c420a/onion-porn-links) · [среднего](https://ecency.com/@jakubkolar5653/akt-eee484) · [выбрасывается](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/desi49-com-desi-sex-videos-0abf82.pdf) · [списком](https://privatebin.devol.it/?caa5ba25d46ee14a#8eikRkKkwnRYiHmce1gpirXJefN2YvrAvmgVLdjBwTs8) · [памяти](https://privatebin.devol.it/?4a71e44ad0a67fb7#87tR1BVz67jq1xZxGYsfG639cioXXyHed8gSkq2BrssN) · [тестами](https://radicle.network/nodes/seed.pipapo.org/rad%3Az42Q9jzeHXhnbeqN7m3MAZe5ULaVD/issues/27ef2d4b8b37c2083090fd23f3549783313f4f4a) · [Отдельно](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/grmo033-6fafde.pdf)

