python solution.py

Валидация пароля на Python

Реализуйте password_issues, проверьте решение на трёх открытых примерах и один раз отправьте его на скрытые тесты.

  • ЯзыкPython
  • УровеньНачальный
  • НавыкСтроки и независимая проверка нескольких правил

Контекст

При смене пароля сервис показывает список того, что не так, а не просто «слабый пароль». Пустой список означает, что пароль прошёл проверку. Такой подход помогает пользователю исправить конкретные проблемы, а не угадывать требования.

Задача

Реализуйте функцию password_issues(password), которая возвращает список кодов проблем пароля. Если пароль удовлетворяет всем правилам — верните пустой список.

Правила

  1. Верните список кодов проблем В ФИКСИРОВАННОМ порядке проверок: ‘too_short’, ‘no_digit’, ‘no_upper’, ‘no_lower’.
  2. ‘too_short’ — если длина меньше 8.
  3. ‘no_digit’ — если нет ни одной цифры.
  4. ‘no_upper’ — если нет ни одной заглавной буквы.
  5. ‘no_lower’ — если нет ни одной строчной буквы.
  6. Если пароль удовлетворяет всем правилам — верните пустой список.
  7. Порядок кодов в списке всегда соответствует порядку правил выше.

Примеры

password_issues("Secret123")
# []

password_issues("short1A")
# ["too_short"]

password_issues("alllowercase")
# ["no_digit", "no_upper"]

Где это в системе

Коды из списка используются на фронте для показа подсказок рядом с полем пароля. Порядок кодов фиксирован, чтобы подсказки отображались в предсказуемом порядке независимо от того, какие именно правила нарушены.

Двигайтесь по одному шагу

Подсказка 1

Собирайте все найденные проблемы, а не возвращайтесь после первой проверки.

Подсказка 2

Для цифр, заглавных и строчных букв проверяйте отдельные символы строки.

Подсказка 3

Независимые правила удобнее записать отдельными if: цепочка elif пропустит часть ошибок.

Как проверять строку по нескольким правилам

Длину строки сравнивают через len(). Методы isdigit(), isupper() и islower() проверяют отдельный символ. Переберите строку и отметьте, встретился ли символ каждого нужного типа. Подробнее — перебор строки по символам.

Если нужно вернуть все нарушения, выполняйте проверки независимыми if в заданном порядке. Цепочка elif остановится на первой подходящей ветке и потеряет остальные ошибки. Сверьтесь с тем, как работают if, elif и else.

Не оставляйте задачу изолированной