要求

1.输入用户名密码
2.认证成功后显示欢迎信息
3.输错三次后锁定

思路

没有数据库,这里使用本地文件,一共需要两个文件:

      黑名单的文件:黑名单里检测,不让登录
     用户信息文件:将已有的用户信息存放在此文件

1.首先检测黑名单是否有该用户,如果有就强制退出程序

这里检测的方式一共有两种方式:

方式一:

 username = input('请输入用户名:')
with open(locked_file, 'r') as lock_f: # 先检测黑名单是否有用户名
lines = []
for line in lock_f.readlines():
lines.append(line.strip())
if username in lines:
sys.exit('用户 %s 已经被锁定!' % username)

方式二:

 username = input('请输入用户名:')
with open(locked_file, 'r') as lock_f: # 先检测黑名单是否有用户名
lines = []
for line in lock_f.readlines():
if len(line)==0:
continue
if username == line.strip():
sys.exit('用户 %s 已经被锁定!' % username)

2.如果检测黑名单里面没有该用户,就输入密码,然后就去用户信息文件中匹配用户名和密码

         with open(account_file,'r') as account_f: # 在用户信息文件中检测密码
flag = False
for line in account_f.readlines():
user,pawd = line.strip().split()
if username == user and password == pawd:
print("success!")
print("欢迎 %s 来到后台登录系统" %username)
flag=True
break # 退出当前for循环

3.在用户信息文件中匹配成功则成功进入系统,如果没有匹配成功就继续输入

4.继续输入的过程中对输入次数计数,当次数达到限制还没有成功匹配就将该用户加入黑名单然后退出程序。当次数没有达到限定次数然后匹配成功,就成功进入系统。

将用户名写入黑名单:

 def deny_account(username):
print("您的用户已被锁定!")
with open(locked_file,'a') as deny_f:
deny_f.write('\n'+username)

完整代码

 import sys

 account_file = 'D:\match.txt'
locked_file = 'D:\locked.txt' # 当用户输入错误操作三次将用户的用户名添加进黑名单文件
def deny_account(username):
print("您的用户已被锁定!")
with open(locked_file,'a') as deny_f:
deny_f.write('\n'+username)
# 主文件
def main():
retry_count = 0 # 计数器
retry_limit = 3 # 次数限制
while retry_count<retry_limit: # 循环输入
username = input('请输入用户名:')
with open(locked_file,'r') as lock_f: # 先检测黑名单是否有用户名
#方式一
# for line in lock_f.readlines():
# if len(line)==0:
# continue
# if username == line.strip():
# sys.exit('\033[32:lm用户 %s 已经被锁定!\033[0m' % username)
#方式二
lines = []
for line in lock_f.readlines():
lines.append(line.strip())
if username in lines:
sys.exit('用户 %s 已经被锁定!' % username)
if len(username)==0:
print('用户名不能为空,请重新输入')
continue password = input('请输入密码:')
with open(account_file,'r') as account_f: # 在用户信息文件中检测密码
flag = False
for line in account_f.readlines():
user,pawd = line.strip().split()
if username == user and password == pawd:
print("success!")
print("欢迎 %s 来到后台登录系统" %username)
flag=True
break # 退出当前for循环
if flag == False:
if retry_count<2:
print("您的用户名或密码有误,请重新输入!")
retry_count +=1
else:
print("欢迎进入后台管理系统")
break # 跳出while循环
else:
deny_account(username)
if __name__ == '__main__': # Python主文件的判断,入口处
main()

注意:

  这里目前有一个bug,这里的计数是对输入用户名的次数进行计数,而不是根据某个具体的用户名进行计数,因此这里还需要改进。各位博友有好主意的可以顶起来哦!

