Python凯撒密码程序函数返回值失效,求修复方法
修复凯撒密码程序的返回值问题
原代码的核心问题
- 加密函数中一开始就清空了输入字符串,导致循环无法遍历原内容;且每次循环仅覆盖
encrypted变量,没有拼接整个加密字符串。 - 解密函数参数错误,且引用了未在函数内定义的外部变量;同样未拼接解密后的完整字符串。
- 主函数中未接收加密/解密函数的返回值,直接调用函数后打印未定义的变量。
修复后的完整代码
def cipher(string): encrypted = "" for letter in string: # 对每个字符的ASCII码偏移4位后转回字符,拼接成加密字符串 encrypted += chr(ord(letter) + 4) return encrypted def decipher(encrypted_str): decrypted = "" for letter in encrypted_str: # 对加密字符的ASCII码反向偏移4位,拼接成原字符串 decrypted += chr(ord(letter) - 4) return decrypted def main(): original_str = input("请输入字符串:") # 接收加密函数的返回值 encrypted_result = cipher(original_str) print("加密后的字符串:", encrypted_result) # 传入加密结果进行解密,接收返回值 decrypted_result = decipher(encrypted_result) print("解密后的原字符串:", decrypted_result) main()
关键修改说明
- 加密函数
cipher:- 不再清空输入的
string参数; - 初始化
encrypted为空字符串,循环遍历每个字符时用+=拼接所有加密后的字符,确保返回完整的加密结果。
- 不再清空输入的
- 解密函数
decipher:- 接收加密后的字符串作为参数(命名为
encrypted_str,避免混淆); - 初始化
decrypted为空字符串,循环拼接每个解密后的字符,返回完整的解密结果。
- 接收加密后的字符串作为参数(命名为
- 主函数
main:- 接收用户输入并保存为
original_str; - 调用加密/解密函数时接收返回值,再进行打印,确保使用的是函数返回的正确结果。
- 接收用户输入并保存为
内容的提问来源于stack exchange,提问作者Arthur
相关产品推荐
相关产品推荐

