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

Python实现Caesar Cipher加密时特殊字符未显示如何使其不加密保留?

问题原因

原代码仅针对空格、大写英文字母、小写英文字母三类字符做了分支处理,其余字符(比如标点、数字、特殊符号等)没有匹配到任何处理逻辑,不会被追加到输出结果中,因此最终输出会丢失这部分内容。

调整方案

只需要在现有分支判断的最后新增一个else分支,将所有不属于上述三类的字符直接原样追加到密文字符串即可,同时修正原代码存在的缩进错误:

def caesar_encript(txt, shift):
    chiper = ""
    for i in range(len(txt)):
        char = txt[i]
        
        if char == " " :
            chiper += ' '
        elif (char.isupper()):
            chiper += chr((ord(char) + shift - 65) % 26 + 65)
        elif (char.islower()):
            chiper += chr((ord(char) + shift - 97) % 26 + 97)
        # 新增分支:所有其他字符原样输出
        else:
            chiper += char
            
    return chiper

def caesar_decript(chiper, shift):
    return caesar_encript(chiper, -shift)
 

msg = 'Random Mesage, WOOOWW!'
cpr = caesar_encript(msg,4) 
txt = caesar_decript(cpr,4)

print('plain text : ', txt)
print('chiper text : ', cpr)

运行效果

调整后输出结果如下,特殊符号会正常保留:

plain text :  Random Mesage, WOOOWW!
chiper text :  Vserqsk Qiweki, ASSSAA!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:27:01