编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
帐号文件user.txt内容如下:
qaz 123
qwe 12345
qweqwr 12321424
......
锁文件user_lock.txt默认为空
一、只针对帐号文件里的用户进行判断并锁定,针对用户和密码各有三次错误重试机会。
流程图:
二、代码如下
1 # Author: zfh 2 # -*- coding:utf-8 -*- 3 import os,getpass,sys 4 5 i = 0 6 while i < 3: #开始循环,只要用异常登录不超过三次 7 name = input('请输入用户名:') #输入用户名 8 9 lock_file = open('user_lock.txt','r+') #打开锁定用户文件,检查登录用户是否被锁定(r+--读写),文件名前直接加路径 10 lock_list = lock_file.readlines() #逐行读取锁定用户记录文件 11 12 for lock_line in lock_list: #循环读取的锁定用户记录 13 lock_line = lock_line.strip(' ') #去掉换行符 14 if name == lock_line: #如果输入用户被锁定,直接退出 15 sys.exit('用户%s已锁定' %name) #输出提示用户被锁定 16 17 user_file = open('user.txt','r') #打开用户文件(r--只读) 18 user_list = user_file.readlines() #逐行读取用户文件 19 20 for user_line in user_list: #循环读取的用户记录 21 (user,passwd) = user_line.strip(' ').split() #分别获取帐号和密码信息 22 if name == user: #如用户名正常匹配 23 j = 0 24 while j < 3: #只要用户密码异常不超过3次就不断循环 25 password = getpass.getpass('请输入密码:') #输入隐藏密码,import getpass 26 if passwd == password: #如果密码正确,提示欢迎登录 27 # print('登录成功%s'%name) 28 sys.exit('用户%s登录成功'%name) #输出欢迎用户登录,正常退出 29 else: 30 if j != 2: #j!=2时继续循环 31 print('用户 %s 密码错误,请重新输入,还有 %d 次机会' % (name,2 - j))#提示还剩余0次机会了 32 j += 1 #密码输入错误后,循环值增加1 33 else: #密码输入三次错误后,将该用户追加到LOCK文件 34 lock_file.write(name +' ') 35 sys.exit('用户 %s 达到最大登录次数,将被锁定并退出' % name) 36 else: 37 pass #当用户没匹配时,跳过并继续循环 38 else: 39 if i != 2: #i!=2是循环 40 print('用户 %s 不存在,请重新输入,还有 %d 次机会' % (name,2 - i)) #提示还剩余0次机会了 41 i += 1 #当用户输入错误时,循环值增加1 42 else: 43 sys.exit('用户 %s 不存在,退出' % name) #用户输入三次错误后,异常退出 44 45 lock_file.close() #关闭LOCK文件 46 user_file.close() #关闭帐号文件