python 3的新手,在访问字典值时遇到问题

时间:2019-07-04 18:26:30

标签: python python-3.x

我正在尝试使用存储在词典中的信息制作一个简单的登录页面。每当我输入正确的用户名和密码组合时,它都会退回到else语句-“数据库中找不到对不起的凭据”。我在做什么错了?

acc={"t":"000", "b":"123", "r":"456"}
p=input ("enter account name :")
pp=input ("enter account password :")
if p==dict.keys(acc) and pp==dict.values(acc):
 print ("access granted")
else:
 print ("sorry credentials not found in database")

3 个答案:

答案 0 :(得分:1)

keysvalues方法分别返回 all 键和值的序列。都不等于单个键或值。

if p in acc and pp == acc[p]:
    print("access granted")
else:
    print("sorry credentials not found in database")

相切地讲,dict.keys(acc)是一种写acc.keys()的相当呆板的方式(对于acc.values()同样如此)。

答案 1 :(得分:0)

dict.keys(acc)(与acc.keys()相同)为您提供所有字典键的列表。单个登录名永远不会等于列表。您需要检查登录名P是否在词典中,并且其值与存储的密码匹配:

if acc.get(P, None) == Pp:

顺便说一句,PPp都是错误的标识符。

答案 2 :(得分:-1)

检查dict.keys(acc)的返回值。

>>> acc = {"t":"000", "b":"123", "r":"456"}
>>> P = input ("enter account name : ")
Tiddles
>>> p
'Tiddles'
>>> dict.keys(acc)
dict_keys(['t', 'b', 'r'])
>>> p == dict.keys(acc)
False

总是假的吗?

您可能想要这样的东西:

>>> acc = {"username": "Tiddles", "password": "12345"}
>>> p = input("enter account name: ")
Tiddles
>>> acc['username'] == p
True