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
相关产品推荐
相关产品推荐

