Python实现用户登录并且输入错误三次后锁定该用户

针对Python实现用户登录并且输入错误三次后锁定该用户,以下是一些攻略和思路供参考。

第一步:输入用户名和密码

在Python中,可以使用input()函数来实现用户输入

username = input("请输入您的用户名:")
password = input("请输入您的密码:")

第二步:判断用户名和密码是否正确

接下来需要判断输入的用户名和密码是否正确,如果错误则进行计数。这里可以使用字典来存储用户的信息,键为用户名,值为密码和错误次数的列表。

users = {'user1': ['123456', 0], 'user2': ['654321', 0]}

if username in users:
    if password == users[username][0]:
        print("登录成功!")
        users[username][1] = 0
    else:
        users[username][1] += 1
        print("密码错误,请重新输入!")
else:
    print("用户名不存在,请重新输入!")

第三步:处理错误次数达到三次的情况

如果错误次数达到三次,则需要锁定该用户。可以使用while循环来实现多次输入密码,直到用户被锁定。

while True:
    username = input("请输入您的用户名:")
    if username in users and users[username][1] < 3:
        password = input("请输入您的密码:")
        if password == users[username][0]:
            print("登录成功!")
            users[username][1] = 0
            break
        else:
            users[username][1] += 1
            print("密码错误,请重新输入!")
    elif username in users and users[username][1] >= 3:
        print("该用户已被锁定,请联系管理员!")
    else:
        print("用户名不存在,请重新输入!")

以上就是实现用户登录并且输入错误三次后锁定该用户的基本思路。需要注意的是,实现完整的用户登录系统还需要进行更多的优化和改进,例如添加密码加密、用户注册功能等。

以下是两条示例,以帮助更好理解代码的实际应用:

示例一

users = {'user1': ['123456', 0], 'user2': ['654321', 0]}

while True:
    username = input("请输入您的用户名:")
    if username in users and users[username][1] < 3:
        password = input("请输入您的密码:")
        if password == users[username][0]:
            print("登录成功!")
            users[username][1] = 0
            break
        else:
            users[username][1] += 1
            print("密码错误,请重新输入!")
    elif username in users and users[username][1] >= 3:
        print("该用户已被锁定,请联系管理员!")
    else:
        print("用户名不存在,请重新输入!")

输出:

请输入您的用户名:user1
请输入您的密码:111111
密码错误,请重新输入!
请输入您的用户名:user1
请输入您的密码:222222
密码错误,请重新输入!
请输入您的用户名:user1
请输入您的密码:333333
该用户已被锁定,请联系管理员!
请输入您的用户名:user2
请输入您的密码:999999
密码错误,请重新输入!
请输入您的用户名:user2
请输入您的密码:888888
密码错误,请重新输入!
请输入您的用户名:user2
请输入您的密码:777777
该用户已被锁定,请联系管理员!
请输入您的用户名:user3
用户名不存在,请重新输入!

示例二

users = {'admin': ['admin123', 0], 'guest': ['guest123', 0]}

while True:
    username = input("请输入您的用户名:")
    if username in users and users[username][1] < 3:
        password = input("请输入您的密码:")
        if password == users[username][0]:
            print("登录成功!")
            users[username][1] = 0
            break
        else:
            users[username][1] += 1
            print("密码错误,请重新输入!")
    elif username in users and users[username][1] >= 3:
        print("该用户已被锁定,请联系管理员!")
    else:
        print("用户名不存在,请重新输入!")

输出:

