模拟登陆:
1. 用户输入帐号密码进行登陆
2. 用户信息保存在文件内
3. 用户密码输入错误三次后锁定用户
代码:
#Author:hejianping#2017-04-20import getpassuserfile = open(‘userfile.txt‘,‘r‘)userdict = {}new_userlist = [] for line in userfile.readlines(): userlist = line.strip().split(‘:‘) #移除字符串头尾的空格并且以:号为分隔符切片后生成列表 _username = userlist[0].strip() #从生成的列表中里边中取第一个参数用户名的值 _passwd = userlist[1].strip() #从生成的列表中里边中取第二个参数密码的值 _lockcount= int(userlist[2].strip()) #从生成的列表中里边中取第三个参数锁定次数的值,格式化整数 #使用字典函数让每个用户名生成一个对应的列表: userdict[_username] = {‘name‘:_username,‘pwd‘:_passwd,‘lockcount‘:_lockcount} #print(userdict[_username]) #打印用userfile.txt文件信息 count = 0while count < 3: username = input("请输入您的用户名:") #判断用户是否存在: if username not in userdict.keys(): #userdict.keys()代表返回userdict字典所有的键值. print("用户不存在!") break elif userdict[username][‘lockcount‘] < 3: password = getpass.getpass("请输入密码:") if password == userdict[username][‘pwd‘].strip(): print("Welcome user {name} login successfully!" .format(name=username)) break else: count += 1 userdict[username][‘lockcount‘] += 1 #错误锁定次数加1 userfile = open(‘userfile.txt‘, ‘w+‘) for change in userdict.values(): #错误次数更新后的列表,需要把参数格式化为字符串: new_userlist = [str(change[‘name‘]),str(change[‘pwd‘]),str(change[‘lockcount‘])] colon = ":" #冒号 new_userlist_colon = colon.join(new_userlist) #使用冒号连接序列中元素并生成新的字符串new_userlist_colon userfile.write(new_userlist_colon + "\n") if count == 3: print("密码输错达到3次,锁定用户并退出!") break #判断用户为锁定直接退出 else: print("该用户已经被锁定!无法登陆!") break userfile.close() 程序流程图:
时间: 2024-10-08 05:29:05