Python替换加密器如何获取encrypt函数输出并完成剩余加密逻辑
问题核心原因
- 原
encrypt函数没有返回值,Python中字符串是不可变对象,函数内对参数var的赋值仅作用于函数局部作用域,无法将结果传递到函数外部 - 第三部分逐长度判断的逻辑冗余,不需要针对不同单词长度写单独分支,直接遍历字符即可
- 原代码中用
list作为变量名,覆盖了Python内置的list()方法,会引发后续逻辑报错
调整后完整可运行代码
# 1. 输入获取(保留原需求的手动长度输入,不需要可直接删去相关校验逻辑) num = int(input("请输入单词长度:")) word = input("请输入待加密的小写单词:") if num != len(word): print("输入长度与实际单词长度不符") exit() # 2. 优化加密函数,映射规则与原代码完全一致 def encrypt(letter): # 用字典存储映射关系,比多层if判断更高效易维护 encrypt_map = { "a":"m", "b":"n", "c":"b", "d":"v", "e":"c", "f":"x", "g":"z", "h":"p", "i":"o", "j":"i", "k":"u", "l":"y", "m":"t", "n":"r", "o":"e", "p":"w", "q":"q", "r":"a", "s":"s", "t":"d", "u":"f", "v":"g", "w":"h", "x":"j", "y":"k", "z":"l" } # 存在映射规则返回加密结果,非小写字母等特殊字符直接返回原内容 return encrypt_map.get(letter, letter) # 3. 完成剩余加密逻辑 encrypted_list = [encrypt(char) for char in word] encrypted_result = ''.join(encrypted_list) # 输出密文 print(f"加密后结果:{encrypted_result}")
调整说明
- 优化后的
encrypt函数仅需要传入待加密字母,通过return直接返回加密后的结果,无需传入额外变量接收值 - 直接遍历输入单词的每个字符,逐个加密后拼接为完整密文,兼容1到任意长度的输入,不需要写多个长度判断分支
- 完全保留了原设计的字母映射规则,仅调整了代码结构和值传递逻辑
内容的提问来源于stack exchange,提问作者Legofan35664
相关产品推荐
相关产品推荐

