"""作者:虞曦非虞兮

功能:判断密码强度

版本: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语言实现密码强度校验相关推荐

  1. Python按照指定的分隔符拆分字符串split()函数

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python按照指定的分隔符拆分字符串 split()函数 ● 选择题 ...

  2. python 结构体数组 定义_一篇文章弄懂Python中所有数组数据类型

    前言 数组类型是各种编程语言中基本的数组结构了,本文来盘点下Python中各种"数组"类型的实现. list tuple array.array str bytes bytearr ...

  3. python从基础到进阶_无需编程基础,Python从入门到进阶大法

    deffactorial(n): ifn==0: return1 else: returnn * factorial(n-1) 13. 框架与栈调用 Python代码载入框架,框架位于栈中. 函数与参 ...

  4. python调用第三方软件发信代码_【IT专家】python调用第三方邮件接口

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 python 调用第三方邮件接口 2017/08/10 1 单线程发送 #!/usr/bin/env python# -*- coding: UT ...

  5. python迭代器与生成器答案_史上最全 Python 迭代器与生成器

    原标题:史上最全 Python 迭代器与生成器 作者:浪子燕青 链接:http://www.langzi.fun/迭代器与生成器.html 迭代器与可迭代对象 概念 迭代器:是访问数据集合内元素的一种 ...

  6. 零基础轻松学python pdf 小码哥_零基础轻松学Python

    零基础轻松学Python电子书 Python之父Guido van Rossum力荐的Python门书.本书以通俗易懂的语言.好玩有趣的案例让读者轻轻松松.循序渐地从零始掌握Python 3 编程.本 ...

  7. python索引右往左_左手用R右手Python系列5——数据切片与索引

    数据框索引: 基于数据框本身提取 subset函数 filter+select函数 Python: 数据框自身的方法 ix方法 loc方法 iloc方法 query方法 数据框自身的方法 ix方法 l ...

  8. python中流程图的基本元素_面试干货:成为Python程序员的终极指南!(内附回答)...

    科技行业正以前所未有的速度增长.我们看到市场上发布了新的软件产品. 无论您是初学者还是经验丰富的Python开发人员,机会都是非常多的,如何把握?. 唯一的要求:必须在Python编程面试中使用您的技 ...

  9. python网络编程好学吗_年薪30万+的python编程难不难?好学吗?

    首先先了解下派森?什么是Python? python翻译成中文就是蟒;蚺蛇的意思.在计算机专业里面Python是一门课程,专门学习计算机编程的课程,是一种跨平台的计算机程序设计语言.一种高级,热门的编 ...

最新文章

  1. 你不得不会的MarkDown--手把手教你掌握MarkDown
  2. 远程SSH连接服务与基本排错
  3. Fabric学习笔记-智能合约
  4. ‘FactorAnalyzer‘ object has no attribute ‘analyze‘和fa.loadings改成fa.loadings报错解决
  5. 技术情报局(笛卡尔树)
  6. haproxy对redis进行负载均衡
  7. linux无盘工作站互不干扰,Linux环境下无盘工作站的架设和实现二
  8. openstack 云_探索OpenStack云案例研究
  9. Tensorflow简单使用(一)
  10. java 1.7 32_java jdk 1.7 32位
  11. Docker的网络类型及驱动器
  12. visio中公式太小_多元醇羟值、羟基含量与分子量之间的关系及计算公式
  13. windows7 照片查看器无法打开图片, windows提示因为可用内存不足,但我的内存4G?
  14. win7登录密码破解
  15. java抽象类的继承_Java,如何从抽象类继承方法
  16. 罗杨美慧 20190912-2 命令行
  17. Linux粘滞位(粘着位)
  18. 大学计算机VB考试试题,大学计算机二级VB测试题
  19. 一些Java实用技巧(量变转变为质变后会单独整理出来)
  20. 被一个问题卡了近两天,下班后我哭了。。。

热门文章

  1. 计算机网络-编码与调制
  2. Python高级特性:切片、迭代、列表生成式、生成器与迭代器
  3. 合唱队形(递增再递减的最长子序列)
  4. 线性回归正则化参数(公式)
  5. go 方法接受者 是指针类型和非指针类型的 区别
  6. Luck Club-SDT 去中心化的游戏
  7. 数据流模式、转换、格式与操作
  8. Bzoj2337:[HNOI2011]XOR和路径
  9. HDFS-Shell
  10. 初始Java DVD项目