0

所以我正在制作一个需要用户登录或注册的程序。注册帐户转到一个 .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")

我整个下午都在尝试不同的事情,看看我是否能让这两件事发挥作用,但我做不到。正如我所说,上面的功能是有点作用的部分,如果有人可以提出任何建议/指出正确的方向,那将非常有帮助。先感谢您。

4

1 回答 1

0

此代码是否满足您的需求?

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")

或者您甚至可以使用returninif 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()ortry代替以n_util in my_data获得更好的性能。

于 2021-03-17T10:41:10.543 回答