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

凯撒密码解码返回错误字符,求初学者级代码修复方案

凯撒密码解码错误修复(适合初学者)

你的代码目标是对字符串做凯撒密码解码,偏移量设为-10,但实际输出和预期不符,问题确实出在字符偏移的计算逻辑上。

错误原因

原代码在处理偏移后ASCII值小于97的情况时,直接对ASCII值取模26,这是错误的逻辑。比如密文中的字母f(ASCII 102),偏移-10后得到92,92%26=14,14+97=111(对应o),但正确结果应该是v。正确的做法应该先把字母映射到0-25的范围(a=0,z=25)再计算偏移,这样循环才符合凯撒密码的规则。

修复步骤(适合初学者)

  • 把小写字母转换为0-25的索引:用ord(let) - ord('a'),这样a对应0,z对应25。
  • 加上偏移量后对26取模:Python的负数取模会自动得到正的结果,不用额外判断是否小于0。
  • 再把索引转换回ASCII值:结果 + ord('a')。

修复后的代码

txt = "xofob qyxxk qsfo iye ez, xofob qyxxk vod iye nygx"

def letterschuiven(cha, vsg):
    for let in cha: 
        lower_let = let.lower()
        if lower_let.isalpha():
            # 转换为0-25的索引
            char_index = ord(lower_let) - ord('a')
            # 计算偏移后的索引,取模26处理循环
            new_index = (char_index + vsg) % 26
            # 转换回ASCII字符
            realans = chr(new_index + ord('a'))
            print(realans, end="")
        else:
            print(let, end="")

letterschuiven(txt, -10)

验证结果

运行修复后的代码,会输出预期结果:never gonna give you up, never gonna let you down

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 11:46:25