实现需求以下:python
同一个用户名连续失败三次则锁定,无论用户名是否在,锁定后在下次运行脚本登陆是一样是锁定状态bash
使用文件存储用户名和密码信息,与文件里面的用户名密码进行认证对比app
用户名不存在和密码错误提示不能够相同,登陆成功,帐号被禁用,密码错误,用户不存在须要有相关的提示信息ide
脚本以下:函数
#!/usr/bin/python #coding:utf8 class Login(): def userInfo(self): #将用户名密码信息文件处理成一个字典 with open("userinfo.txt", "r") as file: userDict = {} for i in file: userList = i.split(":") userDict.update({userList[0]:userList[1].rstrip()}) return userDict def lock_userInfo(self): #将否认的用户的文件处理成一个列表 with open("lock_userinfo.txt", "r") as file: userList = [] for i in file: userList.append(i.rstrip()) return userList def lockUser(self, username): #若是相同用户登陆错误三次就调用此函数,将用户永久琐定,写入文件 with open("lock_userinfo.txt", "a") as file: file.write(username + "\n") def userLogin(self): #登陆 lockList = [] while True: username = raw_input("请输入用户名: ") password = raw_input("请输入用户密码: ") if lockList.count(username) < 3: lock = self.lock_userInfo() user = self.userInfo() if username not in lock: if username in user: if user[username] == password: print("登陆成功") else: lockList.append(username) print("密码错误") else: lockList.append(username) print("用名不存在") else: print("此用户已禁用") else: self.lockUser(username) print("用户登陆次数超过限制,已禁用") if __name__ == "__main__": login = Login() login.userLogin()
脚本使用方法:ip
首先须要在脚本所在的目录下面建立两个文件lock_userinfo.txt和userinfo.txtci
userinfo.txt存入用户信息,一行一个用户,用户名和密码用冒号分开,不要有空格,以下所示:input
lock_userinfo.txt为被否认的用户列表文件,初始为空,若是有同一用户登陆出错三次就会被永久写入该文件,没法登陆,解锁用户就是删除该文件里面的用户名
it
运行结果以下:class
正确登陆
密码输入错误三次
用户被永久否认后再登陆
用户名输入错误屡次后
这里是第五次才禁用,和需求有点出入,逻辑还存在一些问题,没有想到好的方法