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

Пройдём задачу шаг за шагом — такой формат удобен для первого знакомства с алгоритмами.

## Задача

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

## Решение

```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) · [ch.isupper](https://yakihonne.com/article/naddr1qvzqqqr4gupzpnguqx9hqqvnaatklhpcmqp0ug9nyjjlt0eagtjajwakkvd22vy7qy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkyctyvvekvepj95cx2dfs956xxcfj95unwvn995ukzdp3v5mrqwp5vyukyqtw3m8) · [здесь](https://yakihonne.com/article/naddr1qvzqqqr4gupzqrgjqgupmq80tyvw8g6w8lz5pcdwlxk0p2nnwz5gwp2e6ajanzstqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0yknqwrrxsck2d3c943kgwpk956xyerx95unsepc95mx2wpkvy6nsc3kxvukztkg3p3) · [формат](https://privatebin.devol.it/?ea04b3cd6dfc87b7#4hCtQSeu9gy6sMDX7qHeEAisz1B9Wx9qvHx8BnrRMPZF) · [World](https://radicle.network/nodes/index.radicle.garden/rad%3Az3bsi2ELfNzpLkK3MPTs4YUJuBghQ/issues/40d612b370915eee12279f75edfc9bef95d8cd5c) · [алфавита](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/fibonacci-shagi-mvffd41j.md) · [сдвинуть](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [букву](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/posgrados-en-comunicacion-unam-babb00.pdf) · [Результат](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/sashley-furry-porn-c22485.pdf) · [меняются](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/verygsyboys-0c6d0a.pdf) · [чужой](https://abrown18078.wixsite.com/my-site-1/post/%D8%B3%D9%83%D8%B3-%D9%81%D9%84%D8%A7%D8%AD%D9%8A%D9%86-%D8%AC%D8%A7%D9%85%D8%AF-%D9%85%D8%AD%D8%AA%D9%88%D9%89-%D9%81%D9%84%D8%A7%D8%AD%D9%8A-%D9%85%D8%B5%D8%B1%D9%8A-%D9%86%D9%8A%D9%83-%D8%B9%D8%B1%D8%A8%D9%8A) · [число](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/naked-nude-contest-800d96.pdf) · [повторите](https://collection77389.mataroa.blog/blog/9d3-bf-973/) · [работает](https://rentry.co/gallery-390060) · [включая](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/2-girls-omegle-game-39b0ce.pdf) · [Khoor](https://pinewood9261.bearblog.dev/) · [остаток](https://jaflysilve.freeflarum.com/d/4075-4075-dirtyecho8) · [caesar(text](https://drop.xtrafrancyz.net/selif/gszxfudxv5.pdf) · [первого](https://jaflysilve.freeflarum.com/d/4204-4204-czech-streets-139) · [обеспечивает](https://h9.pics/t%C3%BCrbanli+am+resimleri?f=linkcentre) · [переменных](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [итерации](https://bkg.onlyfansarchive.live/cewek+kek+gini+puas+banget?f=linkcentre) · [значения](https://curated19734.mataroa.blog/blog/silkc-059-silkc-059-porn-stars-and-adult-scenes/) · [ch.isalpha](https://contracosta.news/wp-content/uploads/event-manager-uploads/event_banner/2026/10/berry0314-leaks-3bccaa.pdf) · [происходит](https://kappa.lol/26Slpr) · [знакомства](https://privatebin.devol.it/?f94ce2a6a4b7b7a0#5F66ZMAkNZ5zpnTDypdipTAe7kciDAzTpEpMuuzC45fJ)

