# Writing tests for bracket sequence validation (part e561)

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

## Задача

Проверить, правильно ли расставлены скобки в строке из символов `()[]{}`.

## Решение

```python
def is_balanced(s: str) -> bool:
    pairs = {')': '(', ']': '[', '}': '{'}
    stack = []
    for ch in s:
        if ch in '([{':
            stack.append(ch)
        elif ch in pairs:
            if not stack or stack.pop() != pairs[ch]:
                return False
    return not stack


print(is_balanced("([]{})") )
```

## Как это работает

Это классическое применение стека: открывающая скобка кладётся наверх, закрывающая сверяется с вершиной. Если в конце стек пуст — последовательность верна.

## Пример работы

```text
True
```

## Сложность

O(n) по времени, O(n) по памяти в худшем случае.


## Проверка тестами

Хорошая привычка — проверять решение сразу на нескольких примерах, включая крайние случаи.

```python
assert is_valid(True) is not None  # базовая проверка вызова
assert is_valid(False) is not None  # и второй случай
```

Такой минимум уже защищает от случайной ошибки при правках кода.

Тесты вида assert удобны для учебных задач: они короткие, наглядные и не требуют фреймворков.

**Читайте также:**

[Решение](https://ecency.com/@martinnemec5998/kalin-onlyfans-leaks-b26c59) · [включая](https://paste.rs/CbA2C) · [верна](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/peg-7954c8.pdf) · [наверх](https://ownforum.freeflarum.com/d/5166-5166-othayf-fy-alymn) · [наглядные](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ariana-grande-wallpaper-thank-u-next-708ded.pdf) · [применение](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az2buv8DG4WGNndcXQYu16tmAMQwYJ/issues/c2f7c6ec10b532359ca75c05ff3ee3bd2c88a88f) · [привычка](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/2-girls-omegle-game-7549f9.pdf) · [базовая](https://sway.cloud.microsoft/uaXC4BfQBF6xm6LP) · [Разберём](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [решение](https://ecency.com/@lukassvobod8179/mc-mirella-vazados-transando-945b36) · [защищает](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [stack](https://blog.spikyhair.club/oz23c982/vanessa-raval-scandal) · [стека](https://statics.pancake.vn/web-media-264/db/0b/ae/aa/20634da5f09a2d82fafece48b5b6ce54faa98bd518ebb0f8369f0748.pdf) · [Задача](https://jaflysilve.freeflarum.com/d/1242-1242-steven-universe-sex) · [return](https://osvitakp.com.ua/turk+snap+ifsa?f=linkcentre) · [stack.pop](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [вершиной](https://jaflysilve.freeflarum.com/d/1105-1105-lioqueen) · [фреймворков](https://sway.cloud.microsoft/34E7nPypDrU8SOMd) · [Пример](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/grup-t-rk-if-a-07998f.pdf) · [Тесты](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/unique-tests-mvanz2kp.md) · [тестами](https://privatebin.devol.it/?765ba41f261714ba#816LSrTGxZnTNxo33t8PK2z1JL5pRpDZncLxbKZnemtg) · [хороший](https://drop.xtrafrancyz.net/selif/qrf0wkfbw3.pdf) · [нескольких](https://ecency.com/@filipnemec3033/sophieraiin-onlyfan-leaks-833260) · [вызова](https://news-ctl-posts.hashnode.dev/solving-and-testing-minimum-and-maximum-of-a-list-part-b4ef)

