// практика без регистрации

Валидация пароля на 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’ — если нет ни одной строчной буквы.

Примеры

password_issues("Secret123")
# []

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

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

password_issues("Abcdefg1")
# []  — ровно 8 символов уже не too_short

password_issues("ABCDEFG1")
# ["no_lower"]

password_issues("")
# ["too_short", "no_digit", "no_upper", "no_lower"]

password_issues(" Pass12 ")
# []  — пробелы по краям тоже символы: длина 8

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

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

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

Подсказка 1

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

Подсказка 2

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

Подсказка 3

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

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

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

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

Продолжите практику