Python用字典验证用户名和密码是否正确匹配,错误三次后则终止程序

我创建了一个既有的字典,里面的用户John密码为123,用户Marry密码为111。接下来要设计一个程序,添加三次验证算法,判断是否正确匹配。若三次内正确,则提示“登录成功”;若三次都错误,则提示“您是非法用户,程序终止”。
我拟打算用循环结构来完成程序设计,但不知道如何安插“用户名或密码错误”和“三次都错误(提示您非法)”的情况,望指点迷津。

定义一个变量记录用户的输入次数即可,望采纳

users = {'John': '123', 'Marry': '111'}
count = 0
while count < 3:
    username = input('请输入用户名:')
    password = input('请输入密码:')
    if username in users and users[username] == password:
        print('登录成功')
        break
    else:
        print('用户名或密码错误')
        count += 1
if count == 3:
    print('您是非法用户,程序终止')
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7618871
  • 除此之外, 这篇博客: python基础练习题中的 题目六:通过这个练习,你会尝试用循环来解决生活中的问题,并了解一种新的列表方法,练习要求:小明、小红、小刚是同班同学,且坐在同一排,分别坐在第一位、第二位、第三位。由于他们的身高都差不多,所以,老师计划让他们三个轮流坐在第一位。每次换座位的时候,第一位变第三位,后面两位都往前一位。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    pop():将列表指定位置的元素移除,同时可以将移除的元素赋值给某个变量

    程序分析:

    思路解析:首先创建列表,轮流换位可知会有循环语句,接下来将列表的第一个用pop()除掉并赋值给N,再将N添加进列表list1即可。

    代码解析:

    list1 = ["小明", "小红", "小刚"]
    n = 0
    while n < 3:
        n += 1
        N = list1.pop(0)
        list1.append(N)
        print(list1)
    

  • 以下回答来自chatgpt:

    我可以解决这个问题。

    解决方案:

    1. 首先,定义一个字典,包含用户名和对应密码。例如:
    users = {'user1': 'password1', 'user2': 'password2', 'user3': 'password3'}
    
    1. 然后,我们可以使用一个循环结构来完成程序设计。每次迭代会要求用户输入用户名和密码,验证用户名和密码是否匹配,并输出对应的提示信息。具体如下:
    # 定义一个计数器,记录错误次数
    count = 0
    
    while count < 3:
        username = input('请输入用户名:')
        password = input('请输入密码:')
    
        # 判断输入的用户名是否在字典中,密码是否匹配
        if username in users and users[username] == password:
            print('登录成功!')
            break
        else:
            count += 1
            print('用户名或密码错误,您还有{}次机会'.format(3-count))
    
    # 当错误次数达到3次时,输出错误信息并终止程序
    if count == 3:
        print('您是非法用户,程序终止')
    
    1. 整合这些代码,就可以实现要求的功能了。完整代码如下:
    users = {'user1': 'password1', 'user2': 'password2', 'user3': 'password3'}
    count = 0
    
    while count < 3:
        username = input('请输入用户名:')
        password = input('请输入密码:')
    
        if username in users and users[username] == password:
            print('登录成功!')
            break
        else:
            count += 1
            print('用户名或密码错误,您还有{}次机会'.format(3-count))
    
    if count == 3:
        print('您是非法用户,程序终止')
    

    这个程序简单明了,首先定义了一个字典,然后使用一个while循环来获取用户输入的用户名和密码,并验证其是否匹配字典中的数据。如果验证成功,循环会被break退出程序,否则会递增计数器并输出一条提示信息。当错误次数达到三次时,循环跳出,终止程序。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^