项目名称:

编写登陆接口

项目需求:

    1 输入用户名密码
    2 认证成功后显示欢迎信息
    3 输错3次之后锁定,包括下次运行此程序也要锁定,涉及到持久化的问题只能用python 自带的文件输入输出接口 不能用系统级的接口
 
 
 
折腾了一天终于写出来了,主要是第三个需求中的持久化,我试了 file 的读写,还有pickle ,anydbm 发现都不成功,提示了很多报错,可能是我是小白的原因吧,最后我找到了json 这个官方的模块,使用了一下发现很不错,当然他也是在file 中操作的。
file 我是通过python 的官方手册里查找使用方法的,json 是通过百度得到的方法的。
python 的官方手册地址:https://docs.python.org/3/tutorial/index.html 这个以后要用到了,先标记一下。
 
下面是show code time :  # getpass 在Pychram 中有问题,请在真实python 环境中运行,例如可以保存到linux 中运行。
 #!/usr/bin/env python3
# Auth: Shen Yang
import json
import getpass vaild_user = {'yang': '','lu': ''} #定义可以登陆的用户及密码
black_list_file_path = "e://Python-study/black_list.db" #定义黑名单路径 try: # 使用try 来判断文件是否存在,如果不存在说明是第一次运行或者没有被blok 的用户,初始化用户名及密码输入错误次数
black_list_file = open(black_list_file_path,"r") # 使用file 以读的方式打开文件
black_list = json.load(black_list_file) #使用json 来载入文件存入的字典
black_list_file.close() # 关闭文件
except FileNotFoundError :
black_list = {"lu": 0, "yang": 0} while True: #循环执行输入名字
input_user = input("please input your name: ")
if input_user in vaild_user: #判断输入的用户是否在可以登陆的名单里
if black_list[input_user] == 3: # 判断用户是否已经输错密码3次
print("User {_input_user} is locked !".format(_input_user=input_user))
break
input_passwd = getpass.getpass("please input your passwd: ")
if input_passwd == vaild_user[input_user]: #判断密码是否正确
print(28 * "+")
print("Welcome {_input_user} to your server!".format(_input_user=input_user))
print(28 * "+")
break
else: # 密码不正确
print("Invalid passwd")
black_list[input_user] += 1 # 密码输入错误次数每次 + 1
if black_list[input_user] == 3: # 如果密码错误次数等于3 ,输出锁定信息并修改密码错误次数为3,下次登陆会先判断此值
print("User {_input_user} is locked !".format(_input_user=input_user))
black_list_file = open(black_list_file_path,"w") # 使用file 以写的模式打开文件
json.dump(black_list,black_list_file) # 使用json 来把字典持久化到文件中
black_list_file.close() # 关闭文件
break
else: # 判断输入的用户不在定义里输出错误信息并退出
print("User {_input_user} is not allowd in our system! bayby...".format(_input_user=input_user))
break

