字符串处理函数(⼆)python语⾔实现密码强度校验
编写代码注重两点能⼒的实现:
1、思维逻辑:思维逻辑有可以通过程序思维导图辅助实现,同时,我们也可以像下⾯代码中的新增功能注释⼀样,循序渐进的实现程序的功能;
2、细节完善:程序除了主要功能的实现外,添加⼀定的代码注释、功能说明、以及写作信息也是必需的。
下⾯是⼀个⽤Python实现的判断密码强度的⼩程序:
其中涉及到了⾃定义的字符串处理函数:
def check_letter_exist(self):
"""
判断字符串中是否有字母
:param password_str:
:return:
"""
has_letter = False
for d in self.password:
if d.isalpha():
has_letter = True
break
return has_letter
等,实现过程⽐较简单。
"""
作者:虞曦⾮虞兮
功能:判断密码强度
版本:V6.1
⽇期:2018/12/18
2.0新增功能:限制密码设置的次数;循环的终⽌
3.0新增功能:保存密码和强度到⽂件中
3.1新增功能:将密码强度由数字变成对应的中⽂解释。
4.0新增功能:读取⽂件中的密码
5.0新增功能:将相关⽅法封装成⼀个模块,⾯向对象编程
6.0新增功能:定义⼀个⽂件⼯具类
6.1新增功能:需要密码同时包含⼤⼩写和特殊符号
"""
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_letter_exist():
self.strength_level += 1
else:
print('密码必须包含字母')
# 规则4:包含⼤⼩写字母
if self.check_upper_and_lower_exit():
self.strength_level += 1
else:
print('密码必须同时包含⼤⼩写字母')
# 规则5:包含特殊字母
if self.check_specal_symbol_exit():
self.strength_level += 1
else:
print('密码必须同时包含特殊字符')
def check_number_exist(self):
"""
判断字符串中是否有数字
:param password_str:
:return:
"""
has_number = False
for c in self.password:
if c.isnumeric():
has_number = True
break
return has_number
def check_letter_exist(self):
"""
判断字符串中是否有字母
:param password_str:
:return:
"""
has_letter = False
for d in self.password:
if d.isalpha():
has_letter = True
break
return has_letter
def check_upper_and_lower_exit(self):
"""
判断是否同时有⼤⼩写字母
:return:
"""
has_upper_and_lower = False
has_upper = False
has_lower = False
for m in self.password:
if m.isupper() == True:
has_upper = True
continue
elif m.islower() == True:
has_lower = True
if has_upper == True:
break
else:
continue
else:
continue
if has_upper == True and has_lower == True:            has_upper_and_lower = True
return has_upper_and_lower
def check_specal_symbol_exit(self):
has_special_symbol_exit = False
special_char_list = ['*', '#', '+', '!', '@', '$', '^', '%'] for i in range(len(special_char_list)):
if self.password.find(special_char_list[i]):
has_special_symbol_exit = True
break
return has_special_symbol_exit
class FileTool:
"""
⽂件⼯具类
"""
def__init__(self, filepath):
self.filepath = filepath
def writ_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():
"""
主函数
:return:
"""
try_times = 5字符串函数模拟注册
file_path = 'password_'
#  实例化⽂件对象
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 = ad_from_file()
print(content)
if__name__ == '__main__':
main()

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。