密码校验脚本无输出问题求助:请求排查代码错误
解决你的密码校验脚本问题
嘿,我看了你的代码,马上发现了几个可能导致问题的点,最核心的是文件读取时带了换行符,这会让你输入的密码和文件里的密码永远不匹配,另外还有小的逻辑细节需要调整:
问题根源
当你用password_file.read()读取文件时,会把文件末尾的换行符\n也一起读进来。比如你的SecretPasswordFile.txt里写的是12345,实际secret_password的值是"12345\n",而你输入的密码是"12345",两者自然不相等,所以不会进入if分支;另外原来的代码在密码错误时会输出Access Denied!!!,但如果密码正确时只是把内容加到result里最后统一打印,要是因为换行符问题没进if,最后就会打印空字符串,看起来像脚本没反应。
修正后的代码
# 用with语句自动管理文件,避免忘记关闭 with open('SecretPasswordFile.txt') as password_file: # 用strip()去除两端空白(包括换行符、空格) secret_password = password_file.read().strip() result = "" typed_password = input("Enter your Password!: ") if typed_password == secret_password: result += "Access granted!" if typed_password == "12345": result += " That password is one that an idiot puts on their luggage!!!" print(result) else: print('Access Denied!!!')
关键修改说明
- 使用
with语句:它会在代码块结束后自动关闭文件,比手动调用close()更安全,不用担心文件资源泄漏。 - 添加
.strip()方法:彻底去除读取到的密码字符串两端的空白字符(换行符、空格、制表符都算),确保文件里的密码和你输入的内容完全一致。 - 调整
print(result)的位置:把它放到if分支内部,这样只有密码正确时才会打印结果,避免密码错误时输出空行,让你误以为脚本没反应。
额外排查点
如果修改后还是有问题,可以检查这两点:
- 确认
SecretPasswordFile.txt和脚本在同一个文件夹里,不然要写完整的文件路径(比如Windows下的C:/Users/你的用户名/SecretPasswordFile.txt,Linux/macOS下的/home/你的用户名/SecretPasswordFile.txt)。 - 打开文件看看,确保里面只有密码,没有多余的空格或其他字符。
内容的提问来源于stack exchange,提问作者Nourhan Naim
相关产品推荐
相关产品推荐

