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服务 ...
随机推荐
- linux atoi
atoi 只能针对字符串为数字, 对字符串为十六进制.八进制的不能进行转化
- Python 12 - Mysql & ORM
本节内容 1.数据库介绍 2.mysql数据库安装使用 3.mysql数据库基础 4.mysql命令 5.事务 6.索引 7.Python操作mysql 8.ORM sqlalchemy了解 数据库介 ...
- include指令和<jsp:include>动作标识区别:--不明觉厉 先收藏
<jsp:include> 会通过转发的形式,分别编译被包含的文件,所以不怕重命名:而 include 是将多个被包含的原封不动合并后再一起编译一次,所以不可以重命名. ========= ...
- python小练习---TCP客户端
这是python黑帽子上的起始练习,我对其中的用到的函数做了注释,以便日后便于理解. 该程序可以访问百度,返回响应信息. 另外,我注释还有一部分UDP客户端的语句,TCP和UDP对比便于记忆. # - ...
- Solr版本问题分析
在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中,新加入了动态更新schema功能,这个默认的schema.xml确找不到了 ...
- python打印朱莉娅集合
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt # 複素数列の計算回数を出力する関数loopmax ...
- 网页块元素定位建议使用的xpath方式
取上图的新手上路文字 使用xpath "//div[@class='pbm mbm bbda cl']//li[contains(string(),'用户组')]/span/a/text() ...
- 《超越C++标准库:Boost库导引》:序
序(Foreword) C++社区正在发生着一些美妙的事情.尽管C++仍然是世界上使用最广泛的编程语言,它依旧在变得更加强大而且易用.不信么?容我慢慢道来. 当前版本的标准C++是在1998年最终确定 ...
- 【转】HashMap实现原理及源码分析
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景极其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出 ...
- GetCheckProxy
@echo off setlocal enabledelayedexpansion set infile=free.txt set url=https://www.google.com/?gws_rd ...