# Step-by-step: the Caesar cipher (part da13)

Разложим решение на шаги и объясним, что происходит на каждом из них.

## Задача

Реализовать шифр Цезаря: сдвинуть каждую букву строки на фиксированное число позиций в алфавите.

## Решение

```python
def caesar(text: str, shift: int) -> str:
    result = []
    for ch in text:
        if ch.isalpha():
            base = ord('A') if ch.isupper() else ord('a')
            result.append(chr((ord(ch) - base + shift) % 26 + base))
        else:
            result.append(ch)
    return ''.join(result)


print(caesar("Hello, World!", 3))
```

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

Буква переводится в номер внутри алфавита, к номеру прибавляется сдвиг, а остаток от деления на 26 обеспечивает «зацикливание» алфавита. Прочие символы не меняются.

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

```text
Khoor, Zruog!
```

## Сложность

O(n) по времени, O(n) по памяти под результат.


## Разбор по шагам

1. **Шаг 1. Входные данные.** Проверяем, что приходит в функцию, и какие значения считаются корректными.
2. **Шаг 2. Основной цикл.** Именно здесь происходит вся работа; следим за изменениями переменных на каждой итерации.
3. **Шаг 3. Результат.** Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Когда каждый шаг понятен, доработка решения перестаёт быть лотереей.

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

[возвращаемое](https://blogfreely.net/catherine-vasilyev70/anime-gifs-wallpaper-xfm1) · [Убеждаемся](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/stunning-summer-escort-61da3a.pdf) · [перестаёт](https://discuss.tchncs.de/post/65443400) · [решение](https://statics.pancake.vn/web-media-264/83/63/83/39/8744492539c76c240a53073f746108dbc5cd564163c533f41fe7e92f.pdf) · [итерации](https://news-ctl-posts.hashnode.dev/common-mistakes-in-binary-search-part-7d6a) · [деления](https://visuals28991.mataroa.blog/blog/opiumud-hentai-videos-3d-fan-art-and-parody-gallery/) · [ord('a](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [случаи](https://petrovkristina50.wixsite.com/my-site-1/post/%E6%B1%9F%E5%A4%A7%E6%A0%A1%E8%8A%B1-%E9%AB%98%E9%A2%9C%E5%80%BC%E6%A0%A1%E5%9B%AD%E9%A3%8E%E6%83%85%E7%85%A7%E7%89%87) · [приходит](https://hey.xyz/posts/38daynjf8rafd4nbdw3) · [result](https://ninalaurent951.overblog.fr/2026/10/miniimiilf.html) · [шагам](https://frames73554.mataroa.blog/blog/3/) · [Когда](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [Задача](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/mattiegarf-sf-c2cbed.pdf) · [работа](https://privatebin.devol.it/?9990f9df33563d8f#3WhQ1Z14Kz9h4nRiNUs2Ci8eedbTVpEZdXGd8Tdvy6Qu) · [Пример](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/ay-en-elik-porno-295c2f.pdf) · [позиций](https://radicle.network/nodes/seed.cielago.xyz/rad%3Az2LbURHeUCeSn3uU4CGnRsKgkRw3V/issues/7585e4aa42e134b92c69bfa57a35bfea35ac2fcd) · [решения](https://blogfreely.net/nataliarussell2/mwq-flm-sks-msr-mhtw-ndr-wmbshr) · [доработка](https://hey.xyz/posts/36pq1xwy6hhxhngcyk0) · [работы](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/slimthickn-leaks-2fea61.pdf) · [остаток](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/liliana-model-ams-56fbcd.pdf) · [join(result](https://kappa.lol/kyRxuo) · [Прочие](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/reverse-string-oshibki-mveleal2.md) · [зацикливание](https://statics.pancake.vn/web-media-264/2b/ca/cd/58/475fa19cbbd9aa0b9fdd6c399d3943fc46cff9ea74334ab19b8a4649.pdf) · [Буква](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg)

