__author__ = "ipetrash"
"""Реализация алгоритма Код Цезаря."""
import typing
from string import ascii_lowercase, ascii_uppercase
ru_lowercase = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
ru_uppercase = ru_lowercase.upper()
alphabet_list = [
ascii_lowercase,
ascii_uppercase,
ru_lowercase,
ru_uppercase,
# Грузинский язык
"აბგდევზთიკლმნოპჟრსტჳუფქღყშჩცძწჭხჴჯჰ",
]
def get_alp_by_char(char: str) -> typing.Optional[list]:
for alphabet in alphabet_list:
if char in alphabet:
return alphabet
return None
def caesar_code(text: str, shift: int) -> str:
"""Функция принимает текстовую строку и возвращает, новую строку
символы которой сдвинуты по алфавиту."""
shift_text = ""
for c in text:
alphabet = get_alp_by_char(c)
if alphabet is None:
shift_text += c
continue
i = (alphabet.index(c) + shift) % len(alphabet)
shift_text += alphabet[i]
return shift_text
if __name__ == "__main__":
text = "Hello World!"
print(caesar_code(text, shift=0))
print(caesar_code(text, shift=2))
print(caesar_code(text, shift=-4))
print(caesar_code(text, shift=26))
print(caesar_code(text, shift=50))
print(caesar_code(text, shift=78))
assert caesar_code(text, shift=0) == text
assert caesar_code(text, shift=2) == "Jgnnq Yqtnf!"
assert caesar_code(text, shift=-4) == "Dahhk Sknhz!"
assert caesar_code(text, shift=26) == text
assert caesar_code(text, shift=50) == "Fcjjm Umpjb!"
assert caesar_code(text, shift=78) == text
print()
text = "Привет мир!"
print(caesar_code(text, shift=0))
print(caesar_code(text, shift=2))
print(caesar_code(text, shift=-4))
print(caesar_code(text, shift=33))
print(caesar_code(text, shift=50))
print(caesar_code(text, shift=99))
assert caesar_code(text, shift=0) == text
assert caesar_code(text, shift=2) == "Сткджф окт!"
assert caesar_code(text, shift=-4) == "Лмеюбо ием!"
assert caesar_code(text, shift=33) == text
assert caesar_code(text, shift=50) == "Абщтхг эщб!"
assert caesar_code(text, shift=99) == text
print()
text = "Hello мир!"
print(caesar_code(text, shift=0))
print(caesar_code(text, shift=2))
print(caesar_code(text, shift=-4))
assert caesar_code(text, shift=0) == text
assert caesar_code(text, shift=2) == "Jgnnq окт!"
assert caesar_code(text, shift=-4) == "Dahhk ием!"
print()
text = "გამარჯობა მსოფლიოში!"
print(caesar_code(text, shift=0))
print(caesar_code(text, shift=2))
print(caesar_code(text, shift=-4))
assert caesar_code(text, shift=0) == text
assert caesar_code(text, shift=2) == "ეგოგტაჟდგ ოჳჟღნლჟცლ!"
assert caesar_code(text, shift=-4) == "ჯხთხნწკჴხ თოკსზეკფე!"
# Hint: see shift=23
print()
print()
TEXT = "VWDQ LV QRW ZKDW KH VHHPV"
for i in range(len(ascii_uppercase)):
print(i, caesar_code(TEXT, i))