我怎么能让我的密码忽略原始邮件中的空格

2024-09-29 23:15:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试生成一个Vigenère密码,但是我似乎找不到一种方法来实现一个在输入消息并打印最终结果时忽略putted空白的特性例如:我输入起始消息:“python computing”,然后我输入键为:“stack”,如果程序忽略了原始的空格,我期望得到的结果信息:“isukzgwppannjqr”,但我得到的却是:“isukzgwppannjqr”。有人知道我怎么解决这个问题。我考虑过使用ORD,但我没有找到实现它的方法。代码如下:

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()

Tags: or方法key消息messageifmodefind
1条回答
网友
1楼 · 发布于 2024-09-29 23:15:13

您只需要在translateMessage()中添加一个else语句,就可以像这样将空间添加到输出中

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

相关问题 更多 >

    热门问题