作业需求:

编写登陆接口

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

实现思路:

1.从文件获取用户名密码

2.判断是否在黑名单中

3.验证用户名密码

成功:输出认证成功

错误:判断验证次数,超过3次写入黑名单

userinfo.txt文件格式

{"name":"alex","password":"abc123"}
{"name":"songkunhuang","password":"abc123"}
 # -*- coding: utf-8 -*-
"""
Created on 10:32 2017/7/27
@author: Song
@E-mail: songkunhuang@163.com """
# 输入用户名密码 验证信息从文件读取
# 认证成功显示欢迎信息
# 输错三次,锁定用户 保存到文件 黑名单 # 解析用户文件 json eval
userinfo_file = open("userinfo.txt","r")
user_list = []
for user in userinfo_file.readlines():
user = user.replace("\n", "")
user_list.append(eval(user)) # 读取黑名单
blackuserlist_file = open("blackuserlist.txt","w+")
black_list = []
for blackuser in blackuserlist_file:
blackuser = blackuser.replace("\n", "")
black_list.append(blackuser) def sucess(name):
print("welcome",name)
exit() count = 3
flag = 0
while count > 0:
username_input = input("Username:")
password_input = input("Password:")
if username_input in black_list:
print("账户已经被锁定")
else:
for i in user_list:
if username_input == i.get("name") and password_input == i.get("password"):
flag = 1
print("认证成功")
sucess(name=username_input)
break if flag == 0:
count = count - 1
if count > 0:
print("认证失败,你还可以尝试 %d 次" % count)
else:
for i in user_list:
if username_input == i.get("name"):
blackuserlist_file.write("".join([username_input, "\n"]))
print("%s 账户已经锁定" % username_input)
print("无法尝试") userinfo_file.close()
blackuserlist_file.close()

最新文章

  1. Lamda表达式多个字段排序问题 ThenBy、ThenByDescending
  2. 可跨域的单点登录(SSO)实现方案【附.net代码】
  3. 解决Python中不能输入汉字的问题
  4. wifi的country code
  5. 全站HTTPs,没那么简单
  6. 一个简单的网页布局HTML+CSS
  7. ES6新特性(函数默认参数,箭头函数)
  8. Silverlight项目笔记4:初识Prism以及IoC
  9. MongoDB库设计原则及实践
  10. C# 特性参数(注解属性加在参数前面)
  11. 使用TensorFlow创建第变量定义和运行方式
  12. Ubuntu问题:E45: 'readonly' option is set (add ! to override)错误解决
  13. linux下设置默认路径
  14. Java SE之反射技术[Field](二)
  15. 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)C - Cactus Jubilee
  16. CentOS安装openvpn报错:error: route utility is required but missing
  17. Linux必备知识
  18. MVC文件上传03-使用Request.Files上传多个文件
  19. C# 的三种序列化方法
  20. 如何处理服务器SSL收到了一个弱临时Diffie-Hellman 密钥?

热门文章

  1. 【JavaScript 封装库】BETA 2.0 测试版发布!
  2. HDU(1754),线段树,单点替换,区间最值
  3. 动态数组第k小,Poj(1442)
  4. caffe RandomBrightness和RandomContrast
  5. ioc 的好文章 转自 GavinJun
  6. java读取pfx或P12格式的个人交换库公私钥
  7. 设置禁止网络连接后,jdbc如何连接到数据库
  8. Go标准库学习之OS常用函数
  9. 1801: [Ahoi2009]chess 中国象棋
  10. Java分享笔记:使用缓冲流复制文件