day01 项目的更多相关文章

  1. ZZJ_淘淘商城项目:day01(RESTful Web Service、SVN)

    淘淘商城项目是很适合初级Java程序员练习的实战项目,本次复习是另一位张老师教授的课,内容上与之前入老师版taotao商城比较有些新东西加了进来. 因此有必要记录下那些直到现在还可供参考的技术亮点分享 ...

  2. Spring Test+JUnit4整合使用测试ZZJ_淘淘商城项目:day01(RESTful Web Service)

    针对整合的Dao层与Service层,在做spring与通用Mapper和分页插件相关测试时比较麻烦.如果只用JUnit测试,需要每次Test方法里初始化一下applicationContext,效率 ...

  3. 阿里百秀后台管理项目笔记 ---- Day01

    摘要 在此记录一下阿里百秀项目的教学视频的学习笔记,部分页面被我修改了,某些页面效果会不一样,基本操作是一致的,好记性不如烂笔头,加油叭!!! step 1 : 整合全部静态页面 将静态页面全部拷贝到 ...

  4. SpringBoot的旅游项目——day01(学习记录附赠源码)

    前言 学完SpringBoot的项目,Github地址,欢迎start,一起学习! 第一天 一.技术选型 基于SpringBoot+VUE的前后端分离的仿照马蜂窝的项目. 后端选用的技术为: Spri ...

  5. vue大型电商项目尚品汇(前台篇)day01

    学完vue2还是决定先做一个比较经典,也比较大的项目来练练手好一点,vue3的知识不用那么着急,先把vue2用熟练了,vue3随时都能学. 这个项目确实很经典包含了登录注册.购物车电商网站该有的都有, ...

  6. vue大型电商项目尚品汇(后台篇)day01

    开始我们后台篇的内容,前面处理了一些事情,去学校完成授位仪式,由校长授位合影,青春不留遗憾,然后还换了一个电脑,征战了四年的神船终于退役了,各种各样的小毛病是真的烦人. 现在正式开始后台篇的内容,做了 ...

  7. 01 uniapp/微信小程序 项目day01

    一.起步 1.1 配置uni-app开发环境 什么是uni-app,就是基于vue的一个开发框架,可以将我们写的一套代码,同时发布到ios.安卓.小程序等多个平台 官方推荐使用Hbuilderx来写u ...

  8. 团队项目个人进展——Day01

    一.昨天工作总结 冲刺第一天,昨天阅读了小程序官方文档关于对视图层和逻辑层的介绍 二.遇到的问题 对小程序的样式文件——WXML里的标签不太理解,相比之下,html的标签更能让人接受 三.今日工作规划 ...

  9. 黑马tomcat学习day01 tomcat项目部署方式 1.webapps方式 2.Context元素方式

随机推荐

  1. JavaScript中var a=b=c=d的发现

    看了别人的博客随手记录下 先看一下以下的代码 var a=1,b=2,c=3; (function(){ var a=b=1; })(); console.log(a); console.log(b) ...

  2. Google Chrome 浏览器的备用(离线)安装程序

    Google Chrome 浏览器的备用(离线)安装程序(适用于 Windows) 如果您在使用 http://www.google.com/chrome 上的标准安装程序下载 Chrome 浏览器时 ...

  3. Servlet详解之两个init方法的作用

    在Servlet中 javax.servlet.GenericServlet类 继承自java.lang.Object 实现了Serializable,,servlet ,ServletConfig ...

  4. C# 简单创建和删除文件夹

    文章转自http://www.cnblogs.com/pegasus923/archive/2011/01/26/1944838.html C#中对文件夹操作需要用到Directory Class.其 ...

  5. JavaScript_5_对象

    1. JavaScrip中所有事物都是对象:字符串.数字.日期.等等 2. 在javaScripe中,对象是拥有属性和方法的数据 <!DOCTYPE html> <html> ...

  6. BZOJ 4563: [Haoi2016]放棋子

    Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 389  Solved: 248[Submit][Status][Discuss] Descriptio ...

  7. JSONPath - XPath for JSON

    http://goessner.net/articles/JsonPath/ [edit] [comment] [remove] |2007-02-21| e1 # JSONPath - XPath ...

  8. angular设置反向代理

    本地调试,需要用到服务器的api,发现chrome安全问题,需要解决跨域问题.现给出解决方案: 1.增加proxy.conf.json文件 位置与package.json文件同级(可指定) 2.pac ...

  9. iOS调用WebService接口

    首先有几点说在前面 一般,在请求URL的后面带有WSDL字样的需要调用WebService URL样式例子:http://ip:port/navigable/webservice/loginSeric ...

  10. linux关于软件安装和测试

    软件都是盘上的安装之前确保已挂载完毕 1.安装软件 rpm -ivh httpd-2*   2.修改配置文件 vi /etc/httpd/conf/httpd.conf listen 8888   3 ...