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

时间:2019-01-30 14:26:10

标签: python list loops csv

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

但是,当前我的程序无法在username中找到passwordlines,而是在数据库末尾打印记录。任何想法为什么会发生这种情况?

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])

当我print username and password时,输出“ dom”(正确)。但是,当我print (lines[n])时,当我希望它输出“ dom”记录时,将输出CSV文件中的最终记录。

我的CSV文件的结构如下:

username, password, weight, goal, workout

在此示例中,只有前两个(usernamepassword)很重要

我要复制的CSV文件中的记录如下

[['dom', 'dom', '70', 'strong'],[['Bench Press', 'Chest Press Machine', 'Incline Chest Press Machine', 'Incline Bench Press'],['test', 'test']]]

2 个答案:

答案 0 :(得分:1)

您正在将两个元素[username, password]的列表与五个元素[username, password, goal, weight, workout]的列表进行比较。尝试

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

从列表中切出用户名和密码

答案 1 :(得分:0)

似乎list(line)永远不等于[username,password]。 找不到其他可疑代码。

我认为您应该检查的几件事:

  1. 确保您的列表长度与您的意思相同。
  2. 请确保您的“数据库”实际上按照与您检查[用户名,密码]相同的顺序编写。
  3. 确保用户信息数据正确。

GL