Python之登录接口的更多相关文章

  1. (转)python编写登录接口

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://506554897.blog.51cto.com/2823970/1907262 ...

  2. Python+request 登录接口reponse的返回值token跨py文件的传递《二》

    主要使用场景: 一般我们在进行接口测试时,依赖登录接口后reponse中的某些返回值,因此需要将login接口单独写一个py文件,另外的py文件均可调用login的reponse返回值使用.共用登录接 ...

  3. Python+request 登录接口reponse中token传递给其他接口使用,小示例介绍《一》

    要求: 1.调用登录login 2.调用通过登录接口返回的reponse中的token和uuid,实现test_create_todo接口的测试 实现: 1.login登录接口的调用,直接填写对应的U ...

  4. 8.Python编写登录接口

    1.python需安装flask,在命令行窗口输入:pip3 install flask 2.代码如下所示: from flask import Flask,request,jsonify,sessi ...

  5. Python实现登录接口

    要求: 输入用户名和密码 认证成功,显示欢迎信息 用户名3次输入错误后,退出程序 密码3次输入错误后,锁定用户名 Readme: UserList.txt 是存放用户名和密码的文件,格式为:usern ...

  6. Python作业--登录接口

    作业需求: 编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 实现思路: 1.从文件获取用户名密码 2.判断是否在黑名单中 3.验证用户名密码 成功:输出认证成功 错误:判断验证次 ...

  7. python编写登录接口

    要求: 输入用户名密码     认证成功显示欢迎信息 输错三次以后锁定 代码如下: # Author:YKwhile(True): select=input('请问是注册还是登录') if selec ...

  8. Python 编写登录接口

    流程图: 源码:

  9. python 测试登录接口只返回response200的问题

    但是使用postman测试是有json串的 后来发现postman传参是用的raw格式,raw的格式相当于json 而这里的data其实是form-data格式,需要用json的格式

随机推荐

  1. Linux入门(15)——Ubuntu16.04安装codeblocks搭建C/C++的IDE环境

    安装codeblocks: sudo add-apt-repository ppa:damien-moore/codeblocks-stable sudo apt-get update sudo ap ...

  2. 容器与Docker简介(一)——微软微服务电子书翻译系列

    前不久参加了深圳的Azure开源者峰会,会上张善友张老师推荐了微软的一个架构网站:.NET Application Architecture 这几天正好工作比较闲,看了下里面关于微服务架构的介绍,非常 ...

  3. cas单点登录如何获取更多信息

    现在有个新的系统(SpringMVC+Spring+Mybatis),我为它添加了一个单点登录功能.只是在本地客户端的web.xml文件里,添加了以下配置 <!-- 用于单点退出,该过滤器用于实 ...

  4. Yii2之组件的注册与创建

    今天本来打算研究一下yii2.0的AR模型的实现原理,然而,计划赶不上变化,突然就想先研究一下yii2.0的数据库组件创建的过程.通过对yii源码的学习,了解了yii组件注册与创建的过程,并发现原来y ...

  5. 【20171025晚】alert(1) to win 第五题 正则表达式过滤

    吃过晚饭,再练一题 第五题 function escape(s) { var text = s.replace(/</g, '<').replace(/"/g, '"' ...

  6. 压缩感知重构算法之压缩采样匹配追踪(CoSaMP)

    压缩采样匹配追踪(CompressiveSampling MP)是D. Needell继ROMP之后提出的又一个具有较大影响力的重构算法.CoSaMP也是对OMP的一种改进,每次迭代选择多个原子,除了 ...

  7. 扩展 lua require 的行为

    扩展 lua require 的行为 来源 https://blog.codingnow.com/2015/10/lua_require_env.html 今天同事提了个需求,他希望可以给部分 lua ...

  8. HDU 6143 Killer Names

    Killer Names Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  9. Best Coder #86 1001 Price List(大水题)

    Price List Accepts: 880 Submissions: 2184 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 26214 ...

  10. 网络基础二 tcp/ip协议簇 端口 三次握手 四次挥手 11种状态集

    第1章 概念介绍 1.1 VLAN 1.1.1 什么是VLAN VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成 ...