Python入门案例(六):判断密码强弱

浏览: 1350

一、判断密码强弱V1.0

主要知识点:字符串,分支结构

# -*- coding:utf-8 -*-
"""
@author:Angel
@file:pwd_strength_V1.0.py
@time:2018/11/25 16:59
@1.0功能:判断密码强度
"""


def check_number_exist(password_str):
# 判断是否含有数字
for c in password_str:
if c.isnumeric():
return True
return False


def check_alpha_exist(password_str):
# 判断是否含有字母
for c in password_str:
if c.isalpha():
return True
return False


def main():
password = input('请输入密码:')

# 密码强度
strength_level = 0

# 判断密码强度
# 规则1:密码长度大于8
if len(password) >= 8:
strength_level += 1
else:
print('密码长度要求至少8位')

# 规则2:包含数字
if check_number_exist(password):
strength_level += 1
else:
print('密码必须包含数字')

# 规则3:包含字母
if check_alpha_exist(password):
strength_level += 1
else:
print('密码必须包含字母')

if strength_level == 3:
print('恭喜,密码强度合格!')
else:
print('抱歉,密码强度不合格!')


if __name__ == '__main__':
main()


二、判断密码强弱V2.0

主要知识点:

  • 循环的跳出操作:break(终止整个循环)和continue(只终止本次循环,而不终止整个循环的执行)
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:pwd_strength_V2.0.py
@time:2018/11/25 16:59
@1.0功能:判断密码强度
@2.0功能:限制密码设置次数;循环的终止
"""


def check_number_exist(password_str):
# 判断是否含有数字
has_number = False
for c in password_str:
if c.isnumeric():
has_number = True
break
return has_number


def check_alpha_exist(password_str):
# 判断是否含有字母
has_alpha = False
for c in password_str:
if c.isalpha():
has_alpha = True
break
return has_alpha


def main():

# 输入密码的次数限制
try_times = 5

while try_times > 0:
password = input('请输入密码:')

# 密码强度
strength_level = 0

# 判断密码强度
# 规则1:密码长度大于8
if len(password) >= 8:
strength_level += 1
else:
print('密码长度要求至少8位')

# 规则2:包含数字
if check_number_exist(password):
strength_level += 1
else:
print('密码必须包含数字')

# 规则3:包含字母
if check_alpha_exist(password):
strength_level += 1
else:
print('密码必须包含字母')

if strength_level == 3:
print('恭喜,密码强度合格!')
break
else:
print('抱歉,密码强度不合格!')
try_times -= 1
print()
print('****************************************************')

if try_times <= 0:
print('尝试次数过多,密码设置失败!')


if __name__ == '__main__':
main()


三、判断密码强弱V3.0

主要知识点:

  • 文件操作:写操作,从计算机内存向文件写入数据
  • write():将文本数据写入文件中
  • writelines():将字符串列表写入文件中
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:pwd_strength_V3.0.py
@time:2018/11/25 16:59
@1.0功能:判断密码强度
@2.0功能:限制密码设置次数;循环的终止
@3.0功能:保存设置的密码及其对应的强度到文件中
"""


def check_number_exist(password_str):
# 判断是否含有数字
has_number = False
for c in password_str:
if c.isnumeric():
has_number = True
break
return has_number


def check_alpha_exist(password_str):
# 判断是否含有字母
has_alpha = False
for c in password_str:
if c.isalpha():
has_alpha = True
break
return has_alpha


def main():

# 输入密码的次数限制
try_times = 5

while try_times > 0:
password = input('请输入密码:')

# 密码强度
strength_level = 0

# 判断密码强度
# 规则1:密码长度大于8
if len(password) >= 8:
strength_level += 1
else:
print('密码长度要求至少8位')

# 规则2:包含数字
if check_number_exist(password):
strength_level += 1
else:
print('密码必须包含数字')

# 规则3:包含字母
if check_alpha_exist(password):
strength_level += 1
else:
print('密码必须包含字母')

