首页 >后端开发 >Python教程 >为什么我的 Python 中的凯撒密码只返回最后一个移位的字符?

为什么我的 Python 中的凯撒密码只返回最后一个移位的字符?

Barbara Streisand
Barbara Streisand原创
2024-10-30 04:21:02357浏览

Why does my Caesar Cipher in Python only return the last shifted character?

Python 中的凯撒密码函数

在 Python 中,实现凯撒密码需要根据用户指定的输入移动字母。然而,一个常见的错误是最终的密文仅反映最后移位的字符而不是整个字符串。

提供的代码面临这个问题。它迭代明文并计算移位的字符,但它更新循环内的单个 cipherText 变量。因此,只有最后一个移位的字符会添加到输出中。

要解决此问题,需要在循环的每次迭代期间将移位的字符连接到新字符串中。这是更正后的代码:

<code class="python">plainText = input("What is your plaintext? ")
shift = int(input("What is your shift? "))

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
    print("Your ciphertext is: ", cipherText)
    return cipherText

caesar(plainText, shift)</code>

现在,cipherText 变量被修改并附加每个移位的字符,确保最终输出包含完整的加密字符串。

以上是为什么我的 Python 中的凯撒密码只返回最后一个移位的字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn