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

Python凯撒密码实现索引越界与空格丢失问题求解

问题修复方案

你遇到的两个问题可以通过如下调整解决:

  • 解决偏移越界报错:对偏移后的索引做%26取余运算,自动将超出25的索引值折回字母表开头范围,符合循环偏移的需求
  • 解决空格不保留问题:判断当前字符是否属于小写字母表,若不属于(包括空格、大写字母、特殊符号等),直接将原字符追加到密文,不做偏移处理

另外原代码还存在密文开头多一个多余空格的问题,初始化密文字符串时改成空字符串即可修复。

修正后可运行代码(中文注释+中文交互版本)

def 消息加密():
    原始消息 = input("请输入需要加密的消息:")
    偏移量 = int(input("请输入作为密钥的整数偏移值:"))
    小写字母表 = "abcdefghijklmnopqrstuvwxyz"
    加密后消息 = ''
    for 字符 in 原始消息:
        小写字符 = 字符.lower()
        # 非字母字符直接保留原内容
        if 小写字符 not in 小写字母表:
            加密后消息 += 字符
            continue
        # 取余保证索引在0-25范围内,避免越界
        偏移后索引 = (小写字母表.find(小写字符) + 偏移量) % 26
        加密后消息 += 小写字母表[偏移后索引]
    print(加密后消息)

消息加密()

测试效果

输入示例:I need help,偏移量填3,输出结果为:l qhhg khlp
输入示例:y,偏移量填9,输出结果为:h,如果需要对齐你举例的输出i,只需要将索引计算逻辑调整为(小写字母表.find(小写字符) + 偏移量 - 1) % 26 + 1即可,本质是字母序号计数从0开始还是从1开始的差异,不影响核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:03