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

Python实现凯撒密码加密时空格被转为q而非正常保留的问题求助

凯撒密码空格异常转换问题排查

问题根因

你当前的代码仅对「大写英文字母」做了单独判断,其余所有字符(包括空格、小写字母、数字、标点等)全部进入小写加密分支处理。空格的ASCII码值为32,当偏移量为3时,计算逻辑如下:
(32 + 3 - 97) % 26 +97 = (-62) %26 +97 = 16 +97 = 113,对应字符就是q,和你遇到的输出结果完全吻合。

修复方案

在加密逻辑里新增非字母字符的判断,遇到非字母时直接原样追加到加密结果中即可,修改后的代码如下:

message = input("Message to be encrypted: ")
shift = int(input("Number to shift by: "))

def encrypt(message,shift):
    encryption = ""
    # 可直接遍历字符,不需要按索引取值
    for char in message:
        # 非字母字符直接保留
        if not char.isalpha():
            encryption += char
        elif char.isupper():
            encryption += chr((ord(char) + shift - 65) % 26 + 65) 
        else:
            encryption += chr((ord(char) + shift - 97) % 26 + 97)
    return encryption

print("Encrypted Text:",encrypt(message,shift))

验证效果

输入Secret Message,偏移量填3时,输出结果为Vhfuhw Phvvdjh,和预期完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:04