Python读取TXT文件实现登录功能报错及循环逻辑疑问
问题解决与逻辑梳理
代码错误修复
你的代码有两个核心问题导致验证失败:
格式不匹配:
user.txt里的用户信息是用户名, 密码的格式(比如admin, adm1n),但你拼接的name_pass是用户名 密码(直接空格分隔),两者格式完全不一致,自然永远匹配不上。初始值缺失+未跳过标题行:
若遍历完所有行都没匹配,x变量可能未被赋值引发报错;同时文件第一行是标题而非用户信息,需要跳过避免干扰验证。
修复后的代码如下:
while True: print("Username") username = input().strip() # 去除输入前后空格,避免误输入导致的匹配失败 print("Password") password = input().strip() # 按照文件的格式拼接验证字符串 name_pass = f"{username}, {password}" # 初始化验证状态为失败 validate_success = False with open("user.txt", "r") as f: next(f) # 跳过第一行标题 for line in f: line_content = line.strip() # 去除行尾换行符和前后空格 if name_pass == line_content: validate_success = True break if validate_success: print("Welcome") break else: print("Incorrect Username or Password \nPlease try again")
while循环逻辑梳理
while True是无限循环,代码会反复执行循环体内的内容,直到遇到break语句才会退出循环。你的代码里的循环逻辑可以拆解为:
- 循环启动:重复提示用户输入用户名和密码
- 验证阶段:打开文件逐行比对输入的账号信息
- 结果判断:
- 匹配成功:打印欢迎信息,执行
break跳出循环,程序结束 - 匹配失败:打印错误提示,循环重新执行,再次要求用户输入
- 匹配成功:打印欢迎信息,执行
简单来说,这个循环的作用就是让用户反复尝试登录,直到输入正确的账号密码为止。
内容的提问来源于stack exchange,提问作者Troy
相关产品推荐
相关产品推荐

