from string import digits, ascii_letters class Registration: def __init__(self, login, password) -> None: self.login = login self.password = password @property def login(self): return self.__login @login.setter def login(self, value: str): if not isinstance(value, str): raise TypeError if '@' not in value: raise ValueError if value.rfind('.') < value.rfind('@'): raise ValueError self.__login = value @staticmethod def is_include_digit(value: str): for i in value: if i in digits: return True return False @staticmethod def is_include_all_register(value: str): upper = False lower = False for i in value: if not lower: lower = i.islower() if not upper: upper = i.isupper() return lower and upper @staticmethod def is_include_only_latin(value: str): for i in value: if not i.isdigit(): if i not in ascii_letters: return False return True @staticmethod def check_password_dictionary(value: str): with open('easy_passwords.txt', 'r', encoding='utf-8') as f: password_list = f.read().split('\n') return value in password_list @property def password(self): return self.__password @password.setter def password(self, value: str): if not isinstance(value, str): raise TypeError("Пароль должен быть строкой") if len(value) < 5 or len(value) > 11: raise ValueError("Пароль должен быть длиннее 4 и меньше 12 символов") if not self.is_include_digit(value): raise ValueError("Пароль должен содержать хотя бы одну цифру") if not self.is_include_all_register(value): raise ValueError("Пароль должен содержать хотя бы один символ верхнего и нижнего регистра") if not self.is_include_only_latin(value): raise ValueError("Пароль должен содержать только латинский алфавит") if self.check_password_dictionary(value): raise ValueError("Ваш пароль содержится в списке самых легких") self.__password = value def check_password_dictionary(value: str): with open('easy_passwords.txt', 'r', encoding='utf-8') as f: password_list = f.read().split('\n') print(password_list) # password_list = open('easy_passwords.txt', 'r', encoding='utf-8').read().split('\n') return value in password_list def main(): # reg = Registration('asdfa@sfsdf.werwe', 'QwerTy123') # reg = Registration('asdfa@sfsdf.werwe', 'QwerTy123') # print(reg.login) # print(reg.password) # print(check_password_dictionary('124244242')) # print(check_password_dictionary('as1SNdf')) try: s2 = Registration("fga", "asd12") except ValueError as e: pass else: raise ValueError("Registration('fga', 'asd12') как можно записать такой логин?") try: s2 = Registration("fg@a", "asd12") except ValueError as e: pass else: raise ValueError("Registration('fg@a', 'asd12') как можно записать такой логин?") s2 = Registration("translate@gmail.com", "as1SNdf") try: s2.login = "asdsa12asd." except ValueError as e: pass else: raise ValueError("asdsa12asd как можно записать такой логин?") try: s2.login = "asdsa12@asd" except ValueError as e: pass else: raise ValueError("asdsa12@asd как можно записать такой логин?") assert Registration.check_password_dictionary('QwerTy123'), 'проверка на пароль в слове не работает' try: s2.password = "QwerTy123" except ValueError as e: pass else: raise ValueError("QwerTy123 хранится в словаре паролей, как его можно было сохранить?") try: s2.password = "KissasSAd1f" except ValueError as e: pass else: raise ValueError("KissasSAd1f хранится в словаре паролей, как его можно было сохранить?") try: s2.password = "124244242" except ValueError as e: pass else: raise ValueError("124244242 пароль НЕОЧЕНЬ, как его можно было сохранить?") try: s2.password = "RYIWUhjkdbfjfgdsffds" except ValueError as e: pass else: raise ValueError("RYIWUhjkdbfjfgdsffds пароль НЕОЧЕНЬ, как его можно было сохранить?") try: s2.password = "CaT" except ValueError as e: pass else: raise ValueError("CaT пароль НЕОЧЕНЬ, как его можно было сохранить?") try: s2.password = "monkey" except ValueError as e: pass else: raise ValueError("monkey пароль НЕОЧЕНЬ, как его можно было сохранить?") try: s2.password = "QwerTy123" except ValueError as e: pass else: raise ValueError("QwerTy123 пароль есть в слове, нельзя его использовать") try: s2.password = "HelloQEWq" except ValueError as e: pass else: raise ValueError("HelloQEWq пароль НЕОЧЕНЬ, как его можно было сохранить?") try: s2.password = [4, 32] except TypeError as e: pass else: raise TypeError("Пароль должен быть строкой") try: s2.password = 123456 except TypeError as e: pass else: raise TypeError("Пароль должен быть строкой") print('U r hacked Pentagon') if __name__ == '__main__': main()