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的格式
随机推荐
- substance在java swing中使用注意事项
package org.dgw.uidemo; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.UI ...
- jquery入门知识点总结(转)
一.jquery的加载方法 $(document).ready(function(){js代码}); $(function(){js代码});(一般使用这个); 注意点1:使用jquery必须先导入函 ...
- css实现的交互运动
<style type="text/css"> .filter-mix { position: absolute; top: 50%; left: 50%; trans ...
- Matrices and Vectors
Matrices and Vectors Matrices are 2-dimensional arrays: A vector is a matrix with one column and man ...
- JS框架设计读书笔记之-核心模块
随笔记录一下读书心得 1. 框架模块-核心模块 该模块是框架最先执行的部分,jQuery与vue中都有初始化的代码. 模块的功能主要是:对象扩展.数组化.类型判定.事件绑定和解绑.无冲突处理.模块加载 ...
- TiDB 作为 MySQL Slave 实现实时数据同步
由于 TiDB 本身兼容绝大多数的 MySQL 语法,所以对于绝大多数业务来说,最安全的切换数据库方式就是将 TiDB 作为现有数据库的从库接在主 MySQL 库的后方,这样对业务方实现完全没有侵入性 ...
- C++ 设计模式 开放封闭原则 简单示例
C++ 设计模式 开放封闭原则 简单示例 开放封闭原则(Open Closed Principle)描述 符合开放封闭原则的模块都有两个主要特性: 1. 它们 "面向扩展开放(Open Fo ...
- 链表倒数第n个节点
找到单链表倒数第n个节点,保证链表中节点的最少数量为n. 样例 给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1. /** * Definiti ...
- Codeforces 376B. Coupons and Discounts
B. Coupons and Discounts time limit per test 1 second memory limit per test 256 megabytes input stan ...
- 1.Introduction 介绍
Welcome to Log4j 2! Introduction Almost every large application includes its own logging or tracing ...