使用CSV行的条件

时间:2014-01-22 21:10:57

标签: python

我正在考虑使用外部CSV文件创建一个非常基本的用户名和密码程序。该程序允许用户输入用户名和密码,然后if语句检查用户名和密码是否与CSV文档中的行匹配。如果是,则显示相应的用户信息。

我遇到的问题是我的else:声明。如果用户详细信息与行的详细信息(用户名或密码错误)不匹配,则应显示通知。通过添加else行,它会检查每行,因此我收到多个“详细输入错误”。消息。此外,如果凭据正确,则用户信息将显示在每个其他行的“详细输入不正确”旁边。

import csv

Username = input("Username: ")
Password = input("Password: ")

with open('data.csv', 'rt', newline='') as file:

    open_file = csv.reader(file)

for row in open_file:
    if row[0] == Username and row[1] == Password:
        print("Secret phrase: ", row[2])
    else:
        print("Incorrect user details.")

有关如何更改代码以解决此问题的任何想法?非常感谢!

1 个答案:

答案 0 :(得分:3)

python中有一些可爱的东西,叫做for-else。如果循环正常退出(迭代器用完),则执行属于for循环而不是if的else子句:

for row in open_file:
    if row[0] == Username and row[1] == Password:
        print("Secret phrase: ", row[2])
        break # stop searching and skip the for-else.
else:
    print("Incorrect user details.")

我不太明白你的意思

  

此外,如果凭据正确,则每隔一行的“详细输入不正确”旁边会显示用户信息。   你能详细说明一下吗?