Python实战一
要求:用户输入用户名和密码错误三次,就对该用户进行锁定,不让其进行登录。
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实战一的更多相关文章
- Python 实战一
列表ID的显示 起初ID显示的是数据库中的id,因为数据库中的id是自增长的,所以删除一条后,这里显示就叉开了,这里使用索引的方式来显示. 这个功能实现的逻辑: 第一:定义一个表格的架构,用id=‘i ...
- 机器学习实战一:kNN手写识别系统
实战一:kNN手写识别系统 本文将一步步地构造使用K-近邻分类器的手写识别系统.由于能力有限,这里构造的系统只能识别0-9.需要识别的数字已经使用图形处理软件,处理成具有相同的色彩和大小:32像素*3 ...
- 【转】Delphi+Halcon实战一:两行代码识别QR二维码
Delphi+Halcon实战一:两行代码识别QR二维码 感谢网友:绝代双椒( QQ号应原作者要求隐藏了:xxxx6348)的支持 本文是绝代双椒的作品,因为最近在忙zw量化培训,和ziwang.co ...
- C蛮的全栈之路-node篇(二) 实战一:自动发博客
目录 C蛮的全栈之路-序章 技术栈选择与全栈工程师C蛮的全栈之路-node篇(一) 环境布置C蛮的全栈之路-node篇(二) 实战一:自动发博客 ---------------- 我是分割线 ---- ...
- 【实战】Docker 入门实战一:ubuntu 和 centos 安装Docker
Docker是什么 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源.Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布 ...
- zookeeper curator ( 实战一)
目录 zookeeper 的伪集群搭建 写在前面 1.1. zookeeper 安装&配置 1.1.1. 创建数据目录和日志目录: 1.1.2. 创建myid文件 1.1.3. 创建和修改配置 ...
- Netty聊天器(实战一):从0开始实战100w级流量应用
Java 聊天程序(百万级流量实战一):系统介绍 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之14 [博客园 总入口 ] 源码IDEA工程获取链接:Java 聊天室 实战 源码 写在前面 ...
- 【k8s实战一】Jenkins 部署应用到 Kubernetes
[k8s实战一]Jenkins 部署应用到 Kubernetes 01 本文主旨 目标是演示整个Jenkins从源码构建镜像到部署镜像到Kubernetes集群过程. 为了简化流程与容易重现文中效果, ...
- miniFTP项目实战一
项目简介: 在Linux环境下用C语言开发的Vsftpd的简化版本,拥有部分Vsftpd功能和相同的FTP协议,系统的主要架构采用多进程模型,每当有一个新的客户连接到达,主进程就会派生出一个ftp服务 ...
随机推荐
- 关于VXLAN的认识-----基础知识
一.什么是VXLAN 普通的VLAN数量只有4096个,无法满足大规模云计算IDC的需求,因为目前大部分IDC内部结构主要分为两种L2,L3. L2结构里面,所有的服务器都在一个大的局域网里面,TOR ...
- python中用selenium调Firefox报错问题
python在用selenium调Firefox时报错: Traceback (most recent call last): File "G:\python_work\chapter11 ...
- Oracle根据【日期】组,其他条件根据PIVOT行转列。使每个日期条件关联的其他数据只有一行。
select OPER_TIME, MICROPAY, REFUND from ( select trunc(oper_time) oper_time, class_name, sum(total_f ...
- 3D中的旋转变换
相比 2D 中的旋转变换,3D 中的旋转变换复杂了很多.关于 2D 空间的旋转,可以看这篇文章.本文主要粗略地探讨一下 3D 空间中的旋转. 旋转的要素 所谓旋转要素就是说,我们只有知道了这些条件,才 ...
- 20165231 2017-2018-2 《Java程序设计》第9周学习总结
教材学习内容总结 第十三章 URL类 URL类是java.net包中的一个重要的类,URL的实例封装着一个统一资源定位符(Uniform Resource Locator),使用URL创建对象的应用程 ...
- rsync+inotify实现实时同步案例【转】
1.1 inotify介绍 inotify是一种强大的.细粒度的.异步的文件系统事件控制机制.linux内核从2.6.13起,加入了inotify支持,通过inotify可以监控文件系统中添加.删除. ...
- 工程师死绝的世界答案-python3版
エンジニアが死滅シタ世界|アンドロイドとふたりぼっちで生きろ. 荒れ果てた警察署 [MISSION LEVEL: D] 难度D 题目要求: あなたは 0 から 9 の数字を 3 つ入力すると開く扉を開 ...
- 使用sudo而无需输入密码的设置
在linux上,root用户是老大,什么事都能做.但是,很多时候由于安全等各种原因,我们不希望把root用户开放给大家,但是又希望其他的用户可以有root的权限,所以就有了sudo用户.而执行sudo ...
- Alpha冲刺(9/10)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺倒计时之9 团队部分 后敬甲(组长) 过去两天完成了哪些任务 答辩准备中 和大佬们跟进进度 接下来的计划 准备答辩 ...
- ansible笔记(8):常用模块之系统类模块(二)
ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...