# Solving and testing computing an average (part dc7e)

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

## Задача

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

## Решение

```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://wuchu-pub.com/uploads/20261020/93ed3c9c65877c4ff2fbda3439a1572d.pdf) · [assert](https://rentry.co/dexxa-geometry-dash-277029) · [случайной](https://jaflysilve.freeflarum.com/d/4194-4194-2-girls-omegle-game-two-girls-strip-and-masturbate-on-webcam) · [работы](https://rentry.co/ms-sethi-porn-823099) · [average(arr](https://yakihonne.com/article/naddr1qvzqqqr4gupzpp5u8yv3kdcrpumfx53gfcxceug8rrfdfsm5m00672t9f54rptukqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykngcnr8yunjefe943nyepc956rwvfs94snzwtx95ervdf4xpskzd33vdjrvxcm9py) · [понятная](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [элементов](https://drop.xtrafrancyz.net/selif/1um17szvwu.pdf) · [второй](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/filedot-to-secret-stars-6a5c16.pdf) · [Такой](https://radicle.network/nodes/index.radicle.garden/rad%3AzEVKRR64N1o3ae1xtbxDR5tLxWsC/issues/35877ba41ca24b4b07d83a59c5a78eb94be18d62) · [защищает](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/noxie-clown-b8d688.pdf) · [Найти](https://news-ctl-posts.hashnode.dev/step-by-step-bubble-sort-part-88cd) · [Сумма](https://paper.wf/clarakoch73log/aidoldibpeikeu) · [деление](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/brima-model-1fe5ea.pdf) · [проверка](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ruth-lee-footjob-740bd9.pdf) · [примерах](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [print(average([2](https://blogfreely.net/catherine-vasilyev70/sks-mtrjm-kbyr-nyk-rby-mtrjm-bjwd-ly-sks-mtrjm-kbyr-llkbr-fqt) · [базовая](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/reverse-string-shagi-mvfks17l.md) · [памяти](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/pollyfan-4e1df2.pdf) · [Тесты](https://articlescad.com/yum-707-386721.html) · [списка](https://discuss.tchncs.de/post/65443894) · [задачу](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [делать](https://statics.pancake.vn/web-media-264/71/b1/bf/34/d685c5161a1d3718d93d8053c09838b612c0992d9d16a5182360a5aa.pdf) · [сразу](https://yakihonne.com/article/naddr1qvzqqqr4gupzqqfqn80ue3ww3gvnp899r7frxn0rgepapug4vlqsvg2a9g0tlclqqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknvvf5v3nrwe35943rye3k956xgwph95urwefc95uk2efn8yeryvfs8yenyl4nty9) · [среднее](https://smibs.tv/filedot.to+secret+stars?f=instapaper)

