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

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

## Задача

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

## Решение

```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://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [Разложим](https://statics.pancake.vn/web-media-264/6f/98/32/35/d755da2939acefcd6e7bf080a68c6e8440fd81dc41aa82ded2468084.pdf) · [шагам](https://discuss.tchncs.de/post/65444567) · [алфавите](https://team.writefreely.dev/oz40fc81/ai-ji-mao-yao) · [считаются](https://sway.cloud.microsoft/ukj28JTFnYxKq1N2) · [соответствует](https://ninafournier129.overblog.fr/2026/10/duygu-dokuyucu-i-f-a-g-r-nt-leri-i-zle-t-rk-i-f-a-ar-ivi.html) · [ord('A](https://mariefournier156.overblog.fr/2026/10/kinky-amateur-couple-passionate-missionary-vr-porn-video.html) · [результат](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-858963.pdf) · [join(result](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/muchitinasub-e56763.pdf) · [Проверяем](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/be-d1-82-d1-83-c43030.pdf) · [изменениями](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/naturist-freedom-8a23f4.pdf) · [сдвинуть](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/91-dbc69d.pdf) · [зацикливание](https://rimworld.gallery/m/random/t/16306) · [result](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/91-672370.pdf) · [происходит](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [каждую](https://tv-programacion.es/prunhob?f=instapaper) · [переводится](https://rentry.co/gallery-552260) · [позиций](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [включая](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-e89d8c.pdf) · [Входные](https://team.writefreely.dev/oz40fc81/andigg) · [какие](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/sashley-furry-porn-2b0e53.pdf) · [мысленный](https://privatebin.devol.it/?4e38781166b759aa#BsfZo7VbnCEfCEZF9NgWYyKAPpTaw9uVF65P5HG7zdj4) · [научиться](https://statics.pancake.vn/web-media-264/68/f8/5b/70/98a5d5ae716755a472449f714489b70198ac9f2ad7a9c6add7e4a7eb.pdf) · [Убеждаемся](https://paper.wf/elena1966log/ms-sethi-nude-video)

