Python For循环未在列表中的正确值处停止
此函数用于检索csv文件中的所有信息,并将其复制到名为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
行的列表中。然后,它应该搜索数据库(其中包含帐户信息),并找到正确的用户名和密码
但是,目前我的程序无法在行
中找到用户名
和密码
,而是在数据库末尾打印记录。你知道为什么会这样吗
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']]]
似乎列表(行)从不等于[用户名、密码]。
找不到有关您的代码的任何其他可疑信息
我认为您应该检查以下几点:
GL您将两个元素的列表与五个元素的列表进行比较
[用户名、密码]
[用户名、密码、目标、体重、训练]。试一试
if [username, password] == line[:2]
要从列表中删除用户名和密码,请在您的问题中添加一些输入和输出数据示例。
list(line)
中的复数形式看起来可疑…如果[username,password]==list(line):
应该是list(line)
您正在将用户名和密码两个元素的列表与四个元素的列表进行比较,用户名、密码、目标、体重、训练。请尝试如果[username,password]==line[:2]
从列表中切掉用户名和密码。在检查包含2个元素的数组时,您正在传递包含4个元素的行。用户信息是从数据库中提取的,因此应该完全相同。我对问题进行了更多编辑。请再看一看,看看编辑是否更有帮助:D