【Python打卡2019】20190517之密码强度-面向对象编程2

0.任务描述

在上一次面向对象程序的基础上,增加功能为:封装文件相关的方法

1.程序与结果

上一次和这次的程序,其实体现的只是面向对象的封装特性;面向对象还有其他两个特性,继承和多态。

"""
    将文件操作封装到类中
    定义文件工具类
"""


class FileTool:
    """
        文件工具类
    """
    # 先定义构造函数,即初始化函数
    def __init__(self, file_path):  # self代表类本身的实例
        self.filePath = file_path

    # 写操作
    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


class PasswordTool:
    """
            密码工具类
        """

    # 初始化属性
    def __init__(self, password):  # self代表类本身的实例
        self.password = password
        self.strength_level = 0

    # 处理密码的方法
    def process_password(self):
        if self.has_number():  # 判断密码中是否存在数字,存在则评价加1
            self.strength_level += 1

        if self.has_letter():  # 判断密码中是否存在字母,存在则评级加1
            self.strength_level += 1

        if 8 <= len(self.password) <= 16:  # 如果密码长度符合要求则评级加1
            self.strength_level += 1

    # 判断密码当中是否存在数字
    def has_number(self):
        for c in self.password:
            if c.isnumeric():
                return True
        return False

    # 判断密码当中是否存在字母
    def has_letter(self):
        for c in self.password:
            if c.isalpha():
                return True
        return False


# 接收用户输入,并传入方法当中
def main():
    setting_times = 1
    file_path = 'PasswordRank.txt'
    file_tool = FileTool(file_path)
    while setting_times <= 3:
        pwd = input("请输入密码:")
        password_tool = PasswordTool(pwd)
        password_tool.process_password()
        stren_len = password_tool.strength_level
        line = "第{}次输入的密码为{},此密码的强度为{}\n".format(setting_times, pwd, stren_len)
        file_tool.write_to_file(line)
        setting_times += 1
    print("密码设置结束!设置记录如下:")
    lines = file_tool.read_from_file()
    print(lines)


if __name__ == '__main__':
    main()
Y:\Python\Anaconda\python.exe Y:/PythonWorkspace/PasswordReliablity/PasswordRank5.py
请输入密码:12345
请输入密码:yan66
请输入密码:yanhao666
密码设置结束!设置记录如下:
['第1次输入的密码为12345,此密码的强度为1\n', '第2次输入的密码为yan66,此密码的强度为2\n', '第3次输入的密码为yanhao666,此密码的强度为3\n']

Process finished with exit code 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值