Python 3.x 为什么';我的脚本找不到正确的字典值吗?

Python 3.x 为什么';我的脚本找不到正确的字典值吗?,python-3.x,Python 3.x,我一直在写这个“员工登录”,但是,我不能让这两个独立的事件相互依赖 它可以很好地查找用户名,但是如何让它查找后续密码,而不仅仅是字典中的任何密码 requested_name = [input('Name : ').title()] req_password = [int(input('Password: '))] dic = {'John':123,'Mike':32} auth = {'Admin': 142} for requested_name in requested_name:

我一直在写这个“员工登录”,但是,我不能让这两个独立的事件相互依赖

它可以很好地查找用户名,但是如何让它查找后续密码,而不仅仅是字典中的任何密码

requested_name = [input('Name : ').title()]
req_password = [int(input('Password: '))]

dic = {'John':123,'Mike':32}
auth = {'Admin': 142}

for requested_name in requested_name:
    if requested_name in dic.keys():
        print (f'Hello {requested_name}')

    elif requested_name in auth.keys():
        print('Hello Admin, Take Control')
    else:
        print ('Wrong Username')
        break
    
    for req_password in req_password:
        if req_password in dic.values():
             print('Access Granted')
        else:
            print('Access Denied')

可以使用python字典按名称查找值。为此,只需执行dictionary.get(key),其中dictionary是字典变量,key是要查找的内容。从你的例子来看:
dic.get('John')
将返回
123
,而
dic.get('Adam')
不返回任何内容

请签出此修改的示例以查看。还有一个简短的补充说明,在for循环中将两个变量命名为同一事物通常是不好的做法。您还需要决定是在auth字典中查找密码,还是在常规用户字典中查找密码。在我的示例中,我同时选中了这两个选项

如果请求\u dic.keys()中的名称:
打印(f'Hello{requested_name}')
elif在auth.keys()中请求了\u名称:
打印('你好,管理员,接管')
其他:
打印('错误的用户名')
打破
对于请求密码中的pwd:
如果pwd==dic.get(请求名称):
打印('已授予访问权限')
elif pwd==auth.get(请求名称):
打印('已授予管理员访问权限')
其他:
打印('访问被拒绝')
除了您最初的问题之外,您还可以做一些事情来让输入代码更简洁。开始时,当您获得输入时,您会:

requested_name=[input('name:')。title()]
请求密码=[int(输入('password:'))]
它们周围的
[]
使请求的名称成为长度为1的列表,而不仅仅是变量。想想
x=3
x=[3]
有什么不同。第二张单子里有三张

我继续修改了您的代码:

req_name=input('name:')。title()
req_password=int(输入('password:'))
dic={'John':123,'Mike':32}
auth={'Admin':142}
如果dic.keys()中的请求名称:
#如果我们在这个区块,这意味着这可能是一个普通用户
如果请求密码==dic.get(请求名称):
#常规用户名,密码正确
打印(f'Hello{req_name}')
打印('已授予访问权限')
其他:
#常规用户名,但密码不正确
打印(f'Sorry{req_name},访问被拒绝')
验证密钥()中的elif req_名称:
#如果我们在这个区块,这意味着这可能是一个管理员
如果请求密码==auth.get(请求名称):
#使用正确的密码验证用户名
打印(f'Hello{req_name}控制')
打印('已授予访问权限')
其他:
#使用不正确的密码验证用户名
打印(f'Sorry{req_name},访问被拒绝')
其他:
打印('错误的用户名')

请注意,自从我们更改了前两行之后,我们不再需要这些
for
语句了。此外,由于我们希望使用不同的列表来检查密码,这取决于用户名所在的位置,因此我们可以将密码检查代码与用户名检查代码放在一起。

您可以使用python字典按名称查找值。为此,只需执行dictionary.get(key),其中dictionary是字典变量,key是要查找的内容。从你的例子来看:
dic.get('John')
将返回
123
,而
dic.get('Adam')
不返回任何内容

请签出此修改的示例以查看。还有一个简短的补充说明,在for循环中将两个变量命名为同一事物通常是不好的做法。您还需要决定是在auth字典中查找密码,还是在常规用户字典中查找密码。在我的示例中,我同时选中了这两个选项

如果请求\u dic.keys()中的名称:
打印(f'Hello{requested_name}')
elif在auth.keys()中请求了\u名称:
打印('你好,管理员,接管')
其他:
打印('错误的用户名')
打破
对于请求密码中的pwd:
如果pwd==dic.get(请求名称):
打印('已授予访问权限')
elif pwd==auth.get(请求名称):
打印('已授予管理员访问权限')
其他:
打印('访问被拒绝')
除了您最初的问题之外,您还可以做一些事情来让输入代码更简洁。开始时,当您获得输入时,您会:

requested_name=[input('name:')。title()]
请求密码=[int(输入('password:'))]
它们周围的
[]
使请求的名称成为长度为1的列表,而不仅仅是变量。想想
x=3
x=[3]
有什么不同。第二张单子里有三张

我继续修改了您的代码:

req_name=input('name:')。title()
req_password=int(输入('password:'))
dic={'John':123,'Mike':32}
auth={'Admin':142}
如果dic.keys()中的请求名称:
#如果我们在这个区块,这意味着这可能是一个普通用户
如果请求密码==dic.get(请求名称):
#常规用户名,密码正确
打印(f'Hello{req_name}')
打印('已授予访问权限')
其他:
#常规用户名,但密码不正确
打印(f'Sorry{req_name},访问被拒绝')
验证密钥()中的elif req_名称:
#如果我们在这个区块,这意味着这可能是一个管理员
如果请求密码==auth.get(请求名称):
#使用正确的密码验证用户名
打印(f'Hello{req_name}控制')
打印('已授予访问权限')
其他:
#使用不正确的密码验证用户名
打印(f'Sorry{req_name},访问被拒绝')
其他:
打印('错误的用户名')
请注意,自从我们更改了前两行之后,我们不再需要这些
for
语句了。此外,由于我们希望使用不同的列表来检查密码,这取决于用户名所在的位置,因此我们可以使用u
requested_name = [input('Name : ').title()]
req_password = [int(input('Password: '))]

dic = {'John': 123, 'Mike': 32}
auth = {'Admin': 142}


for req_name, req_pass in zip(requested_name, req_password):
    password = None
    if req_name in dic:
        print(f"Hello {req_name}")
        password = dic[req_name]
    elif req_name in auth:
        print("Hello Admin, Take Control")
        password = auth[req_name]
    else:
        print("Wrong Username")
        break

    if req_pass == password:
        print("Access Granted.!")
    else:
        print("Access Denied.!")
for requested_name in requested_name:
requested_name = input('Name : ').title()
req_password = int(input('Password: '))

dic = {'John':123,'Mike':32}
auth = {'Admin': 142}


if requested_name in dic.keys():
    print(f'Hello {requested_name}')
    if req_password == dic[requested_name]:
        print('Access Granted')
    else:
        print('Access Denied')

elif requested_name in auth.keys():
    if req_password == auth[requested_name]:
        print('Hello Admin, Take Control')
    else:
        print('Access Denied')
    
else:
     print('Wrong Username')