【问题标题】:What does "TypeError: unhashable type: 'slice'" mean? And how can I fix it?“TypeError: unhashable type: 'slice'” 是什么意思?我该如何解决?
【发布时间】:2016-02-04 02:01:16
【问题描述】:
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'
错误是什么意思?我该如何解决?
【问题讨论】:
标签:
python
python-3.x
hash
python-3.4
slice
【解决方案1】:
如果我了解您要执行的操作(验证用户名和密码),您需要这样做:
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() 函数。
【解决方案2】:
if accounts[a:b] == True:
应该阅读
if accounts.get(a) == b:
我使用accounts.get(a) 而不是accounts[a] 的原因是,如果a 不包含有效的用户名,前者会返回None(后者会引发异常)。