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

Python登录系统:如何按用户名密码过滤数据至新列表并纠错

文本文件登录系统的代码修正与用户信息存储实现

你的代码存在以下几个关键问题:

  • 数据读取方式错误:原文件是逗号分隔格式,但你用了默认的split()(按空格分割),导致每个字段末尾带逗号(比如'test,'),无法和用户输入的test匹配。
  • 错误提示逻辑混乱:只要遍历到不匹配的行就立刻打印错误,比如表头行肯定不匹配,会直接输出错误信息。
  • 未实现登录用户信息存储:没有将匹配到的用户数据存入loginuserdets列表。
  • 循环未正确终止:登录成功后不会退出while True循环,会持续要求输入账号密码。
  • 大小写不兼容:存储的密码是Tester123,用户输入tester123会匹配失败。

修正后的完整代码

def login():
    print("\tUSER LOGIN")
    print("\t----------\n")
    userdets = []
    loginuserdets = []  # 初始化存储登录用户信息的列表

    # 正确读取逗号分隔的用户数据
    with open("userdatabase.txt", "r") as db:
        next(db)  # 跳过表头行
        for row in db:
            # 去除换行符、首尾空格,再按逗号分割字段,同时清理每个字段的多余空格
            cleaned_row = [field.strip() for field in row.strip("\n").strip().split(',')]
            userdets.append(cleaned_row)       
    print(userdets)

    while True:
        username = input("Please Enter your username: ")
        userpassword = input("Please Enter your password: ")
        user_found = False

        for user_info in userdets:
            # 如需支持大小写不敏感,可改为 username.lower() == user_info[0].lower()
            if username == user_info[0] and userpassword == user_info[1]:
                print("Successfully logged in!")
                loginuserdets.append(user_info)  # 将匹配的用户信息存入目标列表
                user_found = True
                break
        
        if user_found:
            print(f"登录用户信息已保存:{loginuserdets}")
            break  # 退出登录循环
        else:
            print("Username or password incorrect! Please try again")

# 调用登录函数
login()

关键修正说明

  1. 数据读取优化:改用split(',')分割逗号分隔的行,再通过列表推导式清理每个字段的空格和残留逗号,确保字段格式为'test'而非'test,'。
  2. 跳过表头:用next(db)跳过第一行的表头数据,避免无效匹配。
  3. 错误提示逻辑修正:通过user_found标记,只有遍历完所有用户都未匹配时才打印错误。
  4. 实现用户信息存储:找到匹配用户后,用loginuserdets.append(user_info)将其信息存入目标列表。
  5. 循环终止处理:登录成功后,先退出用户遍历循环,再通过break退出外层的登录循环。
  6. 大小写兼容可选:如果需要支持大小写不敏感登录,可修改匹配条件为大小写统一转换后比较。

内容的提问来源于stack exchange,提问作者user7418

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:24:41