作业概述:

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

(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. WindowsService部署和问题的解决方法

    1.Windows Service项目生成:[服务名称].exe 编译后,把bin\debug下所有都拷贝到生产环境的一个地址下:[服务exe所在文件地址] 2.部署:做一个ServiceInstal ...

  2. android 判断当前界面是否是桌面

    1 /** * 获得当前活动APP的包名 * * @return 返回当前活动界面是不是桌面 */ private boolean isHomeWin() { ActivityManager mAct ...

  3. HttpFox插件安装和打开教程

    HttpFox插件安装教程 1.打开火狐浏览器,选择右上角的打开菜单 2.选择附加组件,在获取附件组件栏中搜索HttpFox插件 3.找到HttpFox插件选择安装 4.安装完成后选择左边的扩展栏确认 ...

  4. Android DownloadProvider学习 (二)

    DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息,这两个类的具体功能会在后面穿插介绍.DownloadManager的源码可见 ...

  5. MSSQL—行转列

    行转列,是SQL中经常会遇到的一个问题,并且分为静态转换和动态转换,所谓静态转换即在转换的行数已知或固定:动态转换则为转换的行数不固定. 转换的方法一般采用case when语句或pivot(MSSQ ...

  6. Activity、Task、应用和进程

    http://www.cnblogs.com/franksunny/archive/2012/04/17/2453403.html Activity.Task.应用和进程 为了阅读方便,将文档转成pd ...

  7. ARM Linux Qt 5.x.x 无标题栏

    /********************************************************************************* * ARM Linux Qt 5. ...

  8. Node.prototype.contains

    document.documentElement.contains(document.body) // true document.documentElement.compareDocumentPos ...

  9. linux awk的使用

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  10. Python 爬虫 字符集乱码问题

    解决办法: http://worldant.blog.sohu.com/251745784.html 爬虫爬下来的源代码和网页的源代码不一样,可以先把爬下来的代码输出或保存在文件中,然后再写正则匹配表 ...