Python密码加解密程序反转解密返回字符串时输出空白问题
问题原因及解决方案
根因分析
- 最高概率是reverse输入值未匹配分支条件:现有代码仅对
reverse == 'N'和reverse == 'Y'两个精确值做了分支判断,没有兜底逻辑。如果用户输入了小写的y/n、输入内容带前后空格、或者误输入其他字符,两个分支都不会触发,自然不会有任何解密结果输出,表现为空白。 - 次概率是
decryption函数内部逻辑问题:你在调用解密函数时传入了reverse参数,如果函数内部针对reverse='Y'的场景已经做了反转处理,甚至逻辑错误返回了空字符串/None,那后续再做切片反转得到的也是空值,打印出来就是空白。
修复方案
- 首先统一输入的reverse格式,避免匹配失败:
将输入行reverse = input()修改为:
reverse = input().strip().upper()
这段代码会自动去除输入的前后空格、把小写字母转为大写,确保输入y、Y这类内容也能匹配到分支条件。
2. 补全兜底分支,方便定位问题:
在解密的两个判断分支后增加else分支,打印实际接收到的reverse值,排查匹配问题:
else: print(f"无效的reverse参数: {repr(reverse)}")
- 验证decryption函数的返回值:
在reverse='Y'的分支中,先打印未反转的原始返回值,确认函数返回正常:
elif reverse == 'Y': orig_password = decryption(encrypted_password, key1, key2, reverse) # 临时加这行调试,确认orig_password非空 print(repr(orig_password)) print(orig_password[::-1])
如果调试发现orig_password为空,说明问题出在decryption函数内部的reverse参数处理逻辑,需要调整函数,避免在解密时重复处理反转、或者修正错误的返回逻辑。
内容的提问来源于stack exchange,提问作者Inigo Vanaman
相关产品推荐
相关产品推荐

