'''
作者:Z_Howe01
版本:6.0
功能:类,面向对象编程,定义一个文件工具类
日期:2019/1/27
面向过程(POP):以程序执行过程为设计流程的编程思想
面向对象(OOP):以事物为中心的编程思想
对象 ——> 包括属性和行为
类(Class):某种类型集合的描述
属性:类本身的一些特性
方法:类所能实现的行为
class —> (实例化) objects
objects —> (抽象) class
类的定义
class ClassName
__init__(self)构造函数:初始化对象的各个属性
self 表示类的实例
封装:
将数据及相关操作打包在一起,支持代码重用
继承:
子类(subclass)借用父类(Superclass)的行为
多态:
在不同情况下用同一个函数启用不同方法
'''
class PasswordTool:
'''
密码工具类
'''
def __init__(self,password):
# 类的属性
self.password = password
self.strength_level = 0
def process_password(self):
# 规则一:密码长度不少于8位
if len(self.password) >= 8:
self.strength_level += 1
else:
print('密码要求长度不少于8位!')
# 规则二:密码中含有数字
if self.check_number_exist():
self.strength_level += 1
else:
print('密码要求含有数字!')
# 规则三:密码中含有字母
if self.check_letter_exist():
self.strength_level += 1
else:
print('密码要求含有字母!')
# 类的方法
# 在类里面定义一个参数或函数,我们一般要加一个self
def check_number_exist(self):
previous_value = False
for i in self.password:
if i.isnumeric():
previous_value = True
break
return previous_value
def check_letter_exist(self):
previous_value = False
for i in self.password:
if i.isalpha():
previous_value = True
break
return previous_value
class FileTool:
'''
文件工具箱
'''
def __init__(self, filepath):
self.filepath = filepath
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
def main():
'''
主函数
'''
try_times = 5
file_path = 'password_6.0.txt'
# 实例化文件工具类对象
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.write_to_file(line)
if password_tool.strength_level == 3:
print('恭喜!密码设置成功!')
break
else:
print('很抱歉,密码设置失败!')
try_times -= 1
if try_times <= 0:
print('很抱歉,您设置密码次数过多!')
# 读操作
lines = file_tool.read_from_file()
print(lines)
if __name__ == '__main__':
main()