Частые ошибки при решении: шифр Цезаря
Разберём решение и подводные камни — их обычно не видно в готовом коде из учебника.
Задача
Реализовать шифр Цезаря: сдвинуть каждую букву строки на фиксированное число позиций в алфавите.
Решение
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 обеспечивает «зацикливание» алфавита. Прочие символы не меняются.
Пример работы
Khoor, Zruog!
Сложность
O(n) по времени, O(n) по памяти под результат.
Частые ошибки
- Не обрабатывать крайние случаи. Пустой ввод, ноль, отрицательные числа — именно там решение чаще всего ломается.
- Смешивать типы данных. Строки и числа ведут себя по-разному; неявное приведение типов — источник неочевидных багов.
- Писать код без проверки на маленьких примерах. Прогоните решение вручную на 2-3 значениях, прежде чем считать задачу решённой.
Если решение заработало с первого раза — всё равно сверьтесь со списком ошибок: половина багов рождается при доработках.
Related:
- secret he.tai
- Типичные ошибки при решении: сортировка слиянием
- Derpixo — мультяшная девушка-стример трахается с монстрами
- 미확인 급발정 생물체 무료 - 급발정 생물체 사진
- rusoska
- Пишем решение с тестами: наибольший общий делитель
- Рассматриваем задачу: подсчёт частот слов
- 40岁熟女
- Ловушки новичков при решении: удаление дубликатов из списка
- سكس دموى
- Пошаговый разбор: возведение в степень
- Осваиваем задачу: сортировка пузырьком
- chatraneom
- Рассматриваем задачу: проверка скобочной последовательности
- alan becker r34
- Rika Nishimura Gallery | Nude Japanese AV Idol Photos
- lilianaheartsss blowjob
- Два подхода: сортировка слиянием
- imx peach
- Camilla Araujo Porn Leaks, Nude Photos And Video Clips
- سكس مترجم - أفلام نيك مترجمة للكبار فقط | مشاهد سكس عنيف
- 国漫3d同人
- lovingeli erome