Шифр - это секретный код для языка. В этом примере мы рассмотрим шифр, который, согласно сообщениям современных греческих историков, использовался Юлием Цезарем для отправки секретных сообщений генералам во время войны.
Шифр Цезаря сдвигает каждую букву сообщения чтобы другая буква в алфавите находилась на фиксированном расстоянии от оригинальной буквы. Если бы наш ключ шифрования был 1, мы бы сместили h на следующую букву i, i на следующую букву j и так далее. Если мы достигаем конца алфавита, который для нас является символом пробела, мы просто возвращаем l oop к a. Чтобы декодировать сообщение, мы делаем аналогичный сдвиг, за исключением того, что мы перемещаем одинаковое количество шагов назад в алфавите.
Упражнения:
В пяти упражнениях этой домашней работы мы создадим собственный шифр Цезаря, а также декодер сообщений для этого шифра.
*** Шаг 1: мы определим алфавит, используемый в шифре. Пример кода импорта строки библиотеки был импортирован. Создайте строку с именем алфавит, состоящую из пробела (''), за которым следуют (соединенные) строчные буквы. Обратите внимание, что мы используем только строчные буквы в этом упражнении.
Шаг 2: мы определим словарь, который определяет индекс каждого символа в алфавите. Обратите внимание, что алфавит соответствует определению в упражнении 1. Создайте словарь с ключами, состоящими из символов алфавита и значений, состоящими из цифр от 0 до 26. Сохраните это как позиции.
Шаг 3: мы закодируем сообщение с шифром Цезаря. Обратите внимание, что алфавит и позиции соответствуют определенным в упражнениях 1 и 2. Используйте позиции для создания закодированного сообщения на основе сообщения, в котором каждый символ в сообщении был сдвинут вперед на 1 позицию, как это определено позициями. Обратите внимание, что вы можете убедиться, что результат остается в пределах 0-26, используя результат% 27. Сохраните его как encoded_message.
Что такое encoded_message? (Код, написанный в понимании списка) ***
У меня есть написаны коды для Step1 и Step2. Ниже приведен мой код для шага 3. Я хочу отредактировать «encoded_message» для получения списка понимания. Ниже приведен мой код:
message = "hi my name is caesar"
encoded_message = ''
for c in message:
for key, values in positions.items():
if values == (positions[c] + 1) % 27:
encoded_message += key
print(encoded_message)
Мой код работает нормально, как есть. Но мне нужно написать весь код в одну строку и отправить код encoded_message?