我需要为客户端注册创建一个函数,其中客户端的用户名必须唯一。我创建了一个dict和一个list,其中放置了txt文件中的所有内容,现在我一直在尝试设置forwhile循环,但是效果不佳:

client_list = []

def c_l():
    with open("svi.txt","r") as f:
        pieces = ["username","password","name","lastname","role"]
        for r in f.readlines():
            dicct = {}
            bla = r.strip().split("|")
            count = 0
            for i in bla:
                dicct[pieces[count]] = i
                count += 1
            client_list.append(dicct)

c_l()

def reg():
    for r in client_list:
        while True:
            username = input("Username: ")
            if (username == r["username"] ):
                print("Username is already taken, please try again: ")
            else:
                break

password = input("Your password:")
name = input("Your name: ")
lastname = input("Your lastname: ")

client = username + "|" + password + "|" + name + "|" + lastname + "|" + "buyer"

with open("svi.txt","a") as f:

    f.write(client)
reg()


第一次键入此功能时,我做了一个功能,即打开文件,键入唯一用户名的代码,然后将客户端打印到该txt文件中。在该函数中,我的while循环起作用了,因为我要做的就是拆分文件的各个部分并为正确的索引建立索引,然后使此while循环正常工作。但是现在我被告知必须使用dictlist来完成此操作,而我尝试这样做,但我不知道方法的问题所在。

最佳答案

您可能需要将用户名加载到set中,以确保唯一性。然后,在您的reg函数中,检查新用户名是否在集合中,例如:

if username in myset:
    raise InvalidUsernameError
else:
    myset.add(username)

10-08 04:22