微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

注册账号和登录的Python程序

如何解决注册账号和登录的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 举报,一经查实,本站将立刻删除。