如何让函数在用户输入时遍历字典并检查键是否存在

2024-05-19 11:31:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让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()

Tags: storein密码forinputdata字典def
1条回答
网友
1楼 · 发布于 2024-05-19 11:31:51

在原始代码中,请注意只有在user == key出现以下情况时才调用store

        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不在`data中之后,才会存储新值。你知道吗

相关问题 更多 >

    热门问题