作为我上一个问题的延续使用文本文件创建登录程序,我的程序正在尝试验证用户输入的用户名和密码,如果用户名和密码存在于 user.txt 中,则用户应该是能够访问菜单。问题是它只读取 user.txt 文件的最后一行,因此只允许最后注册的用户登录。我希望 user.txt 文件中的所有用户都能够登录。
这是我到目前为止所尝试过的
usernames = []
passwords = []
user_name = input("Please enter your username: ")
pass_word = input("Please enter your password: ")
with open("user.txt", "r+") as f1, open("tasks.txt", "r+") as f2:
for lines in f1:
logins = lines.strip()
logins = lines.split(", ")
username = logins[0]
password = logins[1]
usernames.append(logins[0])
passwords.append(logins[1])
while user_name == username and pass_word == password:
menu = input('''Please select one of the following options:\n
r - register a user
a - add task
va - view all tasks
vm - view my tasks
e - exit ''').lower()
user.txt 文件的内容
admin, adm1n
Maverick, FlyGuy
您没有使用
usernames
和 passwords
列表,因此仅针对最后一次迭代/行进行检查。如果(用户名、密码)成对存储,验证凭据也更容易,如下所示:
username_and_passwords = []
entered_username = input("Please enter your username: ")
entered_password = input("Please enter your password: ")
with open("user.txt", "r+") as f1, open("tasks.txt", "r+") as f2:
for line in f1:
username, password = line.strip().split(", ")
username_and_passwords.append((username, password))
while (entered_username, entered_password) in username_and_passwords:
menu = input('''Please select one of the following options:\n
r - register a user
a - add task
va - view all tasks
vm - view my tasks
e - exit ''').lower()
试试这个代码
usernames = []
passwords = []
user_name = input("Please enter your username: ")
pass_word = input("Please enter your password: ")
with open("user.txt", "r+") as f1:
for lines in f1:
logins = lines.strip('\n')
logins = lines.split(", ")
username = logins[0]
password = logins[1].replace('\n','')
usernames.append(username)
passwords.append(password)
while user_name in usernames and pass_word in passwords:
menu = input('''Please select one of the following options:\n
r - register a user
a - add task
va - view all tasks
vm - view my tasks
e - exit ''').lower()