Python3自学之路作业一__编写登陆接口

本文介绍了一个用户登录验证系统的实现过程,包括用户输入用户名密码后的认证流程、错误输入次数的记录及处理、黑名单机制等。系统支持用户登录、密码错误处理及用户锁定功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求:

        1)输入用户名密码  

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

        3)输错三次后锁定

程序可实现功能:

       1)在实现上述三个要求的基础上,同时利用用户名单信息user_info.txt和黑名单lock_list.txt 实现用户的正常登陆和异常登陆锁定(某用户输错次数=运行一次程序中输入密码错误次数的累加),其中账号输错,不算在输错次数中;

        2)用户可随时修改用户名单和黑名单,灵活应用此程序(在黑白名单的数量上没有限制)

缺点:直接按两次enter 程序报错 后期再改

具体代码如下所示:

'''
Created on 
@author: hcl
'''
def load_dataSet(fileName):
    #用于提取所有名单内账号密码
    #返回用户账号 密码 错误输入次数
    usr_name = [];usr_passWord = [];err_inputCount = {}
    with open(fileName) as fr:
        for line in fr.readlines():
            lineArr = line.strip().split('\t')
            usr_name.append(lineArr[0])
            usr_passWord.append(lineArr[1])
            err_inputCount.update({lineArr[0]:0})
        return usr_name,usr_passWord,err_inputCount


def chek_lockList(usr_name,lock_list):
    #用于确认usr_name是否存在于黑名单lock_list中
    listName = []
    with open(lock_list) as fr:
        for line in fr.readlines():
            lineArr = line.strip().split('\t')
            listName.append(lineArr[0]) 
    for i in range(len(listName)):
        if usr_name == listName[i]:
            return True
    else:
        return False
  
def check_user(input_name,input_password,usr_name,usr_password,lock_list,err_inputCount,err_input_count_limit = 3):
    #实现用户账号密码的监测  实现异常登陆检测 超过三次加入黑名单lock_list,且黑名单内不会自动加入重复账户名
    while(err_inputCount[input_name] < err_input_count_limit and not chek_lockList(input_name,lock_list)):            
        for i in range(len(usr_name)):
            if input_name == usr_name[i]:                
                if input_password == usr_password[i]:
                    print("Welcome to the new world!...")
                    return
                else:
                    err_inputCount.update({input_name:err_inputCount[input_name]+1})
                    print("%s err_count is %s" %(input_name,err_inputCount[input_name]))
                    break  
        else:
            print("Don't exist the %s !!!" %input_name)
            break
        if err_inputCount[input_name] < 3:
            input_name = input('Please input your username:') 
            input_password = input('Please input your password:')
    else:
        print("账号: %s 已被锁定,请联系后台管理人员修改黑名单" %input_name)#锁定操作
        if not chek_lockList(input_name,lock_list):
            with open(lock_list,"a+") as fr:
                fr.write(input_name + '\n')
#根据用户名单信息文件存放位置 修改user_info 存放路径
user_info = r"F:\eclipse-workspace\algorithm\src\Python Train Data\user_info.txt"
#根据黑名单信息文件存放位置 lock_list 存放路径
lock_list = r"F:\eclipse-workspace\algorithm\src\Python Train Data\lock_list.txt"
#获取用户信息账户信息
usr_name,usr_password,err_inputCount = load_dataSet(user_info)
#print(usr_name,usr_password,err_inputCount)
input_name = input('Please input your username:')
input_password = input('Please input your password:')
#检测用户账号密码
check_user(input_name,input_password,usr_name, usr_password,lock_list,err_inputCount)

 

同时提供用户名单信息user_info.txt,分别为 账户、密码、错误输入次数 ,行间用一个tab距离做分隔符

 

hcl	123	0
ln	456	0
hn	789	0

黑名单lock_list.txt

hcl
hn

六、有兴趣接电子设计相关小型项目的请加下群,每个项目一般在1000元以内,非诚勿扰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值