# Understanding the Caesar cipher (part 8b19)

Предлагаю решить задачу вместе: без спешки, с объяснением каждой строки.

## Задача

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

## Решение

```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/valentina_silvaferreira_/rieshaiem-i-tiestiruiem-shifr-tsiezaria-59g) · [времени](https://avdc.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/spanking-20801d.pdf) · [вместе](https://ownforum.freeflarum.com/d/5377-5377-turbanli-etek-alti-frikik) · [ch.isupper](https://jaflysilve.freeflarum.com/d/3455-3455-tango-ifsa-twiter) · [Сложность](https://artofhosting.org/wp-content/uploads/event-manager-uploads/event_banner/2026/10/clairewntr-311358.pdf) · [ch.isalpha](https://gitlab.com/chuongnhuhoa/trusrewre/-/blob/main/articles/binary-search-tests-mvej7baq.md) · [ord('A](https://jaflysilve.freeflarum.com/d/3573-3573-carly-coco-sf-exclusive-onlyfans-amateur-photos-and-videos) · [задачу](https://cultmtl.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/event-3067ea.pdf) · [практикой](https://paste2.org/8NjpasAc) · [работы](https://exhibit28456.mataroa.blog/blog/amirah-leia-onlyfans-leaked-photos-and-videos/) · [join(result](https://dev.to/valentina_silvaferreira_/nieskolko-rieshienii-rieshieniia-prostoi-zadachi-chisla-fibonachchi-48da) · [закрепляется](https://hey.xyz/posts/3z7sythhtz9kkn9dee) · [пример](https://vit.ac.in/wp-content/uploads/event-manager-uploads/event_banner/2026/10/tail-vore-hentai-abf1e8.pdf) · [Буква](https://news-ctl-posts.hashnode.dev/common-mistakes-in-anagram-checking-part-18e8) · [решение](https://sway.cloud.microsoft/EUI98IHDnVjMFxfn) · [букву](https://collection47472.mataroa.blog/blog/ba0-6c-605/) · [обеспечивает](https://matem.vn.ua/%D0%BD%D0%B0%D0%B9%D0%BC%D0%B5%D0%BD%D1%88%D0%B5-%D1%81%D0%BF%D1%96%D0%BB%D1%8C%D0%BD%D0%B5-%D0%BA%D1%80%D0%B0%D1%82%D0%BD%D0%B5-%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE?f=instapaper) · [World](https://rentry.co/xxapplee-854554) · [символы](https://discuss.tchncs.de/post/65444086) · [сдвиг](https://sway.cloud.microsoft/pVrWaxqZ4T9By5fK) · [прибавляется](https://writefreely.ethibox.fr/oz82c64c/stella-andrews-exclusive-onlyfans-content-only-on-onlyfans) · [shift](https://paper.wf/katya1991log/starsession-olivia) · [прогоните](https://kappa.lol/ejn7Nn) · [Реализовать](https://www.sfahba.com/wp-content/uploads/event-manager-uploads/event_banner/2026/10/hanna-punzel-58935f.pdf) · [ord('a](https://mememelabs.me/quya?f=linkcentre) · [Прочие](https://dev.to/valentina_silvaferreira_/rassmatrivaiem-klassichieskuiu-zadachu-provierka-anaghramm-geg) · [Пример](https://news-ctl-posts.hashnode.dev/understanding-string-reversal-part-1f1e)

