Новый персонаж в зависимости от старого персонажа в Caesar CipherPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Новый персонаж в зависимости от старого персонажа в Caesar Cipher

Сообщение Anonymous »


Я написал шифр Цезаря с двумя параметрами m и n, символы которого нужно сдвигать следующим образом:
[*]Первый символ (char1) сдвигается на (n+m) позиций. [*]Затем второй символ (char2) сместился на n+(pos_char1) позиций, где pos_char1 — индекс символа 1 в алфавите (a-z); char3 сдвигается на n+(pos_char2) позиций, где pos_char2 — это индекс char2... и так далее. [*]Шифрование работает только со строчными буквами, все остальные символы игнорируются.
Для кодирования он работает нормально, но не для декодирования.

Ниже мой код.

def encode_cipher(n, m,message): результат = "" p = m # Инициализируем p с дополнительным сдвигом шага 'm' для персонажа в сообщении: если char.islower(): # Определить значение сдвига для текущего символа нижнего регистра сдвиг = п + р # Отрегулируйте сдвиг, чтобы он оставался в диапазоне [0, 25] сдвиг = сдвиг % 26 new_char = chr(((ord(char) - ord('a') + сдвиг) % 26) + ord('a')) результат += новый_символ # Обновляем значение p для следующего символа p = ((ord(new_char) - ord('a')) % 26) еще: # Если символ не строчная буква, оставьте его без изменений результат += символ вернуть результат # Пример использования для кодирования сообщение = "аааааа" п = 2 м = 2 encode_cipher(n, m, сообщение) #output: «egikmo», как и ожидалось.

Теперь, чтобы расшифровать, я написал следующее:

def decode_cipher(n, m,message): результат = "" p = m # Инициализируем p для персонажа в сообщении: если char.islower(): сдвиг = п + р сдвиг = сдвиг % 26 new_char = chr(((ord(char) - ord('a') - сдвиг) % 26) + ord('a')) результат += новый_символ # Обновляем значение p для следующего символа p = ((ord(new_char) - ord('a')) % 26) еще: результат += символ вернуть результат # Пример message = "egikmo" # Использование вывода функции кодирования, указанной выше. п = 2 м = 2 decode_cipher(n, m, сообщение) Вывод не является «аааааа», то есть исходным сообщением до кодирования. Итак, очевидно, что вычитание сдвига не работает, и мне интересно, чего мне не хватает.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»