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

Python编写替换密码(substitution cypher)时无法编码报错求助

报错触发原因
  • 函数参数传递顺序错误:定义encode时参数顺序为(key, alpha),实际调用时传入的是(plain, key),导致函数内的形参alpha接收的是用户输入的明文,形参key接收的是预设的密钥字符串,参数完全错位。
  • 索引查找逻辑错误:预设的alpha列表全为大写字母,代码中使用k.lower()将待查找字符转为小写,大写列表中不存在小写字符,直接触发ValueError报错。
  • 核心编码逻辑偏差:替换密码需要遍历明文字符,找到每个字符在字母表中的索引,再取密钥相同索引的字符作为密文,现有逻辑完全没有实现该流程。
修复后可正常运行的代码
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key =   "XPMGTDHLYONZBWEARKJUFSCIQV"
print("secret decoder menu")

def encode(plain_text, alpha, key):
    result = []
    # 统一转大写匹配字母表规则
    for char in plain_text.upper():
        if char in alpha:
            # 匹配明文字符在字母表的索引,取密钥对应位置字符
            idx = alpha.index(char)
            result.append(key[idx])
        else:
            # 非字母字符可直接保留,可根据需求调整
            result.append(char)
    return ''.join(result)
 
plain = input("text to be encoded: ")
print(encode(plain, alpha, key))
补充说明

如果需要实现解码功能,反向逻辑即可:对密文字符找到其在密钥中的索引,取字母表对应位置的字符就能得到原始明文。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:09:03