You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python密文转明文程序问题:仅支持单个字符,输入句子报错

解决加密句子转明文的报错问题

看起来你是卡在了单字符转换正常,但整句输入就报错的问题上——大概率是你的代码直接把整个输入字符串当成键去查字典了,而你的字典只有单个字符的映射,自然会抛出KeyError。

给你一个简单直接的解决方案,核心思路就是遍历输入的每一个字符,逐个转换后再拼接成完整明文,同时处理字典里没有的字符(比如空格、标点)避免报错:

示例代码实现

# 先定义你的加密字典(这里用示例映射,替换成你实际的字典即可)
cipher_map = {
    'q': 'a',
    'w': 'b',
    'e': 'c',
    'r': 'd',
    # 其他字符映射...
}

def decrypt(cipher_text):
    # 初始化一个列表来存转换后的字符(比字符串拼接效率更高)
    plain_chars = []
    for char in cipher_text:
        # 用get方法:找到对应明文就返回,找不到就保留原字符(比如空格、逗号)
        plain_chars.append(cipher_map.get(char, char))
    # 把列表拼接成完整的明文字符串
    return ''.join(plain_chars)

# 测试一下
test_input = "qwe r, ty!"
print(decrypt(test_input))  # 输出:abc d, ty! (假设ty不在字典里,就保留原样)

代码解释

  • 遍历每个字符:用for char in cipher_text逐个处理输入里的每一个字符,不管是字母、空格还是标点符号
  • 安全查找映射:cipher_map.get(char, char)是关键,它会先检查字符是否在字典中,存在就返回对应的明文;不存在就返回字符本身,彻底避免了KeyError
  • 高效拼接字符串:用列表存储转换后的字符,最后用''.join()拼接,比每次都做字符串拼接(plain_text += char)效率更高,尤其是长句子的时候

如果想更简洁,还可以用列表推导式一行搞定:

def decrypt(cipher_text):
    return ''.join([cipher_map.get(char, char) for char in cipher_text])

这样修改后,不管你输入单个字符还是一整段带标点空格的句子,都能正常转换成明文啦。

内容的提问来源于stack exchange,提问作者Ghali Abed Elhai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:57:31