# 写入文件,保存
f = open('password_3.0.txt', 'a')
f.write('密码:{},强度:{}\n'.format(password, strength_level))
f.close()

if strength_level == 3:
print('恭喜,密码强度合格!')
break
else:
print('抱歉,密码强度不合格!')
try_times -= 1
print()
print('****************************************************')

if try_times <= 0:
print('尝试次数过多,密码设置失败!')


if __name__ == '__main__':
main()


四、判断密码强弱V4.0

主要知识点:

  • 文件操作:读操作,从文件中读取数据到计算机内存中
  • read():返回值为包含整个文件内容的一个字符串
  • readline():返回值为文件下一行内容的字符串
  • readlines():返回值为整个文件内容的列表,每项是以换行符为结尾的一行字符串
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:pwd_strength_V4.0.py
@time:2018/11/25 16:59
@1.0功能:判断密码强度
@2.0功能:限制密码设置次数;循环的终止
@3.0功能:保存设置的密码及其对应的强度到文件中
@4.0功能:读取保存的密码
"""


def check_number_exist(password_str):
# 判断是否含有数字
has_number = False
for c in password_str:
if c.isnumeric():
has_number = True
break
return has_number


def check_alpha_exist(password_str):
# 判断是否含有字母
has_alpha = False
for c in password_str:
if c.isalpha():
has_alpha = True
break
return has_alpha


def main():

# # 输入密码的次数限制
# try_times = 5
#
# while try_times > 0:
# password = input('请输入密码:')
#
# # 密码强度
# strength_level = 0
#
# # 判断密码强度
# # 规则1:密码长度大于8
# if len(password) >= 8:
# strength_level += 1
# else:
# print('密码长度要求至少8位')
#
# # 规则2:包含数字
# if check_number_exist(password):
# strength_level += 1
# else:
# print('密码必须包含数字')
#
# # 规则3:包含字母
# if check_alpha_exist(password):
# strength_level += 1
# else:
# print('密码必须包含字母')
#
# # 写入文件,保存
# f = open('password_3.0.txt', 'a')
# f.write('密码:{},强度:{}\n'.format(password, strength_level))
# f.close()
#
# if strength_level == 3:
# print('恭喜,密码强度合格!')
# break
# else:
# print('抱歉,密码强度不合格!')
# try_times -= 1
# print()
# print('****************************************************')
#
# if try_times <= 0:
# print('尝试次数过多,密码设置失败!')

# 读取文件
f = open('password_3.0.txt', 'r')

# 1、read()
content = f.read()
print(content)

# 2、readline()
line = f.readline()
print(line)

# 3、readlines()
lines = f.readlines()
print(lines)
# 文件的遍历
for line in lines:
print('read:{}'.format(line))

f.close()


if __name__ == '__main__':
main()


五、判断密码强弱V5.0

主要知识点:

  • 面向对象编程
  • 类(class):某种类型集合的描述
  • 属性:类本身的一些特性
  • 方法:类所能实现的行为
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:pwd_strength_V5.0.py
@time:2018/11/25 16:59
@1.0功能:判断密码强度
@2.0功能:限制密码设置次数;循环的终止
@3.0功能:保存设置的密码及其对应的强度到文件中
@4.0功能:读取保存的密码
@5.0功能:将相关的方法封装成一个整体:面向对象编程
"""


class PasswordTool:
# 密码工具类
def __init__(self, password):
# 类的属性
self.password = password
self.strength_level = 0

def process_password(self):
# 判断密码强度
# 规则1:密码长度大于8
if len(self.password) >= 8:
self.strength_level += 1
else:
print('密码长度要求至少8位')

# 规则2:包含数字
if self.check_number_exist():
self.strength_level += 1
else:
print('密码必须包含数字')

# 规则3:包含字母
if self.check_alpha_exist():
self.strength_level += 1
else:
print('密码必须包含字母')

