Python:如何将从.txt读取的两个列表(用户名和密码)与用户输入进行比较
我编写了一个代码,要求用户输入用户名和密码。然后,程序应打开一个包含用户名和密码列表的.txt文件,并检查输入的条目是否对.txt文件中的用户名和密码数据库有效。这是我第一次在这里发布,请告知您还需要什么。我希望附上我的.py文件和.txt文件 我可以输入第一个用户名和密码,但第二个,我必须输入两次才能成功。我确信这是由于for循环,但是我不知道如何将输入与存储在.txt中的用户名和密码进行比较Python:如何将从.txt读取的两个列表(用户名和密码)与用户输入进行比较,python,authentication,Python,Authentication,我编写了一个代码,要求用户输入用户名和密码。然后,程序应打开一个包含用户名和密码列表的.txt文件,并检查输入的条目是否对.txt文件中的用户名和密码数据库有效。这是我第一次在这里发布,请告知您还需要什么。我希望附上我的.py文件和.txt文件 我可以输入第一个用户名和密码,但第二个,我必须输入两次才能成功。我确信这是由于for循环,但是我不知道如何将输入与存储在.txt中的用户名和密码进行比较 #======== User Login ==================== #read t
#======== User Login ====================
#read the use.txt
username_reg = []
password_reg = []
i = 0
username_list = []
password_list = []
with open('user.txt', 'r+') as f: #open user.txt
for line in f: #Now we reading user.txt
line = line.replace(" ", "") #replace space before password with no space
line = line.replace("\n", "") #remove the next line character as this will take a space in the list
line = line.split(",") #separate user name and password
username_reg = line[0]
password_reg = line[1]
username_list.append(username_reg)
password_list.append(password_reg)
#List check
print(username_list)
print(password_list)
print(len(username_list))
username = input("Please enter username: ")
password = input("Please enter password: ")
for i in range(len(username_list)):
if username == str(username_list[i]) and password == str(password_list[i]):
print('''Please select one of the following options:
r - register user
a - add task
va - view all tasks
vm - view my tasks
e - exit''')
break
while username != str(username_list[i]) and password != str(password_list[i]):
print("invalid username or password")
username = input("Please enter username: ")
password = input("Please enter password: ")
i += 1
print("Great success")
我尝试过修改一下for循环,它对我很有效。看一看 i=0;login=0此处的login类似于一个标志。登录成功后,将获取值1,否则将保持0。 当我在列表中时: 如果用户名==strusername\u列表[i]和密码==strpassword\u列表[i]: 登录名=1 “打印”请选择以下选项之一: 注册用户 a-添加任务 va-查看所有任务 vm-查看我的任务 电子出口' 打破 i+=1 如果i==lenusername\u列表和login==0: 打印无效的用户名或密码 用户名=输入请输入用户名: 密码=输入请输入密码: i=0
for循环中的第二个if条件检查列表中所有值的登录是否成功,这意味着用户名和密码不正确,因此if条件要求新的输入,并将while循环从0重新启动。。当涉及到将某些特定数据与实体关联时,字典非常有用。在本例中,我将使用一个将密码与每个用户名相关联 考虑到您的数据库存储的信息如下:
user1, password1
user2, password2
user3, password3
然后我们可以执行以下操作:
content = {}
with open('db.txt', 'r') as file:
for line in file.read().splitlines():
user = line.split(', ')
content.update({user[0]: user[1]})
username = input("Please enter username: ")
password = input("Please enter password: ")
if password == content[username]:
print('''Please select one of the following options:
r - register user
a - add task
va - view all tasks
vm - view my tasks
e - exit''')
我们基本上是打开文件,使用str类的splitlines函数读取它的行,并在每行上迭代,使用split“,”分隔用户名和密码,因为“,”是分隔符,并使用每个用户对应的新记录更新contentdictionary
然后,在询问凭据后,我们只需在内容字典中查找给定的用户名,并检查密码是否相同。我忘记添加user.txt文件的格式为:admin、adm1n abc、defgRevilscano,非常感谢。我承认,我是一个初学者,在这几行代码中我学到了一些新东西,它们非常有效。没问题,如果我能从我的答案中澄清你想要的任何东西,我很乐意帮助你我会做的,但首先让我读一下你在那里使用的一些东西,并尝试理解其中的逻辑。肯定会有更多的问题困扰你:D