Size: a a a

Сообщество Python Программистов

2021 May 03

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
страшненько
источник

A

Alexander in Сообщество Python Программистов
источник

E

Egor in Сообщество Python Программистов
Ага)
источник

A

Alexander in Сообщество Python Программистов
зато работает как надо)
источник

A

Alexander in Сообщество Python Программистов
так менее страшненько?)
источник

VA

Vadim Apenko in Сообщество Python Программистов
Структурно я бы вынес каждую конкретную проверку в отдельную функцию. С общим вызовом в одном месте тут в check_password. Так нагляднее можно поправить логику каждой проверки. Плюс запутаться сложнее, если проверок в будущем будет больше
источник

A

Alexander in Сообщество Python Программистов
ну, если задача топикстартера конечна - то это какой-то мастодонт получится)))))
источник

VA

Vadim Apenko in Сообщество Python Программистов
Примеры хорошего дизайна приложений будут прививаться сразу)
источник

A

Alexander in Сообщество Python Программистов
тогда надо писать класс Password и его методы-валидаторы. одно из свойств класса - difficulty должно быть заполнено общим валидатором прямо в конструкторе.
тогда использовать это как pwd = Password(pwd) .... print(pwd.difficulty)
источник

VA

Vadim Apenko in Сообщество Python Программистов
Это прям совсем хорошо было бы
источник

A

Alexander in Сообщество Python Программистов
class Password:

   def __init__(self, pwd: str):
       self.pwd = pwd
       self.MIN_LENGTH = 10
       self.SPECIAL_SIGNS = "!@#$%*"
       self.difficulty = "Easy peasy"
       self.validate()

   def __repr__(self):
       return self.pwd

   def check_password_has_upper_letter(self):
       return bool(set(self.pwd) & set(self.pwd.upper()))

   def check_password_has_special_sign(self):
       return bool(set(self.pwd) & set(self.SPECIAL_SIGNS))

   def check_password_has_integers(self):
       return bool(set(self.pwd) & set(range(10)))

   def check_password_length(self):
       return len(self.pwd) >= self.MIN_LENGTH

   def validate(self):
       if self.check_password_has_upper_letter() \
               and self.check_password_has_special_sign() \
               and self.check_password_has_integers() \
               and self.check_password_length():
           self.difficulty = "Perfect password"


if __name__ == "__main__":
   p1 = Password("password")
   print(p1, p1.difficulty)
   p2 = Password("Password")
   print(p2, p2.difficulty)
   p3 = Password("P@ssword")
   print(p3, p3.difficulty)
   p4 = Password("123P@sswordD987")
   print(p4, p4.difficulty)
источник

VA

Vadim Apenko in Сообщество Python Программистов
Неее, чекер должен быть отдельным классом, чтоб свои накручивать
источник

A

Alexander in Сообщество Python Программистов
эххх..... ладно, я понял) лень писать)))))
источник

VA

Vadim Apenko in Сообщество Python Программистов
А класс Password должен ожидать объект чекера, и вызывать в нём какие-то заложенные методы. А уже куда что там чекер делает, проверяет по сету, вызывает регулярку или лезет в базу чтоб посмотреть что юзер не использовал такой пароль раньше - не важно)
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
ебать загорелся
источник

VA

Vadim Apenko in Сообщество Python Программистов
Я тоже так иногда отлыниваю от работы)
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
так пока линяешь😀 работа сама себя не сделает
источник

VA

Vadim Apenko in Сообщество Python Программистов
Кто б сомневался)
источник

👑️

👑OGURCHIK🖤 ️ in Сообщество Python Программистов
так или иначе ее надо будет выполнить
источник

ВИ

Валерий Иванов... in Сообщество Python Программистов
очень хорошо
источник