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

加解密程序代码调试请求:修复加密/解密文本无输出异常

修复你的加解密程序空输出问题

我来帮你排查这个加解密程序的问题,你的代码现在输出为空主要是变量覆盖、函数逻辑错误和流程顺序混乱这几个核心原因,咱们一步步拆解并修复:

原代码的关键问题

  • 变量被重复覆盖,操作选择丢失:你先用text获取了用户的加密/解密选择,但后面又用同一个变量接收加密消息,导致后续的if text == '1'判断完全失效——此时text已经是用户输入的明文,不是操作选项了。而且不管用户选啥,都会先执行解密消息的输入,逻辑完全混乱。
  • 函数内部错误重置变量:encrypt函数里你重新定义了text = '',直接把传入的参数清空,自然输出为空;decrypt函数更离谱,用了未赋值的空变量message来调用translate,根本没用到传入的密文参数。
  • 无用函数占坑:toList函数里的split()没赋值给变量(split()不会修改原字符串,要接收返回值才有用),而且这个函数从头到尾没被调用,完全多余。

修复后的完整代码

# 定义加解密字符映射表
decrypted_chars = b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "
encrypted_chars = b"qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM "
encrypt_table = bytes.maketrans(decrypted_chars, encrypted_chars)
decrypt_table = bytes.maketrans(encrypted_chars, decrypted_chars)

def encrypt(plain_text):
    # 字符串转bytes后使用映射表,处理完再转回字符串
    encrypted_bytes = plain_text.encode('utf-8').translate(encrypt_table)
    return encrypted_bytes.decode('utf-8')

def decrypt(cipher_text):
    decrypted_bytes = cipher_text.encode('utf-8').translate(decrypt_table)
    return decrypted_bytes.decode('utf-8')

def main():
    while True:
        choice = input("请选择操作:\n1. 加密消息\n2. 解密消息\n0. 退出程序\n输入选项数字:")
        if choice == '0':
            print("程序已退出")
            break
        elif choice == '1':
            plain_text = input("请输入要加密的消息:")
            result = encrypt(plain_text)
            print(f"加密后的消息:{result}\n")
        elif choice == '2':
            cipher_text = input("请输入要解密的消息:")
            result = decrypt(cipher_text)
            print(f"解密后的消息:{result}\n")
        else:
            print("输入无效,请重新选择!\n")

if __name__ == "__main__":
    main()

修复说明

  1. 流程逻辑梳理:先让用户选择操作,再根据选择获取对应的输入,彻底避免变量覆盖问题
  2. 函数逻辑修正:加解密函数直接使用传入的参数,不再重置为空,并且改成有返回值的设计,更灵活
  3. 类型兼容处理:因为bytes.maketrans生成的映射表只支持bytes类型,所以先把字符串转成bytes处理,再转回字符串输出
  4. 增加循环交互:用户可以反复操作直到选择退出,不用每次重启程序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:07:47