Python的听课笔记案例6--判别密码强度5.0

原创
小哥 3年前 (2022-11-02) 阅读数 9 #大杂烩

本课主要讲述将原来分散的方法封装成一个类,使其成为一个整体,便于调用。它是面向对象编程的思想。
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、类的属性定义变量,整个类都可以调用;

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除