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 ...
随机推荐
- 多校联赛7 1001 hdu 4666(最远哈曼顿距离+优先队列)
吐个糟,尼玛今天被虐成狗了,一题都没搞出来,这题搞了N久居然还是搞不出来,一直TLE,最后还是参考别人代码才领悟的,思路就这么简单, 就是不会转弯,看着模板却不会改,艹,真怀疑自己是不是个笨蛋题意:求 ...
- 013 BIO、NIO、AIO的区别
作者:nnngu GitHub:https://github.com/nnngu 博客园:http://www.cnblogs.com/nnngu 简书:https://www.jianshu.com ...
- DSU模板(树的启发式合并)
摘自Codeforces博客 With dsu on tree we can answer queries of this type: How many vertices in subtree of ...
- Android Room使用详解
使用Room将数据保存在本地数据库 Room提供了SQLite之上的一层抽象, 既允许流畅地访问数据库, 也充分利用了SQLite. 处理大量结构化数据的应用, 能从在本地持久化数据中极大受益. 最常 ...
- 【Learning】容斥原理
PPT在这里 https://files.cnblogs.com/files/RogerDTZ/%E5%AE%B9%E6%96%A5%E5%8E%9F%E7%90%86.pdf
- idea中Hibernate错误:无法解析表
idea中Hibernate错误:无法解析表 这种情况主要是在idea中使用hibernate自定义注解,idea无法检查数据源 this inspecton controls whether the ...
- CJOJ 2482 【POI2000】促销活动(STL优先队列,大根堆,小根堆)
CJOJ 2482 [POI2000]促销活动(STL优先队列,大根堆,小根堆) Description 促销活动遵守以下规则: 一个消费者 -- 想参加促销活动的消费者,在账单下记下他自己所付的费用 ...
- BZOJ 1391 [Ceoi2008]order
1391: [Ceoi2008]order Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完 ...
- Web前端之Javascript详解20180330
一.javascript概述 javascript是基于对象和事件的脚本语言. 特点: 1.安全性(不允许直接访问本地硬盘(因为是被远程的浏览器解释)),它可以做的就是信息的动态交互 2.跨平台性(只 ...
- python安装pip、numpy、scipy、statsmodels、pandas、matplotlib等
1.安装python 2.安装numpy(开源的数值计算扩展,可用来存储和处理大型矩阵,比Python自身的嵌套列表(nested list structure)结构要高效的多. 很多库都是以此库为依 ...