# Exploring 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://hey.xyz/posts/2dbfb5bxntwxg4yn1st) · [зацикливание](https://dev.to/devnote2319/idempotent-publishing-jobs-oxu5p-1763) · [shift](https://dev.to/devnote2319/logging-pipeline-runs-without-noise-jxhlk-kbj) · [попробуйте](https://ecency.com/@jakubkolar5653/ariaxswan-6a58a7) · [python](https://loc.edu/wp-content/uploads/event-manager-uploads/event_banner/2026/11/event-8f3d7d.pdf) · [join(result](https://ink.synkosmos.org/oz2337b6/grup-turk-ifsa-fotograflari-ve-videolari-2024-guncel-icerik) · [result](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-bb4an-4op6) · [ch.isupper](https://dev.to/devnote2319/account-pools-for-multi-platform-posting-ex8x1-55li) · [точка](https://privatebin.devol.it/?d202011e2919013e#FDYkUo4BRKXzMTwcMTde6qLSgJwFryTKgbatUCJXu9pa) · [спокойно](https://news-ctl-posts.hashnode.dev/writing-tests-for-bubble-sort-mw1ebpv4) · [разберём](https://statics.pancake.vn/web-media-264/17/6a/e7/6b/1907712f189a4c86e182cf0b5158a1c36f74d7f0aaf9a9d7693eed8c.pdf) · [времени](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/11/nudists-families-pics-529d8c.pdf) · [работы](https://milhench.com/wp-content/uploads/event-manager-uploads/event_banner/2026/11/dm-najlepsie-produkty-d89206.pdf) · [World](https://dev.to/devnote2319/scheduling-retries-in-a-publishing-pipeline-sjke6-2iip) · [Задача](https://visuals54949.mataroa.blog/blog/cherryjambaby/) · [Прочие](https://ink.synkosmos.org/ozbbfb7d/dywth-mht-twytr-swr-jnsy-bhy-mnshwr-l-mns-x) · [отправная](https://discuss.tchncs.de/post/65440584) · [результат](https://workshophub-2a647a74.surge.sh/) · [Zruog](https://statics.pancake.vn/web-media-264/b7/b2/0a/6c/6730f54d6f70a22b352303a85e81732a0eee8bd8f275bc2afad1cbdc.pdf) · [Сложность](https://news-ctl-posts.hashnode.dev/two-ways-to-solve-string-reversal-mw30ufur)

