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
相关产品推荐
相关产品推荐

