01-用户模拟登录

模拟登陆:
1. 用户输入帐号密码进行登陆
2. 用户信息保存在文件内
3. 用户密码输入错误三次后锁定用户

代码:

#Author:hejianping
#2017-04-20
import getpass
userfile = 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 = 0
while 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 + " ")

if count == 3:
print("密码输错达到3次,锁定用户并退出!")
break

#判断用户为锁定直接退出
else:
print("该用户已经被锁定!无法登陆!")
break

userfile.close()


程序流程图


原文地址:https://www.cnblogs.com/hejianping/p/6740001.html