简介:1.在本地创建两个文件,一个文件的内容是存储用户名和密码,另一个的内容是存储锁定的用户

         2.登录次数限制为三次,当密码错误三次后,该账号锁定,无法再次登录

#coding=utf-8

user_info_list = []
#打开两个文件
with open('userinfo','rb') as userinfo_file,\
open('locketuser','rb') as locketuser_file:
all_userinfo_file = userinfo_file.read() #获取文件中的内容
all_userinfo_file_list = all_userinfo_file.splitlines() #把文件中的内容按行分割,放入列表中
for user_info_str in all_userinfo_file_list: #获取列表中的每个元素
user_info_tuple = tuple(user_info_str.split()) #把每个元素保存为一个数组
user_info_list.append(user_info_tuple) #把每个数组添加到一个列表中
user_info_dict = dict(user_info_list) #把列表转为一个字典 all_locketuser_file = locketuser_file.read()
user_locket_info_list = all_locketuser_file.splitlines()
with open('locketuser','ab') as locketuser_file:
while True:
user_login_flag = False #定义一个是否登录状态的,初始值未false
username_input=raw_input('请输入用户名:')
if username_input in user_locket_info_list: #先判断是否在黑名单中
print ("您已被加入黑名单,请重新输入。。。")
elif username_input in user_info_dict: #判断用户名是否在字典中
count = 3
while True:
pass_word = raw_input("请输入密码:")
if pass_word == user_info_dict.get(username_input): #通过字典,直接判断用户名和密码是否匹配
user_login_flag = True
print ("{0}登录成功,欢迎。。".format(username_input))
break #登录成功,跳出内层while循环
else:
count -= 1 #用户名和密码未匹配成功,可尝试登录次数-1
if count == 0: #可尝试登录次数为0,则退出
locketuser_file.write(username_input)
exit("{0}已被锁定".format(username_input))
print ("{0}密码错误,还剩{1}次机会。。".format(username_input,count)) #可尝试登录次数不为0,可继续尝试登录,给出剩余次数提示
if user_login_flag: #如果登录成功,则跳出外层while循环
break
else:
print ("\033[31m{0}\033[0m,此用户名不存在,请重新输入".format(username_input))

  

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. Python之登录接口

    要求 1.输入用户名密码2.认证成功后显示欢迎信息3.输错三次后锁定 思路 没有数据库,这里使用本地文件,一共需要两个文件:       黑名单的文件:黑名单里检测,不让登录     用户信息文件:将 ...

  5. 8.Python编写登录接口

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

  6. Python实现登录接口

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

  7. Python作业--登录接口

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

  8. python编写登录接口

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

  9. Python 编写登录接口

    流程图: 源码:

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

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

随机推荐

  1. white-space中 pre pre-line pre-wrap的区别

    css3为white-space新增了2个非常高冷的值:pre-line与pre-wrap. 现在我们来看一下它们与pre之间的区别呢? pre:会保留空格,但我想它与pre-line/pre-wra ...

  2. Mysql中各种与字符编码集(character_set)有关的变量含义

    mysql涉及到各种字符集,在此做一个总结. 字符集的设置是通过环境变量来设置的,环境变量和linux中的环境变量是一个意思.mysql的环境变量分为两种:session和global.session ...

  3. javascript遍历表

    定义表结构 1. 通过id遍历 <html> <body> <table id="tb" border="1"> <t ...

  4. sqlserver 限制用户只能访问指定的视图

    项目中有一个需求,要求给其它单位提供数据,我们用到了视图,并要求不能让他们看到数据库中的其它数据,我们为其创建了单独的账号,并只能看到指定视图 一.创建视图 CREATE VIEW [dbo].[v_ ...

  5. 亲测,很有效的忽略SSL证书方法

    1.在httpclient发起请求时,有时会出现下面这种情况 你的日志中出现有关SSL的异常,javax.net.ssl.SSLPeerUnverifiedException: peer not au ...

  6. Java日志框架解析及实战分析

    转载自: https://zhuanlan.zhihu.com/p/24272450 https://zhuanlan.zhihu.com/p/24275518 作为Java程序员,幸运的是,Java ...

  7. Spring注解之Controller中获取请求参数及验证使用

    1.处理request的uri部分的参数:@PathVariable. 2.处理request header部分的参数:@RequestHeader,@CookieValue@RequestHeade ...

  8. SQLAlchemy的使用---M2M增删改查

    from sqlalchemy.orm import sessionmaker from sqlalchemy_M2M import engine, Girls, Boys Session = ses ...

  9. Python爬虫之三种数据解析方式

    一.引入 二.回顾requests实现数据爬取的流程 指定url 基于requests模块发起请求 获取响应对象中的数据 进行持久化存储 其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需 ...

  10. C# winform 跨线程修改界面

    我们可以使用invoke和bengininvoke invoke同步执行一个委托 begininvoke异步执行一个委托