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的登录:当你输入完用户名密码后再验证用户名是否存在用户是否被锁定,然后在 ...
随机推荐
- Ubuntu 16.04 64位安装insight 6.8
1. apt-get install insight已经不管用. 2. 编译源码死都有问题. 3. 拜拜,用KDBG.
- oracle 行转列、列转行
最近做数据处理,经常遇到需要行转列.列转行的场景,记录个非常简单实用的oracle 列转行.行转的列方法 1.行转列,基础数据如下 做行转列处理 处理SQL select user_name,max ...
- c++ sort降序排序
sort是c++ STL中提供的一个函数模板,可以用来对多种类型进行排序. 默认是升序排序.它有两种使用方法: default (1) template <class RandomAccessI ...
- Keychain group access
Keychain group access Apr 3, 2010 · 3 minute read · Comments keychain Since iPhone OS 3.0 it has bee ...
- 附加数据库失败,操作系统错误 5:"5(拒绝访问。)"的解决办法
无法打开物理文件 XXX.mdf".操作系统错误 5:"5(拒绝访问.)". (Microsoft SQL Server,错误: 5120) 找到xxx.MDF与xx ...
- SQLiteDeveloper破解
Sqlite 管理工具 SQLiteDeveloper及破解 功能特点 表结构设计,数据维护,ddl生成,加密数据库支持,sqlite2,3支持 唯一缺憾,收费,有试用期 下载地址: http://w ...
- tinyhttpd源码分析
我们经常使用网页,作为开发人员我们也部署过httpd服务器,比如开源的apache,也开发过httpd后台服务,比如fastcgi程序,不过对于httpd服务器内部的运行机制,却不是非常了解,前几天看 ...
- NoSuchMethodError
http://www.tuicool.com/articles/iIVbuuZ 有些服务器是指定某个目录下的所有jar包,这样如果同时存在不同版本的jar包,也会引起这个问题,算一个检查点
- 关于Kean博客的学习
由于我从事设计行业,使用Autocad进行绘图是一件单调但是拥有乐趣的工作. 大约在一年前,接触到了CAD的二次开发的内容,它使我感到新奇,并且决定花时间来研究相关的知识.这时我在网上浏览到了Kean ...
- cache缓存帮助类
public class CacheHelper { /// <summary> /// 创建缓存项的文件 /// </summary> /// <param name= ...