如何让我的函数通过字典并检查用户输入时密钥是否存在

时间:2014-08-09 02:31:19

标签: python dictionary

我正在尝试让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()

1 个答案:

答案 0 :(得分:2)

在原始代码中,请注意仅在store

时调用user == key
        if user == key:
            print("Try Again")
            user = input("Username: ")
            pas = input("Password: ")
            store(data,user, pas)

因此,永远不会存储第一次有效的名称。另请注意,在询问新的userpas值后,它们会存储在中,而不会检查新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尚未存在于“数据”中之后,才会存储新值。