Новый персонаж в зависимости от старого персонажа в Caesar Cipher ⇐ Python
Новый персонаж в зависимости от старого персонажа в Caesar Cipher
Я написал шифр Цезаря с двумя параметрами 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, сообщение) Вывод не является «аааааа», то есть исходным сообщением до кодирования. Итак, очевидно, что вычитание сдвига не работает, и мне интересно, чего мне не хватает.
Я написал шифр Цезаря с двумя параметрами 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, сообщение) Вывод не является «аааааа», то есть исходным сообщением до кодирования. Итак, очевидно, что вычитание сдвига не работает, и мне интересно, чего мне не хватает.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Python TypeError при добавлении ORD (C) + NUM в реализации Caesar Cipher на Coderbyte
Anonymous » » в форуме Python - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-