我正在尝试使用存储在词典中的信息制作一个简单的登录页面。每当我输入正确的用户名和密码组合时,它都会退回到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")
答案 0 :(得分:1)
keys
和values
方法分别返回 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:
顺便说一句,P
和Pp
都是错误的标识符。
答案 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