【问题标题】:Python Dictionary Username Password P [closed]Python字典用户名密码P [关闭]
【发布时间】:2013-11-16 13:36:30
【问题描述】:

我正在尝试使用字典功能创建一个 python 用户名和密码数据库(仅供练习)。到目前为止,我已经编写了这么多代码。

username_password = {"Dave":"manchester"}
print("Sign up for NetFlour!\n")
name = str(input("Please enter your preferred username.\n"))
passcode = str(input("Thank you, now enter a password as well.\n"))
username_password[name] = passcode
print(username_password)


我只是简单地将软件称为“Netflour”,并将用户的输入和相应的密码存储到名为 username_password 的字典中。在这里,只有一个用户注册了该服务,他就是 Dave。他指定了一个名为“曼彻斯特”的密码。

现在,我要编写代码,让用户输入他们的用户名和密码并“登录”到他们的个人资料。我的问题是,我该怎么做?我试过 has_key 但我在 python 3.3 中,他们之前已经删除了这个函数。我的下一行代码是 -

login_username = str(input("Please enter your username.\n"))
login_password = str(input("Please enter your password.\n"))

在这里,我将创建一个 if - else 语句,如果用户名和密码匹配,则将它们带到主屏幕,否则,如果不正确,则必须重新输入两条信息。有人建议我使用 'in' 函数,但由于我在 python 方面不是那么先进,所以我需要一些帮助。目前,我对加密不太感兴趣,但是一旦我编写了 if - else 代码,我将进入那个阶段,该代码让 Python 同时检查用户名和密码是否正确。

谢谢。

【问题讨论】:

  • 你不需要在python3中做str(input())input() 本身返回一个字符串表示。

标签: python if-statement dictionary passwords


【解决方案1】:
if username_password.get(login_username) == login_password:
    # Correct username and password match
    pass
else:
    # Incorrect username/password match
    pass

python 字典的get 方法将键作为参数,如果存在则返回值。如果键/值对不存在,get 返回None


有关详细信息,请参阅documentation。从链接:

get(key[, default])

如果 key 在字典中,则返回 key 的值,否则返回 default。如果 default 没有给出,默认为None,所以这个方法永远不会 引发KeyError

【讨论】:

    【解决方案2】:
    # strip any whitespace from the ends of the input
    login_username, login_password = login_username.strip(), login_password.strip()
    
    # check username and password entered are correct
    if login_username in username_password and login_password == username_password[login_username]:
        print("Logged in")
    else:
        print("bad username / password")
    

    【讨论】:

    • 不错的尝试,虽然您访问字典两次。这不是必需的,您可以使用内置的dict.get(key, DefaultReturn)
    【解决方案3】:
    d = {'Dave':'secretpassword'}
    login_username='Dave'
    login_password='abc'
    if d.has_key(login_username):
        if d[login_username]==login_password:
            print('username and password match')
        else:
            print('user entered the wrong password')
    else:
        print('your username is not registered. Would you like to register')
    

    【讨论】:

      【解决方案4】:
      if login_username in username_passwords.keys() 
              and login_password == username_password[login_username]:
          print "Logged on"
      else
          print "Wrong credentials"
      

      【讨论】:

        【解决方案5】:

        0 否决票

        如果 username_passwords.keys() 中的 login_username 和 login_password == username_password[login_username]: 打印“登录” 别的 打印“错误的凭据”LOL NO

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-04-07
          • 1970-01-01
          • 2015-08-14
          • 2011-05-27
          • 1970-01-01
          • 2014-02-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多