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

Python读取TXT文件实现登录功能报错及循环逻辑疑问

问题解决与逻辑梳理

代码错误修复

你的代码有两个核心问题导致验证失败:

  1. 格式不匹配:
    user.txt里的用户信息是用户名, 密码的格式(比如admin, adm1n),但你拼接的name_pass是用户名 密码(直接空格分隔),两者格式完全不一致,自然永远匹配不上。

  2. 初始值缺失+未跳过标题行:
    若遍历完所有行都没匹配,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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:36:58