«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему моя функция шифра Цезаря в Python отображает только последний сдвинутый символ?

Почему моя функция шифра Цезаря в Python отображает только последний сдвинутый символ?

Опубликовано 8 ноября 2024 г.
Просматривать:332

Why Does My Caesar Cipher Function in Python Only Display the Last Shifted Character?

Функция шифрования Цезаря в 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