Python编写Cesar encryption凯撒加密函数运行异常如何修复
凯撒加密函数问题修复方案
原代码存在的问题
- 语法错误:
chr((ord(char) + offset)行括号不匹配,多写1个左括号且缺少2个右括号,直接运行会抛出语法报错 - 仅处理了小写字母,未适配大写字母、空格等字符,你的测试输入为全大写+空格,运行后会返回空字符串,完全不符合预期
- 未做字母边界绕回处理:当偏移后的ASCII值超过小写字母
z/大写字母Z的范围时,会输出非字母的特殊字符,不符合凯撒加密的规则 - 未对偏移量做标准化处理:如果传入的偏移量大于26或者为负数,加密结果会不符合预期
修复后的代码
def cesar_encryption(message, offset = 1): encrypted_message = "" # 标准化偏移量,避免负数或超过26的异常情况 offset = offset % 26 for char in message: # 处理小写字母 if char.islower(): encrypted_char = ord(char) + offset if encrypted_char > ord('z'): encrypted_char -= 26 encrypted_message += chr(encrypted_char) # 处理大写字母 elif char.isupper(): encrypted_char = ord(char) + offset if encrypted_char > ord('Z'): encrypted_char -= 26 encrypted_message += chr(encrypted_char) # 非字母字符直接保留(空格、标点等) else: encrypted_message += char return encrypted_message print(cesar_encryption("I LOVE NATURE", 1))
运行结果
输入"I LOVE NATURE"偏移1时,输出为:J MPWF OBUVSF,符合凯撒加密的预期。
内容的提问来源于stack exchange,提问作者Luz Dary Marañón
相关产品推荐
相关产品推荐

