Python凯撒密码 怎么用字典进行解决

怎么在偏移数目后形成新的字典呢
初学Python,网上的方法大多都不涉及字典,怎么运用到字典的映射呢

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
对于凯撒密码,可以通过字典进行解密。具体方法如下:

1、 定义一个字典,将每个字母和它偏移后的字母进行映射。例如,对于一个偏移量为3的凯撒密码,将字母A映射为D,字母B映射为E,以此类推。

offset = 3
mapping = {}
for i in range(26):
    mapping[chr(ord('A') + i)] = chr(ord('A') + (i + offset) % 26)

2、 对于密文中的每个字符,使用字典进行解密。如果该字符不是字母,则保持不变;如果是字母,则将其映射为对应的明文字符。

cipher_text = "KHOOR ZRUOG"
plain_text = ""
for char in cipher_text:
    if char.isalpha():
        plain_text += mapping[char]
    else:
        plain_text += char
print(plain_text)

输出结果为:HELLO WORLD

在这个例子中,我们将偏移量设为3,将字母A映射为D,字母B映射为E,以此类推。对于密文中的每个字母,我们使用字典进行解密,得到对应的明文字符,并将它们拼接在一起,最终得到明文字符串"HELLO WORLD"。

使用字典进行解密的好处是,它可以非常快地进行字符映射,因此适用于大量的字符解密。同时,由于字典是可变的,因此可以根据不同的偏移量生成不同的映射关系。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

def sort_list(value):
    """
    对列表重排序,按照某种规则排序,打乱
    :param value:
    :return:need_list
    """
    a = value[0:len(value) - int(len(value) / 2)]
    b = value[int(len(value) / 2) + 1:len(value)]

    need_list = []
    for i in range(max(len(a), len(b))):
        if a:
            need_list.append(a.pop())
        if b:
            need_list.append(b.pop())
    return need_list