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

如何在Python中验证用户输入与文件存储的用户名密码是否匹配

问题解决:账号密码验证逻辑修正

你的代码存在两个核心问题,导致输入正确账号密码后仍会持续提示重新输入:

1. 文本分割方式错误

你的txt文件用, (逗号加空格)分隔用户名和密码,部分行的密码末尾还带逗号,但你用空格 分割,这会导致:

  • 用户名被错误读取成name1,(比如第一行split后第一个元素是name1,,而非name1)
  • 密码部分要么读取不全,要么包含多余的逗号

2. 循环逻辑完全颠倒

你当前的逻辑是遍历每一行,只要当前行不匹配就强制要求重新输入,这意味着哪怕用户输入的是第二行的正确账号密码,第一行不匹配时就会直接进入while循环,永远轮不到检查第二行。正确逻辑应该是先把所有账号密码存入映射表,再循环验证用户输入是否在映射表里。

修正后的代码

# 读取文件,构建账号密码映射字典
user_credentials = {}
with open('file.txt', 'r') as f:
    for line in f:
        line = line.strip()  # 去掉换行符和前后空格
        if not line:  # 跳过空行
            continue
        # 用逗号加空格做单次分割,避免密码含逗号时被错误拆分
        parts = line.split(', ', 1)
        username = parts[0]
        # 移除密码末尾可能存在的多余逗号
        password = parts[1].rstrip(',')
        user_credentials[username] = password

# 循环验证用户输入
while True:
    name = input('Enter username: ')
    password = input('Enter password: ')
    if user_credentials.get(name) == password:
        print('验证通过!')
        break
    else:
        print('用户名或密码错误,请重新输入')

代码说明

  • strip()清理每行的换行符和前后空白,避免空行干扰
  • split(', ', 1)做单次分割,防止密码包含逗号时被错误拆分
  • rstrip(',')移除密码末尾的多余逗号,保证密码匹配准确
  • 先将所有账号密码存入字典,通过字典快速查找验证,逻辑清晰且效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:35:11