如何解决注册账号和登录的Python程序
所以我正在制作一个需要用户登录或注册的程序。注册帐户转到一个 .txt 文件,我应该从中读取数据以再次登录。
我设法让基础工作。我可以在文件中注册一个新帐户,并且可以使用我创建的每个帐户登录,但我似乎无法让 2 个重要元素正常工作。第一个是当用户插入不存在的用户名/密码时(在这种情况下,程序什么也不做,因为我无法找出一个条件让它返回询问用户名和密码),第二个是当我插入不匹配的用户名和密码时。在这里,程序返回并再次询问它们,但随后不断询问,即使我正确放置了它们。
如果有人有兴趣查看它,这是我的函数:
def ent():
util = False
ppass = False
login = False
while not login:
n_util = input("Introduce your username: ")
password = input("Introduce your password: ")
with open("dadoscontas.txt","r") as f:
while not util:
vski = 0
for line in f:
vski += 1
if vski == 1:
if line.strip() == n_util:
util = True
else:
break
if vski == 2:
if line.strip() == password and user:
ppass = True
if user and ppass:
login = True
print("Logged in")
我整个下午都在尝试不同的事情,看看我是否可以让这两件事发挥作用,但我做不到。正如我所说,上面的功能是有点工作的部分,如果有人可以提供任何建议/指出我正确的方向,那将非常有帮助。提前致谢。
解决方法
此代码是否满足您的需求?
def ent():
util = False
login = False
while not login:
n_util = input("Introduce your username: ")
password = input("Introduce your password: ")
with open("some_test.txt","r") as f:
vski = 0
for line in f:
vski += 1
if vski%2:
if line.strip() == n_util:
util = True
elif util:
if line.strip() == password:
login = True
else:
util = False
print("Logged in")
或者您甚至可以在 return
块中使用 if line.strip() == password:
退出函数。
但我建议您将文件内容存储到字典中(用户名:密码),
因为您在 login=False
:
def ent():
login = False
name=""
my_data = {}
with open("some_test.txt","r") as f:
index = 0
for line in f:
index += 1
if index%2:
name = line.strip()
else:
my_data[name] = line.strip()
while not login:
n_util = input("Introduce your username: ")
password = input("Introduce your password: ")
if n_util in my_data and my_data[n_util] == password:
login = True
print("Logged in")
如果您使用 python2,您可以使用 .get()
或 try
代替 n_util in my_data
以获得更好的性能。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。