作业概述:
(1)输入用户名和密码
(2)认证成功后显示欢迎信息
(3)输错三次后锁定
流程图:
readme:
1、程序配置文件: 黑名单文件blacklist.txt(可以存在,可以不存在) 白名单文件whitelist.txt存在,内容如下: zhangsan,1234 wang,1234 ding,1234 2、输入密码的时候不显示 代码:
#coding=utf-8 import os import getpass BlackListFileName = 'E:\\python3.5_study\\s13\\day1\\login\\blacklist.txt' #存放黑名单 WhiteListFileName = 'E:\\python3.5_study\\s13\\day1\\login\\whitelist.txt' #存放白名单 ErrorNum = 0 #记录错误次数 BlackFlag = False #遍历黑名单的标志位 WhiteFlag = False #遍历白名单的标志位 WhiteNameList = [] #存放白名单中所有的用户名字 print (''' ********************* 登录入口 ********************* ''') #判断黑名单文件是否存在 FileExistBool = os.path.exists(BlackListFileName) if FileExistBool == False: BlackF=open(BlackListFileName,'w') #创建存放黑名单的文件 BlackF.close() UserName = input("请输入用户名:") PassWord = getpass.getpass("请输入密码:") #判断用户是否在黑名单中 BlackF=open(BlackListFileName,'r') #读取方式打开黑名单文件 BlackNameContent = BlackF.readlines() #读取黑名单文件中所有内容,放入list中 for i in range(len(BlackNameContent)): BlackName = BlackNameContent[i].strip().split(',')[0] if UserName == BlackName: print ('%s用户被锁定' %(UserName)) BlackF.close() BlackFlag = True break if BlackFlag == False: #BlackFlag==False说明UserName不在黑名单中 #判断用户名和密码是否正确 while 1: WhiteF=open(WhiteListFileName,'r') #读取方式打开白名单文件 WhiteNameContent = WhiteF.readlines() #读取白名单文件中所有内容,放入list中 for i in range(len(WhiteNameContent)): Name = WhiteNameContent[i].strip().split(',')[0] NamePassWord = WhiteNameContent[i].strip().split(',')[1] WhiteNameList.append(Name) if UserName == Name and PassWord == NamePassWord: print ('恭喜,登录成功') WhiteFlag = True break WhiteF.close() if UserName not in WhiteNameList: print ('%s用户不存在' %UserName) break if WhiteFlag == True: #登录成功,跳出while循环 break else: ErrorNum += 1 #用户名和密码错误的话错误次数+1 print ('用户名或密码输入错误,第%d次' %ErrorNum) print ('ErrorNum:',ErrorNum) if ErrorNum < 3: UserName = input("请输入用户名:") PassWord = getpass.getpass("请输入密码:") else: print ('错误次数过多,用户被锁定') BlackF=open(BlackListFileName,'a+') #追加写黑名单文件 BlackName = UserName+'\n' BlackF.write(BlackName) BlackF.close() break