zoukankan      html  css  js  c++  java
  • day01 项目

    项目名称:

      编写登陆接口

    项目需求:

        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 中运行。
     1 #!/usr/bin/env python3
     2 # Auth: Shen Yang
     3 import json
     4 import getpass
     5 
     6 vaild_user = {'yang': '123','lu': '321'}  #定义可以登陆的用户及密码
     7 black_list_file_path = "e://Python-study/black_list.db"  #定义黑名单路径
     8 
     9 try:  # 使用try 来判断文件是否存在,如果不存在说明是第一次运行或者没有被blok 的用户,初始化用户名及密码输入错误次数
    10     black_list_file = open(black_list_file_path,"r")  # 使用file 以读的方式打开文件
    11     black_list = json.load(black_list_file) #使用json 来载入文件存入的字典
    12     black_list_file.close()                 # 关闭文件
    13 except FileNotFoundError :
    14     black_list = {"lu": 0, "yang": 0}
    15 
    16 while True:  #循环执行输入名字
    17         input_user = input("please input your name: ")
    18         if input_user in vaild_user:   #判断输入的用户是否在可以登陆的名单里
    19                 if  black_list[input_user] == 3:  # 判断用户是否已经输错密码3次
    20                     print("User {_input_user} is locked !".format(_input_user=input_user))
    21                     break
    22                 input_passwd = getpass.getpass("please input your passwd: ")
    23                 if input_passwd == vaild_user[input_user]: #判断密码是否正确
    24                         print(28 * "+")
    25                         print("Welcome {_input_user} to your server!".format(_input_user=input_user))
    26                         print(28 * "+")
    27                         break
    28                 else:  # 密码不正确
    29                         print("Invalid passwd")
    30                         black_list[input_user] += 1      # 密码输入错误次数每次 + 1
    31                         if black_list[input_user] == 3:  # 如果密码错误次数等于3 ,输出锁定信息并修改密码错误次数为3,下次登陆会先判断此值
    32                                 print("User {_input_user} is locked !".format(_input_user=input_user))
    33                                 black_list_file = open(black_list_file_path,"w") # 使用file 以写的模式打开文件
    34                                 json.dump(black_list,black_list_file)       # 使用json 来把字典持久化到文件中
    35                                 black_list_file.close()                     # 关闭文件
    36                                 break
    37         else:         # 判断输入的用户不在定义里输出错误信息并退出
    38                 print("User {_input_user} is not allowd in our system! bayby...".format(_input_user=input_user))
    39                 break
  • 相关阅读:
    python lambda函数的用法
    python 中is 和 ==的区别
    Mongo 聚合函数 $group方法的使用
    mongo聚合
    当mongo数据库报错关于 Failed global initialization:
    python 中字符串的拼接
    python eval()用法报错 SyntaxError: unexpected EOF while parsing
    高性能MySQL(六):选择合适的存储引擎
    高性能MySQL(五):存储引擎
    高性能MySQL(四):多版本并发控制
  • 原文地址:https://www.cnblogs.com/yangever/p/5700673.html
Copyright © 2011-2022 走看看