@Robin_TY梁老师讲的第7讲,判断密码强弱的最后一节,关于文件工具类的操作,为什么我编的程序写入文件中的密码及强度,正确密码老是写入两次,不知道什么问题,还望梁老师指导。

class PasswordTool: """ 密码工具类 """ def __init__(self, password): # 类的属性 self.password = password self.strength_level = 0 def process_password(self): # 规则1:密码长度大于8 if len(self.password) >= 8: self.strength_level += 1 else: print('密码长度要求至少8位!') # 规则2 :密码包含数字 if self.check_number_exist(): self.strength_level += 1 else: print('密码要求包含数字!') # 规则3: 密码包含字母 if self.check_letter_exist(): self.strength_level += 1 else: print('密码要求包含字母!') # 类的方法 def check_number_exist(self): has_number = False for c in self.password: if c.isnumeric(): has_number = True break return has_number def check_letter_exist(self): has_letter = False for c in self.password: if c.isalpha(): has_letter = True return has_letter 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_time = 5 filepath = 'password_6.0.txt' while try_time > 0: password = input('请输入密码:') password_tool = PasswordTool(password) password_tool.process_password() # 实例化文件工具对象 file_tool = FileTool(filepath) line = '密码:{},强度:{}\n'.format(password, password_tool.strength_level) file_tool.write_to_file(line) # 判断强度是否为3 if password_tool.strength_level == 3: print('恭喜!密码设置合格!') break else: print('密码设置不合格!') try_time -= 1 # 写操作 file_tool.write_to_file(line) # 读操作 lines = file_tool.read_from_file() print(lines) if try_time <= 0: print('尝试次数过多,密码设置不成功!') if __name__ == '__main__': main()

Robin_TY - PhD@CSU,研究方向:计算机视觉,模式识别

赞同来自:

代码里有两行相同的代码,都是文件的写操作:file_tool.write_to_file(line) 根据情景适当删除一处就可以了。

要回复问题请先登录注册