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

Python加密代码未返回ASCII字符问题求助

解决凯撒密码加密返回非预期字符的问题

嘿,作为Python新手能写出凯撒密码的核心逻辑已经超棒啦!你遇到的“未返回ASCII字符”问题,其实是代码没处理非字母字符导致的——咱们一步步拆解下:

问题根源

你的代码只判断了字符是否为大写字母,所有非大写的内容(包括小写字母以外的空格、标点、数字)都会进入else分支,强行按照小写字母的规则计算。比如输入里的空格(ASCII码32),代入公式后会被转换成奇怪的字符(甚至可能是不可打印的控制字符),这就让你误以为没有返回ASCII字符。

另外还有个小细节:你用for char in range(len(text))再通过索引取字符的写法有点绕,Python里可以直接遍历字符串的每个字符哦~

修正后的代码

我帮你调整了代码,添加了非字母字符的处理逻辑,同时优化了遍历方式:

def encrypt(text, shift):
    cipher = ""
    for char in text:
        if char.isupper():
            cipher += chr((ord(char) + shift - 65) % 26 + 65)
        elif char.islower():
            cipher += chr((ord(char) + shift - 97) % 26 + 97)
        else:
            # 非字母字符直接保留,不参与加密
            cipher += char
    return cipher

关键修改点

  • 精准判断字符类型:用elif char.islower()单独处理小写字母,把非字母字符(空格、标点、数字等)单独拿出来直接追加到结果里,避免强行转换出奇怪字符。
  • 更简洁的遍历方式:直接遍历text的每个字符,不用通过索引取值,代码可读性更高。

测试示例

比如你输入:

print(encrypt("Hello, World!", 3))

会得到正常的ASCII加密结果:Khoor, Zruog!

如果是纯字母输入,比如encrypt("ABCxyz", 2),会返回CDEzab,完全符合凯撒密码的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:28:54