【问题标题】: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(后者会引发异常)。

    【讨论】:

    • 感谢您的帮助!
    猜你喜欢
    • 2019-07-10
    • 1970-01-01
    • 2018-08-12
    • 2019-04-17
    • 2021-07-14
    • 2018-08-27
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    相关资源
    最近更新 更多