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的登录:当你输入完用户名密码后再验证用户名是否存在用户是否被锁定,然后在 ...
随机推荐
- WindowsService部署和问题的解决方法
1.Windows Service项目生成:[服务名称].exe 编译后,把bin\debug下所有都拷贝到生产环境的一个地址下:[服务exe所在文件地址] 2.部署:做一个ServiceInstal ...
- android 判断当前界面是否是桌面
1 /** * 获得当前活动APP的包名 * * @return 返回当前活动界面是不是桌面 */ private boolean isHomeWin() { ActivityManager mAct ...
- HttpFox插件安装和打开教程
HttpFox插件安装教程 1.打开火狐浏览器,选择右上角的打开菜单 2.选择附加组件,在获取附件组件栏中搜索HttpFox插件 3.找到HttpFox插件选择安装 4.安装完成后选择左边的扩展栏确认 ...
- Android DownloadProvider学习 (二)
DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息,这两个类的具体功能会在后面穿插介绍.DownloadManager的源码可见 ...
- MSSQL—行转列
行转列,是SQL中经常会遇到的一个问题,并且分为静态转换和动态转换,所谓静态转换即在转换的行数已知或固定:动态转换则为转换的行数不固定. 转换的方法一般采用case when语句或pivot(MSSQ ...
- Activity、Task、应用和进程
http://www.cnblogs.com/franksunny/archive/2012/04/17/2453403.html Activity.Task.应用和进程 为了阅读方便,将文档转成pd ...
- ARM Linux Qt 5.x.x 无标题栏
/********************************************************************************* * ARM Linux Qt 5. ...
- Node.prototype.contains
document.documentElement.contains(document.body) // true document.documentElement.compareDocumentPos ...
- linux awk的使用
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...
- Python 爬虫 字符集乱码问题
解决办法: http://worldant.blog.sohu.com/251745784.html 爬虫爬下来的源代码和网页的源代码不一样,可以先把爬下来的代码输出或保存在文件中,然后再写正则匹配表 ...