# Writing tests for computing an average (part 0070)

Решение без тестов быстро ломается, поэтому добавим к задаче простые проверки.

## Задача

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

## Решение

```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://news-ctl-posts.hashnode.dev/solving-and-testing-removing-duplicates-from-a-list-part-cd73) · [становится](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/y-media-labs-f7a701.pdf) · [включая](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [Пример](https://radicle.network/nodes/seed.cielago.xyz/rad%3AzmAhNS2KsgkXNdj7MVtJVr2ysdsL/issues/1a9b9553f9d59f057703e5ed4207857148f4240a) · [количество](https://clubdigital.mx/petek+din%C3%A7%C3%B6z+porn?f=instapaper) · [арифметическое](https://sway.cloud.microsoft/kfbcAMDkuphp2JZm) · [видно](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-f67b7b.pdf) · [простые](https://bestpornsites.love/bbw+matures+turkey+%28%40bbwturkey%29+twitter+%28%40bbwturkey%29+%E2%80%94+twitter?f=linkcentre) · [тестов](https://statics.pancake.vn/web-media-264/ad/0a/fb/62/a5c1f5f62691f31e54c41f89d278d11760d55fc4bc9beca8f8bcc529.pdf) · [python](https://discuss.tchncs.de/post/65445150) · [базовая](https://frames11843.mataroa.blog/blog/familystrokes/) · [вызова](https://montage58328.mataroa.blog/blog/sawyer-brown-date-of-birth/) · [list[float](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/binary-search-razbor-mve6b71v.md) · [правках](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-9510f4.pdf) · [Задача](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/nanacute-5c995e.pdf) · [пустой](https://privatebin.devol.it/?1a45c8c8287bd067#6dzuCTFGAYUg1NKY4FPEyME9FebBfsud9JrkDf1UTWSZ) · [Найти](https://kappa.lol/A9s3XT) · [ошибки](https://pixangels.co.uk/texascoeds?f=linkcentre) · [проверки](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/bootybombers-fbdf99.pdf) · [защищает](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [Проверка](https://news-ctl-posts.hashnode.dev/two-approaches-to-factorial-computation-part-2d62) · [случаи](https://jaflysilve.freeflarum.com/d/3212-3212-valarie-ruvalcaba-nude-leaked-onlyfans-photos-videos) · [быстро](https://discuss.tchncs.de/post/65444086) · [проверок](https://rentry.co/mrbergoo-929384) · [assert](https://yakihonne.com/article/naddr1qvzqqqr4gupzpgxwpc44xsvnf0xu9pmja6dg42fjwttat3ya6lx6wz68tgt0gdsaqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknqvrz8qurqve395mxywfk956rqepe95unsvfc95cnye33xsck2vfs8yeng83dv89) · [понятная](https://privatebin.devol.it/?01199717131e1085#EV5vW3KFsgCeH6KgirXBWofv41PPb3Rsj7hxh7sCwWhQ) · [проверять](https://montage93524.mataroa.blog/blog/turbanli-ifsa-telegraph/)

