# Walking through 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) по памяти под результат.


Это решение удобно как отправная точка для экспериментов: попробуйте изменить входные данные и проследить за поведением кода.

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

[Прочие](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-ljc1x-2dpe) · [ord('a](https://newatsapp.altervista.org/wp-content/uploads/event-manager-uploads/event_banner/2026/11/veronica-silesto-9c307a.pdf) · [результат](https://news-ctl-posts.hashnode.dev/pitfalls-of-merge-sort-mw0ewbs5) · [внутри](https://workshophub-60470e61.surge.sh/) · [Реализовать](https://dev.to/devnote2319/logging-pipeline-runs-without-noise-jxhlk-kbj) · [изменить](https://blogfreely.net/sarah-yakovlev/lisa-secret-stars-full-hd-photo-sets-and-star-sessions-videos) · [букву](https://rentry.org/tenants-of-the-dead-full-save-516089) · [номер](https://kappa.lol/0PNNgH) · [удобно](https://yakihonne.com/article/naddr1qvzqqqr4gupzqmeh85etsgsx0lds3esx2sllpj3muvy0gjcut35l4fk5q2wnqu2pqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkzetzv3nrjv33943xxep5956x2cfh95unwcnr943rsv3cx5cnwc3nv5mrsmkk96r) · [переводится](https://raindrop.io/undefined/collection-75601681) · [World](https://blogfreely.net/nathannazarov26/aysen-celik-onlyfans-ifsa-arsivi-turk-unlu-x618) · [сдвинуть](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/11/event-c8f48f.pdf) · [номеру](https://dev.to/devnote2319/idempotent-publishing-jobs-6avwq-2mld) · [число](https://jaflysilve.freeflarum.com/d/17495-17495-lala-kudo-bbc-petite-asian-performer-takes-bbc-interracial) · [символы](https://pastelink.net/khtiqwqy) · [каждую](https://dev.to/devnote2319/scheduling-retries-in-a-publishing-pipeline-cxf88-3jho) · [данные](https://articlescad.com/tanya-lapkin-nude-417203.html) · [деления](https://paper.wf/petrakrause63log/dstn-skhsy-shymyl-khmykh-w-dstn-tswyry-shyml-jdyd) · [решить](https://isc.sans.edu/diary.html/33214#comment) · [работает](https://dev.to/devnote2319/idempotent-publishing-jobs-2q4id-53np) · [каждой](https://rimworld.gallery/m/random/t/16297) · [сдвиг](https://paste2.org/0etgdg8Y) · [поведением](https://dev.to/devnote2319/idempotent-publishing-jobs-oujtx-5dao) · [алфавита](https://articlescad.com/sashalovesinger-sf-417450.html) · [фиксированное](https://posts.workshop-hub.workers.dev/fibonacci-shagi)

