python课程学习-模块1-作业-01基础用户登录认证

1. 作业要求

基础需求:
让用户输入用户名密码
认证成功后显示欢迎信息
输错三次后退出程序

升级需求:
可以支持多个用户登录 (提示,通过列表存多个账户信息)
用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

2. 流程图

用户登录认证

3. Readme

功能
基础的用户认证登录功能
1. 用户输入用户名和密码,开始用户认证
2. 用户认证不通过的 情况

  1. 用户名不存在,提示后退出登录
  2. 用户名输入错误,提示错误,可以输入三次,三次后用户被锁定
  3. 用户已经被锁定了,这样不管密码是否正确都会提示锁定

代码语言
python3.6

版本
version 0.0.1

4. 代码

#!/usr/bin/env python3
# _*_coding:utf-8 _*_
# @author : zpfly
# version 0.0.1
# 用户登录认证程序

user_file = 'user.txt'
# user_file格式如下
# 用户名1:密码
# 用户名2:密码

lock_file = 'locks.txt'
# locks格式如下
# 用户名1
# 用户名2

# 先读入用户名密码文件与用户锁定文件
with open(user_file, 'r') as fr:
    user = fr.read().split('\n')
    user_list = {}
    for record in user:
        name, password = record.split(':')
        user_list[name] = str(password)
# users = {'abc': '123', 'test': '1234', 'Lily': '56789'}

with open(lock_file, 'r') as fr:
    locks = fr.read().split('\n')[:-1]
# locks = ['abc', 'test']

# 定义用户认证程序
def login_auth(username, password):
    if username in user_list:
        if username in locks:
            print("\033[1;31;m你的账号已经被锁定,请联系管理员解锁!\033[0m")
            return 0
        else:
            if password == user_list[username]:
                print("登陆成功!")
                return 0
            else:
                print("\033[1;31;m密码输入错误!\033[0m")
                return 2
    else:
        print("\033[1;31;m输入的用户不存在,请联系管理员录入用户信息!\033[0m")
        return 3


# 开始用户登录
n = 0
while n < 3:
    print("欢迎登陆用户认证系统,请输入你的用户信息")
    username = input("1. 请输入用户名:")
    password = input("2. 请输入用户密码:")
    # 对用户的输入进行判断
    result = login_auth(username, password)
    if result == 0:  # 认证通过就退出认证
        break
    elif result == 3:
        break
    n += 1

    if n == 3:
        with open(lock_file, 'a') as fw:
            fw.write(username + '\n')
        print("\033[1;31;m连续三次输入错误,你的账户已被锁定!\033[0m")

5. 测试

测试1:用户登录

欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:12345
密码输入错误!
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:123
登陆成功!

测试2:输错密码锁定

欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:test1234
密码输入错误!
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:11111
密码输入错误!
欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:2345
密码输入错误!
连续三次输入错误,你的账户已被锁定!

再次登录

欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:abc
2. 请输入用户密码:123
你的账号已经被锁定,请联系管理员解锁!  # 用户已经被锁定了,账号密码正确也不行

测试3:没有这个用户

欢迎登陆用户认证系统,请输入你的用户信息
1. 请输入用户名:Lily
2. 请输入用户密码:12345
输入的用户不存在,请联系管理员录入用户信息!

不足与思考:
1. 只是一个测试程序,没有新用户注册功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值