В этом материале мы спокойно и по шагам разберём учебную задачу на программирование.
Задача
Реализовать шифр Цезаря: сдвинуть каждую букву строки на фиксированное число позиций в алфавите.
Решение
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) по памяти под результат.
Такой пример хорошо закрепляется практикой — перепишите решение руками и прогоните на своих тестах.
Читайте также:
своих · работает · caesar(text · Буква · деления · памяти · пример · разберём · руками · прогоните · переводится · World · тестах · шагам · Прочие · каждую · Сложность · программирование · Пример · символы · букву · Задача · позиций · прибавляется · алфавита · Цезаря · практикой
Comments
Join the discussionNo comments yet. Be the first to comment.