请输入您的用户名:admin
请输入您的密码:111111
密码错误,请重新输入!
请输入您的用户名:admin
请输入您的密码:222222
密码错误,请重新输入!
请输入您的用户名:admin
请输入您的密码:333333
该用户已被锁定,请联系管理员!
请输入您的用户名:guest
请输入您的密码:guest123
登录成功!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现用户登录并且输入错误三次后锁定该用户 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 英语单词state与status的区别

    英语单词state与status的区别 在英语中,state和status两个单词都可以表示“状态”的意思,但是它们在使用上存在着一些区别。 state的用法 state一般用于描述事物或人的状况,强调状况的实际情况,即客观的存在状态。例如: The state of the economy is not good.(经济状况不好。) I am in a s…

    C# 2023年6月6日
    00
  • C# 两种方式反编译修改源码(dnspy,ildasm & ilasm)

    C#是一种流行的编程语言,许多开发人员在使用C#时需要反编译他人的代码或修改自己的代码。本文将介绍C#两种反编译修改源码的方式:dnspy和ildasm&ilasm,并提供两个示例。 用dnspy反编译和修改C#源码 dnspy是一款开源的.NET程序集反编译工具,可以轻松地反编译和修改C#程序集。以下是使用dnspy反编译和修改C#代码的步骤: 步…

    C# 2023年5月15日
    00
  • C#的this关键字的2种用法

    C#中的this关键字有两种主要的用法,分别是限定当前对象和作为参数传递。下面将详细讲解这两种用法。 限定当前对象 在C#中,每个实例对象都有一个对于所在的类的引用。在实例方法中,可以使用this关键字来引用当前对象。这种用法主要有以下两个作用: 区分实例变量和局部变量 在方法链式调用中提高代码可读性 区分实例变量和局部变量 当实例变量和局部变量同名时,为了…

    C# 2023年5月15日
    00
  • C#实现数独解法

    C#实现数独解法 简介 数独游戏是一种经典的逻辑推理游戏。在9*9个方格中,按照一定的规则填入数字,使得每行、每列、每宫都含有1-9的数字且不重复。本文将介绍如何使用C#实现数独解法。 准备 在开始编写代码之前,先准备好一个数独问题作为输入。例如: 0 0 0 0 6 7 5 2 0 7 0 0 0 0 5 0 0 4 0 0 0 2 0 0 0 0 9 0…

    C# 2023年6月6日
    00
  • C#使用Enum.TryParse()实现枚举安全转换

    当我们需要将字符串或整数等类型转换为枚举类型时,可以使用C#提供的Enum.TryParse()方法来实现安全转换,避免了在转换时可能会抛出异常的情况。 什么是枚举类型 枚举类型是一种特殊的值类型(Value Type),它限定了该类型变量只能是预先定义好的枚举值中的一种。枚举类型可以在程序中用于表示特定的常量值,例如星期几、性别等。 Enum.TryPar…

    C# 2023年5月14日
    00
  • unity 如何使用文件流读取streamingassets下的资源

    首先,在 Unity3D 中, streaming assets 是一个目录,它在打包成应用程序之前,所有文件都都被放在该目录下,通过文件路径的方式进行访问。访问 streaming assets 中的文件,可以使用File类和 FileStream 类提供的OpenRead()和Read()方法进行读取。 以下是在 Unity3D 中使用文件流读取 str…

    C# 2023年5月15日
    00
  • ASP.NET Core 7 Razor Pages项目发布到IIS的详细过程

    以下是关于“ASP.NET Core 7 Razor Pages 项目发布到 IIS 的详细过程”的完整攻略: 1. 准备工作 在将.NET Core 7 Razor Pages 项目发布到 IIS 前,需要进行准备工作: 安装 .NET Core 7 运行时和 SDK。 安装 I。 安装 .NET Core Hosting Bundle 2. 发布项目 在…

    C# 2023年5月12日
    00
  • C#页码导航显示及算法实现代码

    当网站中的内容较多时,常常需要用到分页功能来实现良好的用户体验。下面就是C#页码导航的实现。 一、分页算法 如何实现分页?我们需要首先确定一页要显示的记录数(pageSize)和当前页码(currentPageNum),其次需要得到数据表中数据总数(totalCount),然后根据这三个值来计算总的页数(totalPageNum)。 totalPageNum…

    C# 2023年6月7日
    00
合作推广
合作推广
分享本页
返回顶部