项目名称:

编写登陆接口

项目需求:

    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. File类--System.out.print(Object obj)的理解

    一.File 类(java.io) 概述:Java中使用File类来表示文件或者文件夹对象!     抽象路径名:描述文件或文件夹时,使用的路径符号,就是一个对象的字符串表示形式,如"c:\ ...

  2. Ubuntu 配置IP地址方法

    接到一客户的服务器,开机已启动发现是Ubuntu系统,当时有点郁闷了,心想没有配置过ubuntu系统,这客户还在旁边了,心里有点紧张了,于是开始上网寻找各种方法配置,最终将IP配置好,给客户上架调试通 ...

  3. VMware虚拟机中red hat linux ping不通宿主物理主机原因

    在VMware Workstation中安装了red hat enterprise linux系统,网络使用“桥接”形式,最后出现在Windows下能够Ping通虚拟主机,而虚拟主机Ping不通Win ...

  4. 转载 - 浅析我曾遇到的几个便宜VPS服务器

    本文来自:http://www.jianshu.com/p/7d8cfa87fa32 有些时候可能并不是我们工作和业务的需要,但是网上就是这么的邪门,如果看到便宜的衣服不去购买深怕自己吃亏.所以每年的 ...

  5. mysql-新增、更新、删除语句

    1.插入数据: INSERT INTO t_book VALUES(NULL,'我爱我家',20,'张三',1); INSERT INTO t_book(id,bookName,price,autho ...

  6. js构造方法

    <!DOCTYPE html><html><head><meta charset="UTF-8"><title>Java ...

  7. 洛谷 P1345 [USACO5.4]奶牛的电信Telecowmunication

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  8. Android(java)学习笔记126:判断SD卡状态和SD卡容量

    1. 判断SD卡状态和SD卡存储空间大小 当我们在使用SD卡时候,如果我们想往SD卡里读写数据,我们必须在这之前进行一个逻辑判断,那就是判断SD卡状态和SD存储空间大小: 核心代码: String s ...

  9. Hybrid App开发之Html基本标签使用

    前言: 前面简单学习了html简单标签的使用,今天学习一下其他的标签的使用. HTML的超链接 1.)创建一个超链接 <div> <p> <a href="ht ...

  10. stm32F042 (二) 按键触发中断

    已经实现GPIO口输出高低电平控制LED,这里实现按键触发中断来改变LED闪亮的频率,因为PB3连着LED,所以PB3的输出模式没有改变,随意选一个GPIO口PA7接按键产生中断.因为nucleo开发 ...