Контекст
При смене пароля сервис показывает список того, что не так, а не просто «слабый пароль». Пустой список означает, что пароль прошёл проверку. Такой подход помогает пользователю исправить конкретные проблемы, а не угадывать требования.
Задача
Реализуйте функцию password_issues(password), которая возвращает список кодов проблем пароля. Если пароль удовлетворяет всем правилам — верните пустой список.
Правила
- Коды идут в фиксированном порядке проверок: ‘too_short’, ‘no_digit’, ‘no_upper’, ‘no_lower’.
- ‘too_short’ — если длина меньше 8 (пробелы тоже считаются).
- ‘no_digit’ — если нет ни одной цифры.
- ‘no_upper’ — если нет ни одной заглавной буквы.
- ‘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
Где это в системе
Коды из списка используются на фронте для показа подсказок рядом с полем пароля. Порядок кодов фиксирован, чтобы подсказки отображались в предсказуемом порядке независимо от того, какие именно правила нарушены.