Python练习-装饰器版-为什么我的用户总被锁定
参考代码如下:
1.用户登录程序流程控制代码:
# 编辑者:闫龙
if __name__ == '__main__':
import UserLoginFuncation
LoclCount=[];
while True:
UserName = input("用户名:>>")
if(UserLoginFuncation.CheckUserLock(UserName)):
print("用户",UserName,"已被锁定")
continue
PassWd = input("密 码:>>")
if(UserLoginFuncation.UserInfo(UserName,PassWd)):
print("欢迎",UserName,"登陆")
break
else:
LoclCount.append(UserName);
print("用户名或密码错误,您还有",3-LoclCount.count(UserName),"次尝试机会")
if(LoclCount.count(UserName) == 3):
UserLoginFuncation.LockUser(UserName)
print("对不起,尝试次数过多",UserName,"用户已被锁定")
用户登录程序流程控制代码(UserLogin.py)
2.用户登录程序调用函数(加入装饰器):
# 编辑者:闫龙
import UserLoginDeco
import os
@UserLoginDeco.Jude(2)
def CheckUserLock(UserName):
if(os.path.exists("LockUser")):
with open("LockUser","r",encoding="utf8") as ReadLock:
p = ReadLock.readline().split(",")
if(p.count(UserName) != 0):
return True
else:
return False @UserLoginDeco.Jude(3)
def LockUser(UserName):
if(os.path.exists("LockUser")):
LockFile = open("LockUser", "a", encoding="utf8")
LockFile.write(UserName+",")
LockFile.close()
else:
LockFile = open("LockUser", "w", encoding="utf8")
LockFile.write(UserName+",")
LockFile.close() @UserLoginDeco.Jude(1)
def UserInfo(UserName,PassWd):
with open("UserInfo",mode="r",encoding="utf8") as userinfo:
p = userinfo.readlines()
for i in p:
i= i.strip().split(":")
if(i[0] == UserName and i[1] == PassWd):
return True
else:
continue
return False
用户登录程序调用函数(加入装饰器)UserLoginFuncation.py
3.用户登录程序装饰器代码:
# 编辑者:闫龙
import time
def Jude(InputType):
def ViewUser(UserLoginFunc):
def PrintUser(*args):
if(InputType == 1):
while True:
print("您输入的用户名是",args[0],"密码是",args[1])
choice = input("请问是否继续登陆(y/n)")
if (choice.lower() == "y"):
res = UserLoginFunc(args[0],args[1])
return res
elif(choice.lower() == "n"):
break;
else:
print("您的选择有误")
continue
if(InputType == 2):
print("正在比对用户",args[0],"的信息......")
time.sleep(2)
res = UserLoginFunc(args[0])
return res
if(InputType == 3):
print("正在锁定",args[0],"用户")
time.sleep(2)
res = UserLoginFunc(args[0])
return res
return PrintUser
return ViewUser
用户登录程序装饰器代码(UserLoginDeco.py)
4.用户登录文件(UserInfo):
egon:123
alex:321
long:666
用户登录文件(UserInfo)
Python练习-装饰器版-为什么我的用户总被锁定的更多相关文章
- Python - Django - 装饰器版的登陆校验
urls.py: from django.conf.urls import url from app01 import views urlpatterns = [ url(r'^login/', vi ...
- 【转】【Python】装饰器
1.闭包 >>> def outer(): ... x = 1 ... def inner(): ... ... return inner >>> foo = ou ...
- Python中装饰器(转)
本文由 伯乐在线 - 7even 翻译,艾凌风 校稿.未经许可,禁止转载!英文出处:Simeon Franklin.欢迎加入翻译组. 好吧,我标题党了.作为 Python 教师,我发现理解装饰器是学生 ...
- Python的装饰器实例用法小结
这篇文章主要介绍了Python装饰器用法,结合实例形式总结分析了Python常用装饰器的概念.功能.使用方法及相关注意事项 一.装饰器是什么 python的装饰器本质上是一个Python函数,它可以让 ...
- 13.Python略有小成(装饰器,递归函数)
Python(装饰器,递归函数) 一.开放封闭原则 软件面世时,不可能把所有的功能都设计好,再未来的一两年功能会陆续上线,定期更新迭代,软件之前所用的源代码,函数里面的代码以及函数的调用方式一般不 ...
- python函数-装饰器
python函数-装饰器 1.装饰器的原则--开放封闭原则 开放:对于添加新功能是开放的 封闭:对于修改原功能是封闭的 2.装饰器的作用 在不更改原函数调用方式的前提下对原函数添加新功能 3.装饰器的 ...
- Python各式装饰器
Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义. 一.函数式装饰器:装饰器本身是一个函数. 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: ...
- Python札记 -- 装饰器补充
本随笔是对Python札记 -- 装饰器的一些补充. 使用装饰器的时候,被装饰函数的一些属性会丢失,比如如下代码: #!/usr/bin/env python def deco(func): def ...
- python基础——装饰器
python基础——装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数. >>> def now(): ... print('2015-3-25 ...
随机推荐
- Nmap用法实例
<给Linux系统/网络管理员的nmap的29个实用例子> https://linux.cn/article-2561-1.html
- office2013 激活方法
1.秘钥码激活 可以淘宝上买一个. 2.KMS激活软件激活 帖子地址 http://tieba.baidu.com/p/3855281630 Office 2013 Professional Plus ...
- [转帖] Oracle 关闭自动收集统计信息
--关闭自动统计信息 https://blog.csdn.net/royzhang7/article/details/51172556 明天再仔细看一下. select client_name,sta ...
- Code Blocks中配置OpenGL
使用的文件:我的CSDN资源共享 将glut.h文件放到MinGw\include\GL目录下面 将glut32.dll文件放到C:\windows\system32目录下面(如果是64位操作系统的话 ...
- window.location.hash 使用
[转]http://www.cnblogs.com/nifengs/p/5104763.html location是javascript里边管理地址栏的内置对象,比如location.href就管理页 ...
- Webpack简易入门教程
<!-- 其实网上关于webpack的教程已经很多了,但是本人在学习过程中发现很多教程有错误,或者写的很不全面,结果做的过程出现各种各样的问题,对新手不但不友好还会让人浪费很多不必要的时间.所以 ...
- 百度地图经纬度批量查找功能XGeocoding使用手册
<XGeocoding使用手册> 1.下载XGeocoding V2 http://www.gpsspg.com/xgeocoding/download/ 2.解压XGeocoding_v ...
- PHP 字符串数组按照拼音排序的问题
拼音排序的规则: 字符串包括特殊字符.数字.英文字符.中文字符等等,排序结果要求,特殊字符排在第一梯队,将其按照首个字符ascii码表进行排序,数字字符排在第二梯队,将首个字符数字按照数字大小排序,英 ...
- 点击--》java9 新特性 详解
引言: 点击-->java9 新特性 详解 点击-->java8 新特性 详解 正题: 1.局部变量var 将前端思想var关键字引入java后段,自动检测所属于类型,一种情况除外,不能为 ...
- 【Cf Edu #47 G】Allowed Letters
这个题大概就是每一个位置都有一个能填字符的限制(一个点集),给出已有的$n$个字符,问能填出的最小字典序的字符串. 总体思路是贪心,每一位尽量选最小的字符. 关键在于判断在某位选了一个字符后,接下来的 ...