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

Python任务管理器登录验证问题:输入正确账号密码无法触发菜单

任务管理器登录验证问题修复

你的代码存在几个关键问题,导致登录验证失败后无法进入功能菜单,以下是问题分析和修正方案:

问题点分析

  • 输入逻辑位置错误:你把用户输入用户名密码的代码放在了读取文件的for循环内部,这会导致每读取一行用户数据就立刻弹出输入框,而且仅验证当前行的用户,无法检查所有已存储的用户信息。
  • 字符串空白处理遗漏:你的user.txt里密码前带有空格(admin, adm1n),直接用split(",")会得到带空格的密码(' adm1n'),但用户输入的是无空格的adm1n,导致匹配失败。
  • 输入语句语法错误:input函数里的换行需要用转义字符\n,直接换行会触发语法报错。
  • 方法调用错误:.lower()是字符串方法,必须加括号才能执行(.lower()),否则只是引用方法对象,不会把输入转为小写。

修正后的完整代码

usernames = []
passwords = []

# 先完整读取所有用户信息到列表
with open("user.txt", "r") as f1:
    for line in f1:
        # 去除行首尾空白后分割,再清理每个元素的多余空格
        login_info = line.strip().split(",")
        username = login_info[0].strip()
        password = login_info[1].strip()
        usernames.append(username)
        passwords.append(password)

# 循环验证登录,直到输入正确
logged_in = False
while not logged_in:
    user_name = input("Please enter your username:\n")
    pass_word = input("Please enter your password:\n")
    
    # 遍历所有用户信息进行匹配
    for u, p in zip(usernames, passwords):
        if user_name == u and pass_word == p:
            logged_in = True
            break
    
    if not logged_in:
        print("Invalid username or password. Please try again.")

# 登录成功后显示功能菜单
menu = input('''Please select one of the following options:

    r - register a user 
    a - add task
    va - view all tasks
    vm - view my tasks
    e - exit ''').lower()

关键修改说明

  1. 分离读取与验证逻辑:先把所有用户信息读取到列表中,再统一进行登录验证,确保能检查所有已存储的用户。
  2. 清理空白字符:用strip()去除行首尾和分割后元素的多余空格,解决密码带空格的匹配问题。
  3. 修复语法错误:将输入语句中的换行改为\n,给.lower()添加括号以正确调用方法。
  4. 添加循环验证:增加while循环,用户输入错误时提示重新输入,直到登录成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:37:36