# 类的方法
def check_number_exist(self):
# 判断是否含有数字
has_number = False
for c in self.password:
if c.isnumeric():
has_number = True
break
return has_number

def check_alpha_exist(self):
# 判断是否含有字母
has_alpha = False
for c in self.password:
if c.isalpha():
has_alpha = True
break
return has_alpha


def main():

# 输入密码的次数限制
try_times = 5

while try_times > 0:
password = input('请输入密码:')

# 实例化密码工具对象
password_tool = PasswordTool(password)
password_tool.process_password()

# 写入文件,保存
f = open('password_3.0.txt', 'a')
f.write('密码:{},强度:{}\n'.format(password, password_tool.strength_level))
f.close()

if password_tool.strength_level == 3:
print('恭喜,密码强度合格!')
break
else:
print('抱歉,密码强度不合格!')
try_times -= 1
print()
print('****************************************************')

if try_times <= 0:
print('尝试次数过多,密码设置失败!')


if __name__ == '__main__':
main()


六、判断密码强弱V6.0

主要知识点:

  • 面向对象编程的特点:封装、继承、多态
  • 封装:将数据及相关操作打包在一起,支持代码复用
  • 继承:子类借用父类的行为,避免重复操作,提升代码复用程度
  • 多态:在不同情况下用一个函数名启用不同的方法,灵活性
# -*- coding:utf-8 -*-
"""
@author:Angel
@file:pwd_strength_V6.0.py
@time:2018/11/25 16:59
@1.0功能:判断密码强度
@2.0功能:限制密码设置次数;循环的终止
@3.0功能:保存设置的密码及其对应的强度到文件中
@4.0功能:读取保存的密码
@5.0功能:将相关的方法封装成一个整体:面向对象编程
@6.0功能:定义一个文件工具类
"""


class PasswordTool:
# 密码工具类
def __init__(self, password):
# 类的属性
self.password = password
self.strength_level = 0

def process_password(self):
# 判断密码强度
# 规则1:密码长度大于8
if len(self.password) >= 8:
self.strength_level += 1
else:
print('密码长度要求至少8位')

# 规则2:包含数字
if self.check_number_exist():
self.strength_level += 1
else:
print('密码必须包含数字')

# 规则3:包含字母
if self.check_alpha_exist():
self.strength_level += 1
else:
print('密码必须包含字母')

# 类的方法
def check_number_exist(self):
# 判断是否含有数字
has_number = False
for c in self.password:
if c.isnumeric():
has_number = True
break
return has_number

def check_alpha_exist(self):
# 判断是否含有字母
has_alpha = False
for c in self.password:
if c.isalpha():
has_alpha = True
break
return has_alpha


class FileTool:
# 文件工具类
def __init__(self, filepath):
self.filepath = filepath

def write_to_file(self, line):
f = open(self.filepath, 'a')
f.write(line)
f.close()

def read_from_file(self):
f = open(self.filepath, 'r')
lines = f.readlines()
f.close()
return lines


def main():

# 输入密码的次数限制
try_times = 5

filepath = 'password_6.0.txt'
# 实例化文件工具对象
file_tool = FileTool(filepath)

while try_times > 0:
password = input('请输入密码:')

# 实例化密码工具对象
password_tool = PasswordTool(password)
password_tool.process_password()

# 写操作
line = '密码:{},强度:{}\n'.format(password, password_tool.strength_level)
file_tool.write_to_file(line)

if password_tool.strength_level == 3:
print('恭喜,密码强度合格!')
break
else:
print('抱歉,密码强度不合格!')
try_times -= 1
print()
print('****************************************************')

if try_times <= 0:
print('尝试次数过多,密码设置失败!')

# 读操作
lines = file_tool.read_from_file()
print(lines)


if __name__ == '__main__':
main()
推荐 1
本文由 花花_Angel 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

这种复习知识点的方法很好
恩,学习中,复习和巩固

要回复文章请先登录注册