X Tutup
__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))
X Tutup