Python阶段复习 - part 4 - 用户登录程序

简易版:

 

#!/usr/bin/env python
# _*_ coding:UTF-8 _*_
# __auth__:Dahlhin

import sys


userinfo = r'userinfo.txt'
userlock = r'userlock.txt'


def user_exist_check(user):
    '''检查用户是否存在'''
    with open(userinfo) as fd:
        for info in fd:
            if user == info.strip().split()[0]:
                return True
        return False

def user_lock_check(user):
    '''检查用户是都被锁定'''
    with open(userlock) as fd:
        for lock in fd:
            if user == lock.strip():
                return True
        return False

def passwd_check(passwd):
    '''检查密码合法性'''
    with open(userinfo) as fd:
        for info in fd:
            if passwd == info.strip().split()[1]:
                return True
            return False

def lock_user(user):
    '''用户锁定'''
    with open(userlock,'a') as fd:
        fd.write('%s\n' % user)


def user_login():
    '''登陆主程序'''
    count = 0
    while count < 3:
        user = input('UserName:')
        passwd = input('PassWord:')
        if user_exist_check(user):
            if not user_lock_check(user):
                if passwd_check(passwd):
                    return True
                else:
                    print('密码错误')
            else:
                print('账号被锁定')
        else:
            print('账号不存在')
        count += 1

    else:
        if user_exist_check(user):
            if not user_lock_check(user):
                lock_user(user)
        return  False


if __name__ == '__main__':
    result = user_login()
    if result:
        print('Welcome login')
    else:
        print('bye bye')

 

  

 

规范化范式版本

代码存放在github上:https://github.com/dachenzi/UserLoginScript

基础需求
  • 让用户输入用户名密码
  • 认证成功后显示欢迎信息
  • 输错三次后退出程序
升级需求
  • 可以支持多个用户登录 (提示,通过列表存多个账户信息)
  • 用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)
目录说明
  • bin:程序可执行文件目录
  • conf:配置文件目录
  • db:数据存放目录
  • libs: 依赖库文件目录
  • logs: 日志存储目录
程序说明
  • 执行 bin/main.py 运行程序
  • 用户存放在 db/account_db中,使用configparser读取,密码为MD5 加密字符串,初始密码都为123456
posted @ 2018-06-22 10:56  SpeicalLife  阅读(340)  评论(0编辑  收藏  举报