zoukankan      html  css  js  c++  java
  • 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定

    基础需求:
    让用户输入用户名密码
    认证成功后显示欢迎信息
    输错三次后退出程序
    
    升级需求:
    可以支持多个用户登录 (提示,通过列表存多个账户信息)
    用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)


    # author:simon002
    # -*- coding: utf-8 -*-
    
    import os
    
    
    # 创建文件存储用户名和密码,并放入两对用户名和密码
    if not os.path.exists('simon.txt'):
        with open('simon.txt','a+') as fx:
            fx.write(str({'simon': '001', 'lily': '002'}))
    
    # 创建文件存储用户名和密码输入的次数,初始为空
    if not os.path.exists('simonlocktime.txt'):
        with open('simonlocktime.txt','a+'):pass
    
    
    with open('simon.txt','r')as f:
        user = f.read()
        user = eval(user)    # 把文件中的字典格式的内容读出来,并且转化为字典(默认读进来是字符串)
    with open('simonlocktime.txt','r')as f2:
        dic_locktime = f2.read()    # 读锁定次数的字典
        if len(dic_locktime)>0:    # 初始为空,所以读出来的有值的时候才将其转化为字典
            dic_locktime = eval(dic_locktime)
        else:dic_locktime={}    # 无值的时候初始化字典
    
    ifcontinue = 1
    while ifcontinue:
        name = input('请输入用户名:')
        name_exist = user.get(name)    # 根据输入的用户名找对应的密码
        if name_exist:
            error_num = dic_locktime.get(name)    # 找到之后读取锁定次数
            if error_num == 3:
                print('账户已被锁定!')
                exit()
            if error_num == None:
                error_num = 0
            while error_num<3:    # 未锁定时输入密码
                psd = input('请输入密码:')
                if psd ==user.get(name):
                    dic_locktime[name] = error_num
                    print('Welcome %s login ...'%name)
                    ifcontinue = 0    # 成功登陆之后不让用户再输入用户名,锁定的时候再继续输入用户名
                    break
                else:
                    error_num += 1
                    print('密码输入错误第%s次,输入错误超过三次后将被锁定!'%error_num)
            if error_num == 3:
                dic_locktime[name] = 3
        else:
            print('未找到此用户名!')
        with open('simonlocktime.txt', 'w+')as f__lock:
            f__lock.write(str(dic_locktime))
    View Code
  • 相关阅读:
    金融资产的票面利率与实际利率
    对于确定承诺的外汇风险,既属于公允价值套期,又属于现金流量套期,怎么区分呢?
    套期工具(公允价值套期与现金流量套期)
    R语言使用 LOWESS技术图分析逻辑回归中的函数形式
    R语言ROC曲线下的面积
    R语言Poisson回归的拟合优度检验
    R语言在逻辑回归中求R square R方
    R平方/相关性取决于预测变量的方差
    stata具有异方差误差的区间回归
    R语言用于线性回归的稳健方差估计
  • 原文地址:https://www.cnblogs.com/Simonsun002/p/8280241.html
Copyright © 2011-2022 走看看