Python登录代码遍历文件逐行输出结果问题求助
问题解决:Python登录验证只输出一次结果
你的问题是当前代码会遍历accounts.txt的每一行并逐个输出提示——输入正确时,会先输出一次登录成功,同时对其他所有行输出错误提示;输入错误时则逐行输出错误。想要改成只输出一次最终结果(成功或失败),可以按下面的方法修改:
原代码
userlog = input("What is your username?") passlog = input("What is your password?") for fileread in open("accounts.txt", "r").readlines(): file = fileread.split() if userlog == file[0] and passlog == file[1]: print("Succesfully logged in") elif userlog != file[0] and passlog != file[1]: print("Username or password is incorrect")
修正后的代码
userlog = input("请输入用户名:") passlog = input("请输入密码:") logged_in = False # 标记是否找到匹配的账号 # 用with语句安全打开文件,避免资源泄漏 with open("accounts.txt", "r") as f: for line in f: line = line.strip() # 去掉行首尾的空白和换行符 if not line: # 跳过空行 continue account = line.split() # 确保行格式正确,避免索引越界 if len(account) < 2: continue if userlog == account[0] and passlog == account[1]: logged_in = True break # 找到匹配项后直接跳出循环,不用再检查其他行 # 循环结束后统一输出结果 if logged_in: print("登录成功") else: print("用户名或密码错误")
关键修改点说明
- 新增
logged_in布尔变量,用来记录是否找到匹配的账号,而非在循环里立即打印结果 - 使用
with语句打开文件,这是Python处理文件的标准方式,会自动关闭文件,避免资源浪费 - 增加空行和格式错误行的处理,避免因文件内容不规范导致报错
- 找到匹配账号后用
break跳出循环,不用遍历剩余行,提升效率 - 循环结束后根据
logged_in的值统一输出最终结果,确保只打印一次
内容的提问来源于stack exchange,提问作者Eldq
相关产品推荐
相关产品推荐

