# Walking through the Caesar cipher (part d671)

Разберём задачу, которая встречается практически в каждом учебнике по программированию.

## Задача

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

## Решение

```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://gall.dcinside.com/mgallery/board/view/?id=nmixxreality&no=3548) · [практикой](https://rentry.co/gallery-509518) · [алфавите](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [Разберём](https://portfolio60375.mataroa.blog/blog/lilushandjobs-russian-model-lilus-handjob-cumshot-clips/) · [число](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/camandcj-onlyfans-cf50e2.pdf) · [тестах](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/masha-and-veronika-babko-blow-job-920b65.pdf) · [World](https://www.imagefap.com/pictures/14229772/siminicasimi-nude) · [прибавляется](https://leahlaurent527.overblog.fr/2026/10/youjiazz.html) · [ch.isupper](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [номеру](https://radicle.network/nodes/seed.cielago.xyz/rad%3AzaqMfYRYbFTvFrYqt7i8ZNThc2yi/issues/894fed3fa39376711656d5e0a1f3491e1501a3e1) · [работает](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-591c84.pdf) · [памяти](https://yakihonne.com/article/naddr1qvzqqqr4gupzq0y5ypwj2nk5cmktch8gyuuyazucqmvspwf4r9k55gez8yeqkyvmqy28wumn8ghj7un9d3shjtnyv9kh2uewd9hszrthwden5te0dehhxtnvdakqzynhwden5te0danxvcmgv95kutnsw43qqtr8v9kxcetj0ykkzdp3vfjx2erp956nzdr9956x2ces94snveps95mxxenp8q6ngepcxvmxz03jt82) · [результат](https://hey.xyz/posts/3kavhv6t3nytdt1p5xg) · [join(result](https://hey.xyz/posts/262n1sg1v3qnrnmkbzw) · [return](https://discuss.tchncs.de/post/65444065) · [Цезаря](https://dev.to/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [символы](https://articlescad.com/simple-wallpaper-for-laptop-cute-minimalist-aesthetic-backgrounds-384916.html) · [обеспечивает](https://statics.pancake.vn/web-media-264/f1/b6/ad/1a/1e77e9e4fa24edb054af313face033d3d73d61afc836eee9497ec03e.pdf) · [shift](https://news-ctl-posts.hashnode.dev/step-by-step-word-frequency-counting-part-ba46) · [решение](https://rentry.co/yololary-nude-221063) · [Zruog](https://drop.xtrafrancyz.net/selif/lbp3eahlcv.pdf)

