我正在考虑使用外部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.")
有关如何更改代码以解决此问题的任何想法?非常感谢!
答案 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.")
我不太明白你的意思
此外,如果凭据正确,则每隔一行的“详细输入不正确”旁边会显示用户信息。 你能详细说明一下吗?