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)  # 用户输入三次错误后,异常退出
登录接口

 

posted @ 2017-05-09 21:07  DamingLiu  阅读(266)  评论(1)    收藏  举报