accounts = {"key":"value","thy":"l23","user2":"psw2"}
a = input("Enter username: ")
b = input("Enter password: ")
if accounts[a:b] == True:
print("Welcome")
TypeError: unhashable type: 'slice'
错误是什么意思?我该如何解决?
答案 0 :(得分:3)
如果我了解您尝试做的事情(验证用户名和密码),您需要这样做:
accounts = {"key":"value","thy":"l23","user2":"psw2"}
a = input("Enter username: ")
b = input("Enter password: ")
if accounts[a] and accounts[a] == b:
print("Welcome")
此测试用于查看输入用户是否存在密码,然后测试输入的密码是否与accounts
中存储的密码匹配。
此方法的主要问题是输入的密码会在您输入时打印出来。要解决此问题,请使用getpass.getpass()
功能。
答案 1 :(得分:2)
在
if accounts[a:b] == True:
应该阅读
if accounts.get(a) == b:
我使用accounts.get(a)
代替accounts[a]
的原因是,如果None
不包含有效的用户名(后者会引发异常),前者将返回a