# Step-by-step: the Caesar cipher

Медленный разбор помогает понять код, а не просто скопировать его.

## Задача

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

## Решение

```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. Результат.** Убеждаемся, что возвращаемое значение соответствует условию задачи, включая крайние случаи.

Читая чужой код, повторите тот же мысленный разбор по шагам — это самый быстрый способ научиться.

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

[Khoor](https://dev.to/devnote2319/idempotent-publishing-jobs-6mcdb-10oo) · [символы](https://rentry.org/gif-249530) · [случаи](https://ink.synkosmos.org/ozb43123/xehli-g-videos-nude-photos-and-explicit-adult-clips) · [самый](https://ecency.com/@zdenekpospi7879/liz-oliveira-privacy-31d8b8) · [способ](https://sofiamartin227.overblog.fr/2026/11/friends-kizaru3d.html) · [итерации](https://dev.to/devnote2319/idempotent-publishing-jobs-zjpgk-3kmp) · [мысленный](https://collection27221.mataroa.blog/blog/anya-playing-with-bond/) · [какие](https://yakihonne.com/article/naddr1qvzqqqr4gupzpqj4tmt2qftstgs7p60xy955ga6vumuxhkrtwtz04mnaf0q6d8djqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknjvrzvy6rjef4956x2v3c956xze3s95ukvvr995cnwvfhxsun2df4xu6ng2c0wwm) · [памяти](https://secure.linkcentre.com/status/1738129/?from=submit) · [времени](https://dev.to/devnote2319/logging-pipeline-runs-without-noise-grl1o-1ene) · [включая](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/11/pasutri-depok-bj-pelan-pelan-eea642.pdf) · [return](https://dev.to/devnote2319/idempotent-publishing-jobs-84uy2-3em1) · [изменениями](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/11/bad-parents-ipcam-50e1d6.pdf) · [номер](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/11/event-97c4de.pdf) · [понять](https://mywifiext-local.us/%E4%BA%A8%E5%88%A9+%E5%86%A2+%E6%9C%AC?f=instapaper) · [значение](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/11/event-19b38d.pdf) · [просто](https://dev.to/devnote2319/idempotent-publishing-jobs-9r51p-7mk) · [шагам](https://jaflysilve.freeflarum.com/d/20137-20137-turkish-teacher-alara-porn) · [ord('A](https://discuss.tchncs.de/post/65444899) · [Основной](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/11/savannah-demers-fapello-e9eb28.pdf) · [переменных](https://news-ctl-posts.hashnode.dev/exploring-the-sum-of-digits-mw54ejle) · [разбор](https://dev.to/devnote2319/scheduling-retries-in-a-publishing-pipeline-xnj6q-4bf2) · [join(result](https://secure.linkcentre.com/status/1738508/?from=submit) · [Цезаря](https://paste2.org/UhmUyAtb)

