Python For循环未在列表中的正确值处停止

Python For循环未在列表中的正确值处停止,python,list,loops,csv,Python,List,Loops,Csv,此函数用于检索csv文件中的所有信息,并将其复制到名为行的列表中。然后,它应该搜索数据库(其中包含帐户信息),并找到正确的用户名和密码 但是,目前我的程序无法在行中找到用户名和密码,而是在数据库末尾打印记录。你知道为什么会这样吗 def Changer(user_information, weight): r = csv.reader(open('AccountsTest.csv')) username = user_information[0][0] password

此函数用于检索csv文件中的所有信息,并将其复制到名为
行的列表中。然后,它应该搜索数据库(其中包含帐户信息),并找到正确的用户名和密码

但是,目前我的程序无法在
中找到
用户名
密码
,而是在数据库末尾打印记录。你知道为什么会这样吗

def Changer(user_information, weight):
    r = csv.reader(open('AccountsTest.csv'))
    username = user_information[0][0]
    password = user_information[0][1]
    lines = list(r)
    for n, line in enumerate(lines):
        if [username, password] == list(line):
            break
    print (lines[n])
当我打印用户名和密码时,会输出“dom”(这是正确的)。但是,当我打印(行[n])
时,CSV文件中的最终记录将被输出,而我希望它输出“dom”记录

我的CSV文件的结构如下所示:

username, password, weight, goal, workout
在本例中,只有前两个(
用户名
密码
)是重要的

我试图复制的CSV文件中的记录如下所示

[['dom', 'dom', '70', 'strong'],[['Bench Press', 'Chest Press Machine', 'Incline Chest Press Machine', 'Incline Bench Press'],['test', 'test']]]
似乎列表(行)从不等于[用户名、密码]。 找不到有关您的代码的任何其他可疑信息

我认为您应该检查以下几点:

  • 确保列表的长度与您的意思相同
  • 确保“DB”的实际写入顺序与您选中的[用户名、密码]相同
  • 确保用户信息数据正确无误

  • GL

    您将两个元素的列表与五个元素的列表进行比较
    [用户名、密码]
    [用户名、密码、目标、体重、训练]。试一试

    if [username, password] == line[:2] 
    

    要从列表中删除用户名和密码,请在您的问题中添加一些输入和输出数据示例。
    list(line)
    中的复数形式看起来可疑…
    如果[username,password]==list(line):
    应该是
    list(line)
    您正在将用户名和密码两个元素的列表与四个元素的列表进行比较,用户名、密码、目标、体重、训练。请尝试
    如果[username,password]==line[:2]
    从列表中切掉用户名和密码。在检查包含2个元素的数组时,您正在传递包含4个元素的行。用户信息是从数据库中提取的,因此应该完全相同。我对问题进行了更多编辑。请再看一看,看看编辑是否更有帮助:D