要求:用户输入用户名和密码错误三次,就对该用户进行锁定,不让其进行登录。

def match(name,pwd):
'''匹配用户输入的信息,进行判断'''
falg = True
while falg:
with open("test",mode="r",encoding="utf8") as f_read,\
open("test2",mode="r",encoding="utf8") as f1_read:
fread = f_read.readlines()
f1read = f1_read.readlines()
for lines in f1read:#循环黑名单里的内容
if name == lines:#判断是否在黑名单里,在就锁定退出
falg = False#退出while循环
print("This user has been locked!")
if falg ==False:
break #退出黑名单循环
for line in fread:#循环用户信息库,进行判断是否正确
if name in line and pwd in line :
verdict = True#输入正确为True,退出循环
break
else:
verdict = False#输入错误为False,跳出本次循环
continue
if verdict == True:#因为用户信息库里有很多用户信息,so,要拿出来判断
print("welcome %s" % (name))
falg = False
if verdict == False:
print("You input the username or password error")
decide(name)#当输入错误时,调用decide函数
falg = False def decide(name):
'''写入用户输入错误的用户名,达到一定的次数,把该用户写入黑名单'''
count = 0#计数器,用于记录输入错误用户的次数
with open("test1",mode="a+",encoding="utf8") as f_add:
f_add.write("\n"+name)#往文本写错误用户的信息
f_add.seek(0)#把光标移到最开始位置
fadd = f_add.readlines()#获取输入错误用户的信息
for i in range(len(fadd)):#循环列表fadd
fadd[i] = fadd[i].replace('\n', '')#去掉每行中的“\n”,用于下面的比对
for line in fadd:#此时的fadd里已没有多余的空格,便于比对
if name == line:#当有重复的用户名,累加一次
count += 1 #匹配后自加1
if count > 2:#当输入3次时,就调用black函数
black(name) def black(name):
'''黑名单,输入达到次数的用户,被锁定在黑名单'''
with open("test2",mode="a+",encoding="utf8") as f_add:
f_add.seek(0)#移动光标至最开始位置
fadd = f_add.readlines()#获取黑名单信息
for line in fadd:#循环黑名单,有重复的用户不会被写入
if name == line :
break #有重复的信息退出,不再写入黑名单
f_add.write("\n"+name)#写入黑名单 while True: #用户交互模式
name = input("Please input your username:").strip()
if len(name) == 0:#判断用户名输入是否为空,空的话重新输入
print("Input is wrong, please input again")
continue
if name =="q":#输入q退出
print("ByeBye!")
break
pwd = input("Please input your password:").strip()
match(name, pwd)#调用match函数,匹配输入信息

  程序中test为用户的信息库:

michael---111
egon---222
tom---333

  test1:为缓存错误用户的信息,对错误用户进行计数。

  test2:为存储达到规定次数的用户信息,就是黑名单。使在名单里的用户无法完成登录操作。

  

Python实战一的更多相关文章

  1. Python 实战一

    列表ID的显示 起初ID显示的是数据库中的id,因为数据库中的id是自增长的,所以删除一条后,这里显示就叉开了,这里使用索引的方式来显示. 这个功能实现的逻辑: 第一:定义一个表格的架构,用id=‘i ...

  2. 机器学习实战一:kNN手写识别系统

    实战一:kNN手写识别系统 本文将一步步地构造使用K-近邻分类器的手写识别系统.由于能力有限,这里构造的系统只能识别0-9.需要识别的数字已经使用图形处理软件,处理成具有相同的色彩和大小:32像素*3 ...

  3. 【转】Delphi+Halcon实战一:两行代码识别QR二维码

    Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ号应原作者要求隐藏了:xxxx6348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.co ...

  4. C蛮的全栈之路-node篇(二) 实战一:自动发博客

    目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 ---------------- 我是分割线 ---- ...

  5. 【实战】Docker 入门实战一:ubuntu 和 centos 安装Docker

    Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...

  6. zookeeper curator ( 实战一)

    目录 zookeeper 的伪集群搭建 写在前面 1.1. zookeeper 安装&配置 1.1.1. 创建数据目录和日志目录: 1.1.2. 创建myid文件 1.1.3. 创建和修改配置 ...

  7. Netty聊天器(实战一):从0开始实战100w级流量应用

    Java 聊天程序(百万级流量实战一):系统介绍 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之14 [博客园 总入口 ] 源码IDEA工程获取链接:Java 聊天室 实战 源码 写在前面 ...

  8. 【k8s实战一】Jenkins 部署应用到 Kubernetes

    [k8s实战一]Jenkins 部署应用到 Kubernetes 01 本文主旨 目标是演示整个Jenkins从源码构建镜像到部署镜像到Kubernetes集群过程. 为了简化流程与容易重现文中效果, ...

  9. miniFTP项目实战一

    项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...

随机推荐

  1. VMware 11安装Mac和Linux

    VMware 11安装Mac OS X 10.10_百度经验 https://jingyan.baidu.com/article/ff411625b9011212e48237b4.html?qq-pf ...

  2. 前端必备——js中前端与后台的数据交互全解

    只要编程语言能够支持网卡端口的监听和发送,理论上都是可以实现服务器后台设计的.也因此造成了实现后台的语言偏多,而web前端语言以html/css/js为主.所以在这里我们不涉及后台的设计,只介绍在we ...

  3. 【Udacity并行计算课程笔记】- Lesson 4 Fundamental GPU Algorithms (Applications of Sort and Scan)

    I. Scan应用--Compact 在介绍这节之前,首先给定一个情景方便理解,就是因为某种原因我们需要从扑克牌中选出方块的牌. 更formal一点的说法如下,输入是 \(s_0,s_1,...\), ...

  4. 阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义

    分层领域模型规约: DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象. DTO( Data Transfer Object):数据传输对象,Service或Ma ...

  5. Zookeeper学习笔记4

    开源客户端 ZkClient <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId ...

  6. 【Linux】CentOS7.0下安装JDK环境

    写在前面:此次试验是在CentOS7上面安装的,亲测成功. 所需工具:JDK1.8安装包,xftp 具体步骤: 1,首先使用xftp连接到自己的虚拟机,然后查看是否有"/usr/java/j ...

  7. JavaScript-DOM(重点)

    解析过程 DOM树(一切皆是节点) DOM可以做什么 清楚DOM的结构 获取其它DOM(事件源)的三种方式 事件 事件的三要素 绑定事件的方式 JavaScript入口函数 window.onload ...

  8. 搭建Unity安卓开发环境

    原文见 https://blog.csdn.net/chenggong2dm/article/details/20654075 tiny教程 https://docs.unity3d.com/Pack ...

  9. HBase详细概述

    原文地址:https://blog.csdn.net/u010270403/article/details/51648462 本文首先简单介绍了HBase,然后重点讲述了HBase的高并发和实时处理数 ...

  10. 转换简体中文和繁体中文 cconv-0.6.2 for win32 static

    dos状态下 chcp 65001 echo "转换简体中文和繁体中文"|cconv -f utf-8 -t utf8-tw 显示 "轉換簡體中文和繁體中文" ...