作业概述:

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

(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. 实时控制软件设计 第一次作业 Draw

    #include <iostream> #include <cstring> #include <math.h> #include <Eigen/Dense& ...

  2. 混合开发H5的图片怎么适配自己想要的大小

    1.先上个自己没适配的图,这个图没显示全,因为用的是webview 所以 用的是webView的代理事件 解决 2.上代码 NSString *injectionJSString = @"v ...

  3. Adobe Dreamweaver代码编辑

    Adobe Dreamweaver 同义词 DW(Adobe Dreamweaver的缩写)一般指Adobe Dreamweaver Adobe Dreamweaver,简称“DW”,中文名称 &qu ...

  4. JAVA(3)

    接口注意事项: 1.接口不能被实例化 2.接口中所有的方法都不能有主体  (不能有{ }) 3.一个类可以实现多个接口 4.接口中可以有变量<但变量不能用private和protected修饰& ...

  5. 一款基于bootstrap的datetimepicker

    <!DOCTYPE HTML> <html> <head> <link href="http://netdna.bootstrapcdn.com/t ...

  6. css基本设置

    css引入方式: 头部引入:在HTML页面头部编写程序(一般用在访问量大的网页上) 标签内引入:在标签内直接写样式(优先级最高,但难于维护,会沉积大量代码) 外部引入:用link标签引入(常用 ,维护 ...

  7. Keychain group access

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

  8. mongodb C# 驱动查询

    INoSqlProvider provider = NoSqlManager.Create("CloudTable"); IMongoCollection<FormMongo ...

  9. win7绕过开机密码攻略

    访问windows机器,经常会因为忘记了开机密码而苦恼.当然你也可以选择重装,这样最简单粗暴.如果有重要数据保存在C盘之类的(个人严重推荐不要保存到C盘),那就不是重装能解决的问题了.2014年12月 ...

  10. Favorite Setting

    1. You Tube download Opera plugin:Video Downloader Pro Website:http://en.savefrom.net 2.