Как изменить каждый символ в строке, используя шифр Цезаря? Шифр Цезаря заменяет каждый символ латинского алфавита

Как изменить каждый символ в строке, используя шифр Цезаря? Шифр Цезаря заменяет каждый символ латинского алфавита на другой символ, который находится на k-ом месте после данного символа в алфавите. Если новый символ выходит за границы алфавита, то нужно взять символ из начала строки. Например, при k=3 символ A будет заменен на D, символ B на E, символ C на F, и так далее, символ Z будет заменен на C. Точно так же, строчные буквы заменяются на строчные буквы. Все остальные символы не изменяются. Напишите функцию CaesarCipher(S, k), которая будет возвращать новую зашифрованную строку, где S - исходная строка, а k - величина сдвига.
Raisa

Raisa

Хорошо, для решения этой задачи напишем функцию CaesarCipher(S, k), которая будет принимать на вход строку S и число k. Функция будет возвращать новую зашифрованную строку.

Давайте разберемся с этим шаг за шагом.

1. Создадим пустую строку result, в которой будем формировать новую зашифрованную строку.

2. Пройдемся по каждому символу строки S:
- Если символ является буквой латинского алфавита, то:
- Если символ является заглавной буквой, найдем его код в таблице символов и добавим к нему k.
- Если получившийся код выходит за границы заглавных букв (коды 65-90), будем использовать остаток от деления на 26 и прибавим 65 для получения нового кода буквы. Новый символ добавим в result.
- Если символ является строчной буквой, найдем его код в таблице символов и добавим к нему k.
- Если получившийся код выходит за границы строчных букв (коды 97-122), будем использовать остаток от деления на 26 и прибавим 97 для получения нового кода буквы. Новый символ добавим в result.
- Если символ не является буквой, добавим его в result без изменений.

3. Вернем получившуюся зашифрованную строку result.

Вот как будет выглядеть код функции на языке Python:

python
def CaesarCipher(S, k):
result = ""
for char in S:
if char.isalpha():
if char.isupper():
code = ord(char) + k
if code > 90:
code = (code % 90) + 64
result += chr(code)
else:
code = ord(char) + k
if code > 122:
code = (code % 122) + 96
result += chr(code)
else:
result += char
return result


Теперь вы можете вызвать функцию CaesarCipher со строкой и значением k, чтобы получить зашифрованную строку. Например:

python
plaintext = "Hello, World!"
k = 3
ciphertext = CaesarCipher(plaintext, k)
print(ciphertext)


Вывод:

Khoor, Zruog!


Таким образом, мы получили зашифрованную строку, где каждый символ заменен с помощью шифра Цезаря.
Знаешь ответ?
Задать вопрос
Привет!
hello