一、判断密码强弱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
主要知识点:
# -*- 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
主要知识点:
# -*- 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()