使用Python的基础知识实现一个登陆接口是非常容易的
一、分析如何实现
程序实现的步骤:
step1:提示用户输入账户密码
step2:判断账户是否在黑名单,0转step3;1转提示账户锁定,结束程序
step3:初始化输入次数
step4:如果输入次数不超过3次,循环
step5:如果账户密码匹配正确,提示成功,结束程序;否则提示错误,剩余输入次数
step6:输入次数大于三次,锁定用户,结束程序
二、程序清单
import sys #载入sys模块是用于结束程序account_file="admin.txt" #存用户密码在硬盘中locked_file="blacklist.txt" #存黑名单def deny_account(name): #定义函数用于打印 print("您的用户被锁定!") with open(locked_file,"a") as deny_f: deny_f.write("\n"+name)def main(): #定义主函数 retry_count = 0 #初始化计数 retry_limit = 3 #次数限制变量 while retry_count< retry_limit: name = input("请输入用户名:") if len(name) == 0: print("清重新输入,用户名不能为空") #输入为空的处理 continue with open(locked_file) as lock_f: #检测是否在黑名单 for line in lock_f.readlines(): if len(line)==0: continue if name == line.strip(): sys.exit("用户%s已经被锁定!" %name) password = input("请输入密码:") with open(account_file,"r") as account_f: #检测是否匹配 Flag = False for line in account_f.readlines(): user,pw = line.strip().split() if name == user and password == pw: print("登陆成功") Flag = True break if Flag ==False: #设置Flag变量的意义是方便计数 if retry_count < 3: print("您输入的用户或者密码有错误,您还有%d次机会" %(3-retry_count)) retry_count +=1 #此句放在if里面和外面会导致计数偏差 else: break else: deny_account(name)if __name__=="__main__": #当文件自己执行的时候调用主函数 main()
时间: 2024-11-10 14:13:07