如何使用CSV文件为Python中的登录代码消除错误



这是我从csv文件中验证用户ID和密码的代码。

代码

import pandas as pd
login():
df=pd.read_csv("IDPASS.csv")
for i in range(len(df)):
x=input("Enter User Name=")
y=input("ENter The Password=")
if (df.iloc[i]["ID"])==x:
if str(df.iloc[i]["PASS"])==y:
print("Succesfully Logined")
break
else:
print("Invalid Password")
print("Try Again!!")

else:
print("Invalid Username")
print("Try Again!!")
login()

Output1:

Enter User Name=JEET1073
ENter The Password=str1234
Succesfully Logined

在这里我输入了正确的id密码,代码执行得很完美!!

Output2:

Enter User Name=dw
ENter The Password=wd
Invalid Username
Try Again!!
Enter User Name=JEET1073
ENter The Password=str1234
Invalid Username
Try Again!!
Enter User Name=JEET1073
ENter The Password=str1234
Invalid Username
Try Again!!
Enter User Name=JEET1073
ENter The Password=str1234
Invalid Username
Try Again!!
Enter User Name=JEET1073
ENter The Password=str1234
Invalid Username
Try Again!!

在这里,一开始我输入了错误的id和密码,然后我试图输入正确的id和口令,但它显示了无效的用户名。任何解决方案都将受到赞赏,我也希望有一个解决方案,如果用户输入了错误的id密码,代码应该再次运行,询问id和密码,直到输入的用户id和密码不正确。提前谢谢。

澄清之后,这应该是您正在寻找的功能。

首先导入熊猫并读取csv:

import pandas as pd
df = pd.read_csv("IDPASS.csv")

现在,我们将读取csv中存储的值,并将其存储为列表。用户列表和密码列表。一个好的做法是在任何循环之外进行此操作。

csv_id_list = df['ID'].to_list()
csv_pass_list = df['PASS'].to_list()

如果你不知道循环要持续多久(我们不知道用户会尝试密码多少次(,请使用while循环。初始化正确登录变量的初始状态。

correct_login = False

现在魔法在哪里发生。我们将开始一段时间的循环。当correct_login为false时,我们将不断询问用户的用户名和密码。如果用户的输入与列表元素匹配,则获取该列表元素的索引,然后启动另一个IF语句。这将打破while循环。否则,他们会收到一条无效的密码消息,如果输入与正确索引处的列表元素匹配,则打印correct_msg和correct_login=True。循环时中断。ELSE correct_login仍然为false,用户必须重试
这意味着用户必须输入正确的用户名及其对应的密码,他们不能输入其他用户的密码并登录。

while not correct_login:
x = input("Enter User Name=")
y = input("Enter The Password=")
correct_msg = 'Successfully logged in.'
incorrect_msg = 'Invalid Password.' + 'n' + 'Try Again.'
if x in csv_id_list:
x_index = csv_id_list.index(x)
if y == csv_pass_list[x_index]:
print(correct_msg)
correct_login = True
else:
correct_login = False
print(incorrect_msg)
else:
correct_login = False
print(incorrect_msg)

最新更新