python用户登录,密码错误3次则锁定

需求:

  1.输入用户名密码

  2.认证成功后显示欢迎信息

  3.输错三次后锁定

实现思路:

  1.判断用户是否在黑名单,如果在黑名单提示账号锁定。

  2.判断用户是否存在,如果不存在提示账号不存在。

  3.判断账号密码是否正确,如果正确登录进去。如果不正确有三次输入密码机会。三次全部输错,账号锁定。

 方法一:(简易版本)

count = 0
username = "xuyuanyuan"
password = "123"

with open("file.txt",mode="r",encoding="utf8") as f:
    file_list=f.readlines()
name=input("请输入用户名:")
#判断输入用户名是否在黑名单中
if name in file_list:#如果用户名在黑名单内
    print("您的账户已锁定,请联系管理员!")
else:
    #判断用户名是否存在
    if name == username:
        while count < 3:
            pwd = input("请输入您的密码:")
            if pwd == password:
                print("welcome %s" %name)
                break
            else:
                print("password is error!")
                count+=1
        else:#如果用户名输入错误超过三次的话,就将用户名加入到黑名单file.txt文件里
            print("您输入的次数已经超过三次,账号已锁定,请联系管理员!")
            with open("file.txt", mode="a+", encoding="utf8") as f:
                test=("%s"%name)
                f.writelines(test)

    else:
        print("该用户名不存在,请重新输入!")

 方法二:

 

# 获取注册用户的信息
with open("db", "r", encoding="UTF-8") as f:
    # users = f.readlines()  # 读成列表
    # users = f.read()  # 读到内存
    users = {}
    for line in f:
        user_list = line.strip().split("|") # 分割得到列表
        # print(user_list)
        users[user_list[0]] = {#往字典里加内容
            "username": user_list[0],
            "passwd": user_list[1],
            "times": user_list[2],
        }
        # print(users)

# # 读取黑名单
black_list = []
with open("blacklist.txt", "r", encoding="UTF-8") as f2:
    for line in f2:
        black_list.append(line.strip())
        # print(black_list)
#
while True:
    # 获取用户输入
    username = input("用户名:").strip()
    passwd = input("密码:").strip()

    # 判断是不是黑名单用户
    if username in black_list:
        print("用户名已被锁定,请联系管理员!")
        # 把用户信息再写回文件
        with open("db", "w", encoding="UTF-8") as f4:
            for j in users:#遍历的是字典里的key
                f4.write(users[j]["username"] + "|" + users[j]["passwd"] + "|" + str(
                    users[j]["times"]) + "\n")
                # 字典是无序的
                # f4.write("|".join([lambda x: str(x) for x in users[j].values()])+ "\n")
        break

    # 判断用户名存不存在
    elif username in users:
        if passwd == users[username]["passwd"]:
            print("登录成功")
            # 把之前的错误次数清空
            users[username]["times"] = 0
            # 把用户信息再写回文件
            with open("db", "w", encoding="UTF-8") as f4:
                for j in users:
                    # users[j]是每个用户的字典
                    f4.write(users[j]["username"] + "|" + users[j]["passwd"] + "|" + str(users[j]["times"]) + "\n")
            break
        else:
            print("用户名密码错误")
            # 判断输错次数
            users[username]["times"] = int(users[username]["times"])  # 转成int类型
            users[username]["times"] += 1
            if users[username]["times"] >= 3:
                print("用户名被锁定啦!")
                # 加入黑名单
                black_list.append(username)
                with open("blacklist.txt", "w") as f3:
                    for i in black_list:
                        f3.write(i+"\n")
                # 把用户信息再写回文件
                with open("db", "w", encoding="UTF-8") as f4:
                    for j in users:
                        # users[j]是每个用户的字典
                        f4.write(users[j]["username"] + "|" + users[j]["passwd"] + "|" + str(
                            users[j]["times"]) + "\n")

                break
    else:
        print("用户名不存在")

 

  

 

转载于:https://www.cnblogs.com/xuyuanyuan123/p/6679288.html

Python实现用户登录错误三次锁定的方法可以通过以下步骤实现: 1. 首先,我们可以使用一个字典来存储已注册的用户信息,将用户名作为键,密码作为值,例如:user_info = {'user1': 'password1', 'user2': 'password2'} 2. 然后,我们可以使用一个变量来记录用户输入密码错误的次数,初始值为0。 3. 接下来,使用一个循环来实现用户登录的功能,循环条件为错误次数小于3。 4. 在循环内部,首先让用户输入用户名和密码。 5. 接着,通过判断用户输入的用户名是否在user_info字典的键中,以及对应的密码是否与用户输入的密码匹配来判断用户是否登录成功。 6. 如果登录成功,则跳出循环,并输出登录成功的提示信息。 7. 如果登录失败,则错误次数加1,并输出密码错误的提示信息。 8. 当错误次数达到3时,输出锁定账户的提示信息,并跳出循环。 以下是一个简单的例子来实现上述功能: ``` user_info = {'user1': 'password1', 'user2': 'password2'} error_count = 0 while error_count < 3: username = input("请输入用户名:") password = input("请输入密码:") if username in user_info.keys() and user_info[username] == password: print("登录成功!") break else: error_count += 1 print("密码错误,请重试!") if error_count == 3: print("输入错误次数过多,账户已锁定!") ``` 这样,当用户输入错误密码次数达到3次时,程序会输出"输入错误次数过多,账户已锁定!"的提示信息,避免了用户尝试无限次的机会。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值