Python之登录接口
要求
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之登录接口的更多相关文章
- (转)python编写登录接口
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://506554897.blog.51cto.com/2823970/1907262 ...
- Python+request 登录接口reponse的返回值token跨py文件的传递《二》
主要使用场景: 一般我们在进行接口测试时,依赖登录接口后reponse中的某些返回值,因此需要将login接口单独写一个py文件,另外的py文件均可调用login的reponse返回值使用.共用登录接 ...
- Python+request 登录接口reponse中token传递给其他接口使用,小示例介绍《一》
要求: 1.调用登录login 2.调用通过登录接口返回的reponse中的token和uuid,实现test_create_todo接口的测试 实现: 1.login登录接口的调用,直接填写对应的U ...
- 8.Python编写登录接口
1.python需安装flask,在命令行窗口输入:pip3 install flask 2.代码如下所示: from flask import Flask,request,jsonify,sessi ...
- Python实现登录接口
要求: 输入用户名和密码 认证成功,显示欢迎信息 用户名3次输入错误后,退出程序 密码3次输入错误后,锁定用户名 Readme: UserList.txt 是存放用户名和密码的文件,格式为:usern ...
- Python作业--登录接口
作业需求: 编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 实现思路: 1.从文件获取用户名密码 2.判断是否在黑名单中 3.验证用户名密码 成功:输出认证成功 错误:判断验证次 ...
- python编写登录接口
要求: 输入用户名密码 认证成功显示欢迎信息 输错三次以后锁定 代码如下: # Author:YKwhile(True): select=input('请问是注册还是登录') if selec ...
- Python 编写登录接口
流程图: 源码:
- python 测试登录接口只返回response200的问题
但是使用postman测试是有json串的 后来发现postman传参是用的raw格式,raw的格式相当于json 而这里的data其实是form-data格式,需要用json的格式
随机推荐
- Bootstrap 引用的标准模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- Rolling Hash(Rabin-Karp算法)匹配字符串
您可以在我的个人博客中访问此篇文章: http://acbingo.cn/2015/08/09/Rolling%20Hash(Rabin-Karp%E7%AE%97%E6%B3%95)%E5%8C%B ...
- uva 10118,记忆化搜索
这个题debug了长达3个小时,acm我不能放弃,我又回来了的第一题! 一开始思路正确,写法不行,结果越改越乱 看了网上某神的代码,学习了一下 coding+debug:4小时左右,记忆化搜索+dp类 ...
- 关于keyTyped
蠢了,重写keyTyped方法时候拿keyCode去做比较....记一下....VK_UNDEFiEND.......
- PhiloGL学习(2)——骚年,让我们荡起双桨
前言 上一篇文章中简单介绍了PhiloGL框架如何上手.GLSL语言以及简单的绘制一个方块(见PhiloGL学习(1)--场景创建及二维方块加载).本文很简单,我们一起来让这个方块动起来. 一. ...
- ps之雪碧图制作
图片拖入后 一般取同行同列最高最宽 自动在所选目录生成 打开: 修改 四次请求有点多啊. 打开 css sprite 自动生成坐标地址. 不过我们要把它排远一点 OK了. 我们生成以后: 坐标地址就可 ...
- vue 起步走 --“安装篇”
在说明之前,溶解得在这说一句 ,菜鸟开始安装这些东西真是不容易,各种疯狂的百度,搜索.(找的我眼泪都快流下来了),不说废话,开始正经. 第一步:环境的搭建 : vue推荐开发环境: Node.js: ...
- js 获取多少天前
getBeforeDate: function(day, str) { var now = new Date().getTime(); //获取毫秒数 var before = new Date(no ...
- 在Javaava中stringBuilder的用法
String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 ...
- Winsock网络编程笔记(2)----基于TCP的server和client
今天抽空看了一些简单的东西,主要是对服务器server和客户端client的简单实现. 面向连接的server和client,其工作流程如下图所示: 服务器和客户端将按照这个流程就行开发..(个人觉得 ...