如何让我的维吉尼亚密码忽略原始消息中的空格

2023-12-25

我试图制作一个维吉尼亚密码,但我似乎找不到一种方法来实现在输入消息时忽略输入的空格,然后打印最后的功能,例如:我输入起始消息:“python 计算”然后我输入密钥为:“stack”,如果程序忽略原始消息中的空格,我希望得到:“isukzg wppannjqr”,但我得到:“isukzgwppannjqr”。任何人都知道我该如何解决这个问题。我考虑过使用ords,但还没有找到实现它的方法。代码如下:

def translateMessage(key, message, mode):
    translated = ""

    keyIndex = 0
    key = key.upper()

    for symbol in message:
        xyz = alphabet.find(symbol.upper())
        if xyz != -1:
            if mode == 'encrypt' or 'e':
                xyz += alphabet.find(key[keyIndex]) + 1
            elif mode == 'decrypt' or 'd':
                xyz -= alphabet.find(key[keyIndex]) + 1

            xyz %= len(alphabet)

            if symbol.isupper():
                translated += alphabet[xyz]
            elif symbol.islower():
                translated += alphabet[xyz].lower()

            keyIndex += 1
            if keyIndex == len(key):
                keyIndex = 0

    return translated

if __name__ == '__main__':
    fetch_user_inputs()

您只需要在其中添加一条 else 语句即可translateMessage()像这样向输出添加空格

def translateMessage(key, message, mode):
    translated = ""

    keyIndex = 0
    key = key.upper()

    for symbol in message:
        xyz = alphabet.find(symbol.upper())
        if xyz != -1:
            if mode == 'encrypt' or 'e':
                xyz += alphabet.find(key[keyIndex]) + 1
            elif mode == 'decrypt' or 'd':
                xyz -= alphabet.find(key[keyIndex]) + 1

            xyz %= len(alphabet)

            if symbol.isupper():
                translated += alphabet[xyz]
            elif symbol.islower():
                translated += alphabet[xyz].lower()

            keyIndex += 1
            if keyIndex == len(key):
                keyIndex = 0
        else : translated += symbol #this will add space as it is

    return translated
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让我的维吉尼亚密码忽略原始消息中的空格 的相关文章

随机推荐