Функция шифрования Цезаря в Python: зашифрованные строки
При реализации функции шифрования Цезаря в Python возникает распространенная проблема, когда окончательный зашифрованный текст отображает только последний сдвинутый символ. Чтобы решить эту проблему, необходимо понять причину такого поведения.
В предоставленном коде цикл перебирает каждый символ открытого текста. Для буквенных символов он сдвигает код ASCII символа на основе предоставленного значения сдвига. Однако каждый сдвинутый символ добавляется в пустую строку с именем cipherText внутри цикла. В результате в зашифрованном тексте отображается только последний символ.
Чтобы устранить эту проблему, зашифрованный текст должен быть создан внутри цикла и возвращен после обработки всех символов. Этого можно добиться, изменив код следующим образом:
def caesar(plainText, shift):
cipherText = ""
for ch in plainText:
if ch.isalpha():
stayInAlphabet = ord(ch) shift
if stayInAlphabet > ord('z'):
stayInAlphabet -= 26
finalLetter = chr(stayInAlphabet)
cipherText = finalLetter
return cipherText
При этой модификации строка cipherText инициализируется один раз, и все сдвинутые символы добавляются к ней в цикле. Когда функция возвращает значение, зашифрованная строка содержит все сдвинутые символы, как и предполагалось.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3