我正在尝试让def create()遍历全局变量data {},并在用户输入用户名和密码时检查用户名是否存在。我无法做到这一点,因为首先它是一个空字典,然后我不知道如何多次询问用户名和密码,仍然继续检查字典。如果用户名与字典中的用户名相似,那么我希望此人再次尝试使用新的用户名和密码。
data = {}
def store(stor, username, password):
stor[username] = password
def create():
for i in range(2):
user = input("Username: ")
pas = input("Password: ")
for key in data:
if user == key:
print("Try Again")
user = input("Username: ")
pas = input("Password: ")
store(data,user, pas)
print (data)
create()
答案 0 :(得分:2)
在原始代码中,请注意仅在store
:
user == key
if user == key:
print("Try Again")
user = input("Username: ")
pas = input("Password: ")
store(data,user, pas)
因此,永远不会存储第一次有效的名称。另请注意,在询问新的user
和pas
值后,它们会存储在中,而不会检查新user
是否已在data
中或不。这两个问题都在以下代码中修复:
data = {}
def store(stor, username, password):
stor[username] = password
def create():
for i in range(2):
user = input("Username: ")
pas = input("Password: ")
while user in data:
print("Try Again")
user = input("Username: ")
pas = input("Password: ")
store(data,user, pas)
print (data)
create()
在修订后的代码中,使用了一个while
循环,它将继续询问新的用户名,直到给出一个不在data
中的用户名。只有在验证user
尚未存在于“数据”中之后,才会存储新值。