python之编写用户登录接口
作业:编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
程序流程图

帐号文件user内容如下:
test 123456
test2 456789
aaron 123456
锁文件 lock_file 默认为空
代码如下:
#!/usr/bin/env python #-*-encoding:utf-8-*- #Author: Aaron import getpass count = 0 while count < 3: name = input("请输入用户名:") with open('lock_file', 'r+') as lock_list: # 当用户输入用户名后,打开LOCK 文件 以检查是否此用户已经LOCK了 for lock_line in lock_list: # 循环LOCK文件 lock_line = lock_line.strip() # 去掉换行符 if name == lock_line: # 如果LOCK了就直接退出 exit('用户 %s 已经被锁定,退出' % name) with open('user') as user_list: for user_line in user_list: # 对帐号文件进行遍历 (user, password) = user_line.strip('\n').split() # 分别获取帐号和密码信息 if name == user: # 如用户名正常匹配 j = 0 #定义一个新的计数器,做密码输入次数判断 while j < 3: # 只要用户密码异常不超过3次就不断循环 passwd = getpass.getpass('请输入密码:') # 输入隐藏密码 if passwd == password: # 密码正确,提示欢迎登录 print('欢迎登录管理平台,用户%s' % name) exit(0) # 正常退出 else: if j != 2: # j=2时,是最后一次机会,不用再提示还剩余0次机会了 print('用户 %s 密码错误,请重新输入,还有 %d 次机会' % (name, 2 - j)) j += 1 # 密码输入错误后,循环值增加1 else: lock_list.write(name + '\n') # 密码输入三次错误后,将该用户追加到LOCK文件 exit('用户 %s 达到最大登录次数,将被锁定并退出' % name) else: pass # 当用户没匹配时,跳过并继续循环 else: if count != 2: # i=2时,是最后一次机会,不用在提示还剩余0次机会了 print('用户 %s 不存在,请重新输入,还有 %d 次机会' % (name, 2 - count)) count += 1 # 当用户输入错误时,循环值增加1 else: exit('用户 %s 不存在,退出' % name) # 用户输入三次错误后,异常退出

浙公网安备 33010602011771号