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('密码:{},强度:{}\n'.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()

将判断密码的字符串的方法:规则1、规则2、规则3以及规则2使用的方法和规则3使用的方法都封装到一个PasswordTool中;

需要注意事项:

1、名的命名规范使用驼峰命名法

2、__init__(self)构造函数:self代表本身。构造函数需要def定义;

3、属性定义的变量,整个都可以调用;

 

 

http://www.niftyadmin.cn/n/648474.html

相关文章

iar升级芯片库_[IAR] 再论IAR ARM 4.42A工程配置

新建一个IAR工程&#xff0c;并将ST32固件库移植到了该工程中&#xff0c;此时如果直接Compile&#xff0c;会出现找不到头文件的情况。这在情理之中&#xff0c;因为&#xff0c;我们没设置源文件的头文件的寻找路径。此外&#xff0c;我们也没指定芯片的类型。这些工作就是配…

Python的学习笔记案例6--判断密码强度6.0

6.0 将文件相关的操作封装一个类 巩固面向对象编程&#xff0c;将涉及文件操作的方法定义一个文件工具类。 """作者&#xff1a;lanxingbudui版本&#xff1a;6.0日期&#xff1a;2019-08-03功能&#xff1a;判断密码强度2.0新增功能&#xff1a;限制密码验证次…

算法题 身高差_女子标准体重计算公式:三种算法都不达标,问题可能出在自己身上...

那些说女性外貌不重要的人&#xff0c;有多少是出自真心的呢?若非举世无双的才女&#xff0c;外貌从古至今都是衡量女性的一个标准。而体重一直以来是衡量女性外貌的关键&#xff0c;即便是在唐朝那个以肥为美的国度&#xff0c;杨贵妃的体重也不过就在100左右。毫无疑问&…

findindex遍历 js_JavaScript 中的遍历详解

对象遍历为了便于对象遍历的测试&#xff0c;我在下面定义了一个测试对象 obj。测试对象// 为 Object 设置三个自定义属性(可枚举)Object.prototype.userProp userProp;Object.prototype.getUserProp function() {return Object.prototype.userProp;};// 定义一个对象&#x…

Python的学习笔记案例7--模拟掷骰子1.0

通过计算机程序模拟投掷骰子&#xff0c;并显示个点数的出现次数级频率。 比如&#xff1a;投掷2个骰子50&#xff0c;出现点数为7的次数为8&#xff0c;频率为0.16 1.0功能&#xff1a;模拟投掷1个骰子&#xff0c;并输出其结果 random模块用于生成随机数&#xff1a; 常用…

maya多边形建模怎样做曲面_Maya多边形建模教程(四)

2.11 Soccer BallMaya中的足球是一个32面体&#xff0c;如下图所示。功能说明:用来创建多边形足球体。参数详解:单击Create>Polygon Primitives>Soccer Ball (创建>多边形基本几何体>足球体)打开选项窗口&#xff0c;如下图所示。◎Radius(半径)该值用来设置要创建…

linux的发现协议

今天只介绍个linux上的软件&#xff0c;便于今后的自动发现网络设备及所连接的端口&#xff0c;排障也很有用就是cdpr 直接yum 安装就ok 执行后结果如下&#xff1a;Device IDvalue: 3560_L4_em2_1.4Addressesvalue: 192.168.55.6Port IDvalue: GigabitEthernet0/17转载于:h…

Python的学习笔记案例7--模拟掷骰子2.0

本节课讲模拟投掷两次骰子求和 点数和为&#xff1a;2--12 使用字典记录点数对应的出现次数 zip()函数用于将对应的元素打包成一个个元组 注意&#xff1a;元组中的元素是不可修改的&#xff0c;如要修改需要转化成字典或者其他 dict(zip(list1,list2)) """作者…