day1作业--登录入口
作业概述:
编写一个登录入口,实现如下功能:
(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作业--登录入口的更多相关文章
- day1作业--登录接口
作业:编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 知识: 1.循环的使用: 2.continue,break在循环中中断的作用: 3.文件的写入,读取: 4.各基础知 ...
- Day1作业---登录接口及多级菜单
#!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Ma Qing data = { "山东" :{ "济南&qu ...
- day1作业登录接口总结
作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 上面作业,用了几种思路来解决问题:但是本质上其实都是一样的:核心都是对文件的操作,文件的增删改查:并且这些操 ...
- Day1作业要求
Day1作业 作业需求 博客 模拟登录 三级菜单 博客地址 杨振伟Day1博客地址 模拟登录 1.程序说明 实现功能如下 用户输入密码,密码验证后登录成功 用户登录成功后提示登录信息 用户输入3次错误 ...
- 使用session页面控制登录入口及购物车效果的实现
由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容.实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只 ...
- 【thinkphp5】安全建议:隐藏后台登录入口地址
我们都知道后台 www.test.com/admin 是我们最常用的登录入口,方便的同时也留下了隐患,如果你刚好使用了 admin/ 这种账号密码的方式,会导致我们的后台完全暴露在外. 因此我们建 ...
- Python3.5 Day1作业:实现用户密码登录,输错三次锁定。
作业需求: 1.输入用户名密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 实现思路: 1.判断用户是否在黑名单,如果在黑名单提示账号锁定. 2.判断用户是否存在,如果不存在提示账号不存在. 3. ...
- day1作业:登录接口
作业一:编写登陆接口 1.输入用户名和密码 2.认证成功后显示欢迎信息 3.输错三次后锁定 思路: (1)用户输入用户名: (2)去锁定文件中验证用户名是否锁定: (3)去当前用户验证用户是否存在: ...
- day1作业:编写登录窗口一个文件实现
思路: 1.参考模型,这个作业我参考了linux的登录认证流程以及结合网上银行支付宝等锁定规则: 1)认证流程参考的是Linux的登录:当你输入完用户名密码后再验证用户名是否存在用户是否被锁定,然后在 ...
随机推荐
- .net中使用ODP.net访问Oracle数据库(无客户端部署方法)
ODP.net是Oracle提供的数据库访问类库,其功能和效率上都有所保证,它还有一个非常方便特性:在客户端上,可以不用安装Oracle客户端,直接拷贝即可使用. 以下内容转载自:http://b ...
- SQL注入的字符串连接函数
在select数据时,我们往往需要将数据进行连接后进行回显.很多的时候想将多个数据或者多行数据进行输出的时候,需要使用字符串连接函数.在sqli中,常见的字符串连接函数有concat(),group_ ...
- ES5 对数组方法的扩展 以及 正则表达式
ES5 对数组的扩展 forEach map some every indexOf lastIndexOf forEach 与 map 语法: 数组.forEach(function ( v, i ) ...
- Linux 路线 推荐
1.<Linux程序设计>- 靠它来入门,然后装一个linux体系,练习shell(party)和linuxC,把基础打牢: 2. <深入理解Linux内核>和<Linu ...
- test latex1
equation systems: \begin{equation} 1 + 2 = 3 \ 1 = 3 - 2 \end{equation} align text \begin{align} 1+2 ...
- DeepLearning入门笔记(一),准备工作与注意事项
本文记录了安装theano.keras.tensorflow以及运行tutorial程序时遇到的一些问题,供后人参考. 实验机器:联想笔记本,i7-6700HQ,GTX960M,16G内存,SSD硬盘 ...
- HttpContext详解
HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息. 在处理请求执行链的各个阶段中,会有一个对象在各个对象之间进行传递,也即会保存 请求的上下文信息,这个对象就是Ht ...
- JS中直接从java后台获得对象的值(数组的值)
这里举得例子是:JS直接从后台Contorller中(SpringMVC中的model中)获得数值的值 Contorller 此处将 talentIntegralRecordsDay talentIn ...
- ionic 开发APP 安装配置详解以及 cordova 环境配置详细过程
整个安装过程: 1. jdk 1.7.2 (http://www.oracle.com/technetwork/java/javase/downloads/index.html) 安装好之 ...
- html5原生canvas内image旋转
目前理解下来就是旋转的不是image本身,而是要drawImage的那个canvas的2d context,context本身的绘制就是把图片本来的样子draw出来,至于旋转,透明度之类的效果都是对c ...