python实现密码的强度_字符串处理函数(二)python语言实现密码强度校验
"""作者:虞曦非虞兮
功能:判断密码强度
版本:V6.1
日期:2018/12/18
2.0新增功能:限制密码设置的次数;循环的终止
3.0新增功能:保存密码和强度到文件中
3.1新增功能:将密码强度由数字变成对应的中文解释。
4.0新增功能:读取文件中的密码
5.0新增功能:将相关方法封装成一个模块,面向对象编程
6.0新增功能:定义一个文件工具类
6.1新增功能:需要密码同时包含大小写和特殊符号"""
classPasswordTool:"""密码工具类"""
#实例化函数
def __init__(self, password):
self.password=password
self.strength_level=0#类的方法
defprocess_password(self):#规则1:密码长度大于8
if len(self.password) > 8:
self.strength_level+= 1
else:print('密码长度必须大于8位。')#规则2:包含数字
ifself.check_number_exist():
self.strength_level+= 1
else:print('密码必须包含数字')#规则3:包含字母
ifself.check_letter_exist():
self.strength_level+= 1
else:print('密码必须包含字母')#规则4:包含大小写字母
ifself.check_upper_and_lower_exit():
self.strength_level+= 1
else:print('密码必须同时包含大小写字母')#规则5:包含特殊字母
ifself.check_specal_symbol_exit():
self.strength_level+= 1
else:print('密码必须同时包含特殊字符')defcheck_number_exist(self):"""判断字符串中是否有数字
:param password_str:
:return:"""has_number=Falsefor c inself.password:ifc.isnumeric():
has_number=Truebreak
returnhas_numberdefcheck_letter_exist(self):"""判断字符串中是否有字母
:param password_str:
:return:"""has_letter=Falsefor d inself.password:ifd.isalpha():
has_letter=Truebreak
returnhas_letterdefcheck_upper_and_lower_exit(self):"""判断是否同时有大小写字母
:return:"""has_upper_and_lower=False
has_upper=False
has_lower=Falsefor m inself.password:if m.isupper() ==True:
has_upper=Truecontinue
elif m.islower() ==True:
has_lower=Trueif has_upper ==True:break
else:continue
else:continue
if has_upper == True and has_lower ==True:
has_upper_and_lower=Truereturnhas_upper_and_lowerdefcheck_specal_symbol_exit(self):
has_special_symbol_exit=False
special_char_list= ['*', '#', '+', '!', '@', '$', '^', '%']for i inrange(len(special_char_list)):ifself.password.find(special_char_list[i]):
has_special_symbol_exit=Truebreak
returnhas_special_symbol_exitclassFileTool:"""文件工具类"""
def __init__(self, filepath):
self.filepath=filepathdefwrit_to_file(self, line):
f= open(self.filepath, 'a')
f.write(line)
f.close()defread_from_file(self):
f= open(self.filepath, 'r')
lines=f.readlines()
f.close()returnlinesdefmain():"""主函数
:return:"""try_times= 5file_path= 'password_6.0.txt'
#实例化文件对象
file_tool =FileTool(file_path)while try_times >0:
password= input('请输入密码:')#实例化密码工具对象
password_tool =PasswordTool(password)
password_tool.process_password()#写文件操作
line = '密码:{},强度:{}\n'.format(password, password_tool.strength_level)
file_tool.writ_to_file(line)if password_tool.strength_level == 5:print('恭喜,密码强度合格。')break
else:print('密码强度不合格。')
try_times-= 1
print()if try_times <=0:print('尝试次数过多,密码设置失败。')#读操作
content =file_tool.read_from_file()print(content)if __name__ == '__main__':
main()
python实现密码的强度_字符串处理函数(二)python语言实现密码强度校验相关推荐
- Python按照指定的分隔符拆分字符串split()函数
[小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python按照指定的分隔符拆分字符串 split()函数 ● 选择题 ...
- python 结构体数组 定义_一篇文章弄懂Python中所有数组数据类型
前言 数组类型是各种编程语言中基本的数组结构了,本文来盘点下Python中各种"数组"类型的实现. list tuple array.array str bytes bytearr ...
- python从基础到进阶_无需编程基础,Python从入门到进阶大法
deffactorial(n): ifn==0: return1 else: returnn * factorial(n-1) 13. 框架与栈调用 Python代码载入框架,框架位于栈中. 函数与参 ...
- python调用第三方软件发信代码_【IT专家】python调用第三方邮件接口
本文由我司收集整编,推荐下载,如有疑问,请与我司联系 python 调用第三方邮件接口 2017/08/10 1 单线程发送 #!/usr/bin/env python# -*- coding: UT ...
- python迭代器与生成器答案_史上最全 Python 迭代器与生成器
原标题:史上最全 Python 迭代器与生成器 作者:浪子燕青 链接:http://www.langzi.fun/迭代器与生成器.html 迭代器与可迭代对象 概念 迭代器:是访问数据集合内元素的一种 ...
- 零基础轻松学python pdf 小码哥_零基础轻松学Python
零基础轻松学Python电子书 Python之父Guido van Rossum力荐的Python门书.本书以通俗易懂的语言.好玩有趣的案例让读者轻轻松松.循序渐地从零始掌握Python 3 编程.本 ...
- python索引右往左_左手用R右手Python系列5——数据切片与索引
数据框索引: 基于数据框本身提取 subset函数 filter+select函数 Python: 数据框自身的方法 ix方法 loc方法 iloc方法 query方法 数据框自身的方法 ix方法 l ...
- python中流程图的基本元素_面试干货:成为Python程序员的终极指南!(内附回答)...
科技行业正以前所未有的速度增长.我们看到市场上发布了新的软件产品. 无论您是初学者还是经验丰富的Python开发人员,机会都是非常多的,如何把握?. 唯一的要求:必须在Python编程面试中使用您的技 ...
- python网络编程好学吗_年薪30万+的python编程难不难?好学吗?
首先先了解下派森?什么是Python? python翻译成中文就是蟒;蚺蛇的意思.在计算机专业里面Python是一门课程,专门学习计算机编程的课程,是一种跨平台的计算机程序设计语言.一种高级,热门的编 ...
最新文章
- 你不得不会的MarkDown--手把手教你掌握MarkDown
- 远程SSH连接服务与基本排错
- Fabric学习笔记-智能合约
- ‘FactorAnalyzer‘ object has no attribute ‘analyze‘和fa.loadings改成fa.loadings报错解决
- 技术情报局(笛卡尔树)
- haproxy对redis进行负载均衡
- linux无盘工作站互不干扰,Linux环境下无盘工作站的架设和实现二
- openstack 云_探索OpenStack云案例研究
- Tensorflow简单使用(一)
- java 1.7 32_java jdk 1.7 32位
- Docker的网络类型及驱动器
- visio中公式太小_多元醇羟值、羟基含量与分子量之间的关系及计算公式
- windows7 照片查看器无法打开图片, windows提示因为可用内存不足,但我的内存4G?
- win7登录密码破解
- java抽象类的继承_Java,如何从抽象类继承方法
- 罗杨美慧 20190912-2 命令行
- Linux粘滞位(粘着位)
- 大学计算机VB考试试题,大学计算机二级VB测试题
- 一些Java实用技巧(量变转变为质变后会单独整理出来)
- 被一个问题卡了近两天,下班后我哭了。。。