Python的听课笔记案例6--判别密码强度5.0
原创本课主要讲述将原来分散的方法封装成一个类,使其成为一个整体,便于调用。它是面向对象编程的思想。
1面向过程的编程和面向对象的编程之间的区别:
面向流程的(POP):以程序执行过程为设计过程的编程思想。
面向对象(OOP):以事物为中心的编程思想。
什么是客体(Object)?
真实世界中的对象:属性、行为
对象示例:
波斯猫,特征:品种、颜色、大小;
吉普,属性:类型,使用;
类(class)对某种类型的集合的描述
属性:类本身的一些特征。
方法:类可以实现的行为。
类的定义:
class ClassName
__init__(self)构造函数:初始化对象的属性。
self表示类的实例
将确定密码强度的方法封装到一个类中:
"""
作者:lanxingbudui
版本:5.0
日期:2019-08-03
功能:确定密码强度
2.0新功能:限制密码身份验证次数并终止周期
3.0新功能:将密码及其强度保存到文件中
4.0新功能:读取文件中的密码
5.0新增:定义password工具类
"""
class PasswordTool:
"""
加密工具类
"""
# 类的属性
def __init__(self, password):
self.password = password
self.strength_level = 0
# 类的方法
def process_string(self): # 处理字符串的方法。
# 规则1:密码长度较长8位
if len(self.password) >= 8:
self.strength_level += 1
else:
print(密码长度必须大于8位)
# 规则2:密码包含数字
if self.check_number_str():
self.strength_level += 1
else:
print(密码要求包括数字!)
# 规则3:密码包含字母
if self.check_letter_str():
self.strength_level += 1
else:
print(密码要求包括字母!)
def check_number_str(self):
"""
确定字符串是否包含数字。
"""
has_number = False
for c in self.password:
if c.isnumeric():
has_number = True
break
return has_number
def check_letter_str(self):
"""
确定字符串是否包含字母
"""
has_letter = False
for c in self.password:
if c.isalpha():
has_letter = True
break
return has_letter
def main():
"""
主函数
"""
try_times = 5
while try_times >= 0:
password = input(请输入密码:)
# 实例化密码工具对象。
password_tool = PasswordTool(password)
password_tool.process_string()
f = open(password_5.0.txt, a)
f.write(密码:{},强度:{}
.format(password, password_tool.strength_level)) f.close() if password_tool.strength_level == 3: print(祝贺你!密码强度合格!) break else: print(密码强度不合格!) try_times -= 1 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)
# line = f.readline()
# print(line)
# 3.readlines()
# lines = f.readlines()
# print(lines)
# print()
# for line in lines:
# print(read:{}.format(line))
#
# f.close()
if __name__ == __main__:
main()
将确定Password:规则的字符串的方法。1、规则2、规则3以及规则2使用的方法和规则3使用的方法被封装到一个类中。PasswordTool中;
注意事项:
1类名的命名规范使用驼峰命名法;
2、__init__(self)构造函数:self表示类本身。构造函数需要def定义;
3、类的属性定义变量,整个类都可以调用;
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123



