我需要为客户端注册创建一个函数,其中客户端的用户名必须唯一。我创建了一个dict
和一个list
,其中放置了txt
文件中的所有内容,现在我一直在尝试设置for
和while
循环,但是效果不佳:
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
循环正常工作。但是现在我被告知必须使用dict
和list
来完成此操作,而我尝试这样做,但我不知道方法的问题所在。 最佳答案
您可能需要将用户名加载到set中,以确保唯一性。然后,在您的reg函数中,检查新用户名是否在集合中,例如:
if username in myset:
raise InvalidUsernameError
else:
myset.add(username)