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

如何修正文本密码程序解密输出顺序及语法排版问题?

问题解答

一、修正密码程序的解密错误

你的解密逻辑错误在于遍历顺序:当前代码先按字母顺序遍历所有字母键,再遍历解密后的数字,导致匹配到的字母会按a-z顺序拼接,而非原输入的顺序。

修正方案:

  1. 建立数字到字母的反向映射字典,避免每次遍历所有字母查找,提升效率同时保证顺序;
  2. 遍历解密后的数字列表,按顺序查找对应的字母并拼接。

修正后的完整代码:

import string

chars = [c for c in string.ascii_lowercase]
nums = [n for n in range(1, 27)]

# 正向映射:字母→数字
plain_cipher = dict(zip(chars, nums))
# 反向映射:数字→字母(用于快速解密)
cipher_plain = dict(zip(nums, chars))

prompt = input("Enter a word to cipher > ")

# 加密部分(保持不变)
print('Ciphering ... ')
cipher = [str(plain_cipher[char]+1) for char in prompt]
print('-'.join(cipher))

# 解密部分(修正逻辑)
print('Deciphering ... ')
# 先拆分加密字符串为单个数字字符串,再转成数字并减1
decipher_nums = [int(num_str) - 1 for num_str in cipher]
# 按顺序遍历解密后的数字,从反向字典取对应字母
text = ''.join([cipher_plain[num] for num in decipher_nums])
print(text)

关键修改点:

  • 新增cipher_plain反向字典,直接通过数字查找字母,无需嵌套循环;
  • 解密时按decipher_nums的顺序(即原输入的顺序)逐个拼接字母,保证输出顺序正确。

二、解密后文本的语法层面重新排列

如果修正解密逻辑后,文本仍存在语法问题(比如原加密文本本身语法混乱,或解密后出现语序/标点错误),可以按以下方式处理:

  • 手动调整:根据语境修正语序、补充标点符号,这是最直接的方式;
  • 利用NLP工具:如果是大量文本,可以使用如spaCy、HanLP(中文)等自然语言处理库,对文本进行句法分析后调整语序、修正语法错误;
  • 规则匹配:针对特定场景(比如固定格式的文本),编写正则表达式或规则模板,批量修正语法问题。

内容的提问来源于stack exchange,提问作者d0ntr13

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:30:59