作业概述:

编写一个登录入口,实现如下功能:

(1)输入用户名和密码

(2)认证成功后显示欢迎信息

(3)输错三次后锁定

流程图:

readme:

1、程序配置文件:    黑名单文件blacklist.txt(可以存在,可以不存在)    白名单文件whitelist.txt存在,内容如下:        zhangsan,1234        wang,1234        ding,1234

2、输入密码的时候不显示

代码:
 #coding=utf-8
 import os
 import getpass

 BlackListFileName = 'E:\\python3.5_study\\s13\\day1\\login\\blacklist.txt'  #存放黑名单
 WhiteListFileName = 'E:\\python3.5_study\\s13\\day1\\login\\whitelist.txt'  #存放白名单
 ErrorNum = 0   #记录错误次数
 BlackFlag = False  #遍历黑名单的标志位
 WhiteFlag = False    #遍历白名单的标志位
 WhiteNameList = []   #存放白名单中所有的用户名字

 print ('''
 *********************
       登录入口
 *********************
 ''')

 #判断黑名单文件是否存在
 FileExistBool = os.path.exists(BlackListFileName)
 if FileExistBool == False:
     BlackF=open(BlackListFileName,'w')  #创建存放黑名单的文件
     BlackF.close()

 UserName = input("请输入用户名:")
 PassWord = getpass.getpass("请输入密码:")

 #判断用户是否在黑名单中
 BlackF=open(BlackListFileName,'r')  #读取方式打开黑名单文件
 BlackNameContent = BlackF.readlines()  #读取黑名单文件中所有内容,放入list中
 for i in range(len(BlackNameContent)):
     BlackName = BlackNameContent[i].strip().split(',')[0]
     if UserName == BlackName:
         print ('%s用户被锁定' %(UserName))
         BlackF.close()
         BlackFlag = True
         break

 if BlackFlag == False:  #BlackFlag==False说明UserName不在黑名单中
     #判断用户名和密码是否正确
     while 1:
         WhiteF=open(WhiteListFileName,'r')  #读取方式打开白名单文件
         WhiteNameContent = WhiteF.readlines()  #读取白名单文件中所有内容,放入list中
         for i in range(len(WhiteNameContent)):
             Name = WhiteNameContent[i].strip().split(',')[0]
             NamePassWord = WhiteNameContent[i].strip().split(',')[1]
             WhiteNameList.append(Name)

             if UserName == Name and PassWord == NamePassWord:
                 print ('恭喜,登录成功')
                 WhiteFlag = True
                 break
                 WhiteF.close()

         if UserName not in WhiteNameList:
             print ('%s用户不存在' %UserName)
             break

         if WhiteFlag == True:  #登录成功,跳出while循环
             break
         else:
             ErrorNum += 1   #用户名和密码错误的话错误次数+1
             print ('用户名或密码输入错误,第%d次' %ErrorNum)
             print ('ErrorNum:',ErrorNum)

             if ErrorNum < 3:
                 UserName = input("请输入用户名:")
                 PassWord = getpass.getpass("请输入密码:")
             else:
                 print ('错误次数过多,用户被锁定')
                 BlackF=open(BlackListFileName,'a+')  #追加写黑名单文件
                 BlackName = UserName+'\n'
                 BlackF.write(BlackName)
                 BlackF.close()
                 break

day1作业--登录入口的更多相关文章

  1. day1作业--登录接口

    作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定     知识: 1.循环的使用: 2.continue,break在循环中中断的作用: 3.文件的写入,读取: 4.各基础知 ...

  2. Day1作业---登录接口及多级菜单

    #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Ma Qing data = { "山东" :{ "济南&qu ...

  3. day1作业登录接口总结

    作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 上面作业,用了几种思路来解决问题:但是本质上其实都是一样的:核心都是对文件的操作,文件的增删改查:并且这些操 ...

  4. Day1作业要求

    Day1作业 作业需求 博客 模拟登录 三级菜单 博客地址 杨振伟Day1博客地址 模拟登录 1.程序说明 实现功能如下 用户输入密码,密码验证后登录成功 用户登录成功后提示登录信息 用户输入3次错误 ...

  5. 使用session页面控制登录入口及购物车效果的实现

          由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容.实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只 ...

  6. 【thinkphp5】安全建议:隐藏后台登录入口地址

    我们都知道后台   www.test.com/admin 是我们最常用的登录入口,方便的同时也留下了隐患,如果你刚好使用了 admin/ 这种账号密码的方式,会导致我们的后台完全暴露在外. 因此我们建 ...

  7. Python3.5 Day1作业:实现用户密码登录,输错三次锁定。

    作业需求: 1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 实现思路: 1.判断用户是否在黑名单,如果在黑名单提示账号锁定. 2.判断用户是否存在,如果不存在提示账号不存在. 3. ...

  8. day1作业:登录接口

    作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路: (1)用户输入用户名: (2)去锁定文件中验证用户名是否锁定: (3)去当前用户验证用户是否存在: ...

  9. day1作业:编写登录窗口一个文件实现

    思路: 1.参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则: 1)认证流程参考的是Linux的登录:当你输入完用户名密码后再验证用户名是否存在用户是否被锁定,然后在 ...

随机推荐

  1. Ubuntu 16.04 64位安装insight 6.8

    1. apt-get install insight已经不管用. 2. 编译源码死都有问题. 3. 拜拜,用KDBG.

  2. oracle 行转列、列转行

    最近做数据处理,经常遇到需要行转列.列转行的场景,记录个非常简单实用的oracle  列转行.行转的列方法 1.行转列,基础数据如下 做行转列处理 处理SQL select user_name,max ...

  3. c++ sort降序排序

    sort是c++ STL中提供的一个函数模板,可以用来对多种类型进行排序. 默认是升序排序.它有两种使用方法: default (1) template <class RandomAccessI ...

  4. Keychain group access

    Keychain group access Apr 3, 2010 · 3 minute read · Comments keychain Since iPhone OS 3.0 it has bee ...

  5. 附加数据库失败,操作系统错误 5:"5(拒绝访问。)"的解决办法

    无法打开物理文件 XXX.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server,错误: 5120)   找到xxx.MDF与xx ...

  6. SQLiteDeveloper破解

    Sqlite 管理工具 SQLiteDeveloper及破解 功能特点 表结构设计,数据维护,ddl生成,加密数据库支持,sqlite2,3支持 唯一缺憾,收费,有试用期 下载地址: http://w ...

  7. tinyhttpd源码分析

    我们经常使用网页,作为开发人员我们也部署过httpd服务器,比如开源的apache,也开发过httpd后台服务,比如fastcgi程序,不过对于httpd服务器内部的运行机制,却不是非常了解,前几天看 ...

  8. NoSuchMethodError

    http://www.tuicool.com/articles/iIVbuuZ 有些服务器是指定某个目录下的所有jar包,这样如果同时存在不同版本的jar包,也会引起这个问题,算一个检查点

  9. 关于Kean博客的学习

    由于我从事设计行业,使用Autocad进行绘图是一件单调但是拥有乐趣的工作. 大约在一年前,接触到了CAD的二次开发的内容,它使我感到新奇,并且决定花时间来研究相关的知识.这时我在网上浏览到了Kean ...

  10. cache缓存帮助类

    public class CacheHelper { /// <summary> /// 创建缓存项的文件 /// </summary> /// <param name= ...