Python 如何使用文本文件创建登录
所以我一直在尝试创建一个测验,你必须有一个帐户,这意味着你可以注册和登录。我成功地对注册部分进行了编码(我非常自豪),它将登录详细信息保存到一个单独的文本文件中,当它保存登录详细信息时,看起来是这样的:username:password 现在,我正在努力与登录部分,我想你必须阅读文本文件,然后分割用户名和密码,然后我有一些如何比较输入的用户名和密码保存的。 到目前为止,这是我为登录部分所做的,但它不起作用:Python 如何使用文本文件创建登录,python,logging,login,append,Python,Logging,Login,Append,所以我一直在尝试创建一个测验,你必须有一个帐户,这意味着你可以注册和登录。我成功地对注册部分进行了编码(我非常自豪),它将登录详细信息保存到一个单独的文本文件中,当它保存登录详细信息时,看起来是这样的:username:password 现在,我正在努力与登录部分,我想你必须阅读文本文件,然后分割用户名和密码,然后我有一些如何比较输入的用户名和密码保存的。 到目前为止,这是我为登录部分所做的,但它不起作用: def login(): filename = 'Accounts.txt' openf
def login():
filename = 'Accounts.txt'
openfile = open('Accounts.txt', "r")
Userdata = openfile.readlines()
with open('Accounts.txt', 'r') as file:
for line in file:
user2, passw = line.split(':')
login2 = input("Enter username: ")
passw2 = input("Enter passwordd: ")
if login2 == user2 and passw2 == passw:
print("Logged in")
else:
print("User or password is incorrect!")
openfile.close();
下面是整个代码的样子(如果需要):
如果您对我如何创建登录部分有任何想法,那将很有帮助。您正在询问帐户文件中每一行的用户用户名和密码。在for循环之外获取输入的登录信息。不确定您的代码中有什么不起作用,但我更新了代码,如下所示,并且能够打印登录
def login():
#filename = 'Accounts.txt'
#openfile = open('Accounts.txt', "r")
#Userdata = openfile.readlines()
with open('Accounts.txt', 'r') as file:
login2 = input("Enter username: ")
passw2 = input("Enter passwordd: ")
for line in file:
user2, passw = line.split(':')
if login2 == user2 and passw2 == passw:
print("Logged in")
break
else:
continue
login()
欢迎来到编程!
这可能会让人望而生畏,但要继续学习和练习。你走对了
我在代码中看到了一些可以改进的地方。我的评论如下:
1) 您不需要同时使用open()
(和close()
)和来访问文件内容。在这种情况下,只需将与
一起使用即可。这将使您的代码更简单。()
2) 您正在循环中请求用户登录&passwd(也就是多次)。这对你的用户来说是非常烦人的。将输入
的调用移动到for
循环之前
3) 登录成功时,您还需要中断
循环
因此,您的代码有一个稍微改进的版本:
filename = 'Accounts.txt'
with open(filename, 'r') as file:
login2 = input("Enter username: ")
passw2 = input("Enter password: ")
for line in file:
user2, passw = line.split(':')
if login2 == user2 and passw2 == passw:
print("Logged in")
break
else:
print("User or password is incorrect!")
它不起作用不是对问题的一个很好的描述。代码的流程是从后到前的。您不想在for file:
循环中的行中询问用户的用户名和密码。在循环之前这样做一次。除此之外,可能会有很多问题,例如空格。您可以对保存在文件中的项目以及用户输入调用strip()
,但这也会删除密码中的故意空白。什么是失败的示例输入?OP还需要在成功时打破循环。循环结束后才打印成功/失败消息。如果我有100000个唯一用户,平均会提示用户多少次他们的登录详细信息?在这里,当找到正确的匹配时,应该使用一个中断,并继续使用,直到所有行都处理完毕。仍然会平均提示用户50000次。对此问题的任何合理答案都需要将input()
行从for
循环中提升出来。同意,提示应该在循环外。
filename = 'Accounts.txt'
with open(filename, 'r') as file:
login2 = input("Enter username: ")
passw2 = input("Enter password: ")
for line in file:
user2, passw = line.split(':')
if login2 == user2 and passw2 == passw:
print("Logged in")
break
else:
print("User or password is incorrect!")