Загрузка данных


import random
import string

MIN_PASSWORD_LENGTH = 9


def generate_password(length):
    chars = string.ascii_letters + string.digits

    while True:
        password = ''.join(random.choice(chars) for _ in range(length))

        if any(c.isupper() for c in password) and any(c.isdigit() for c in password):
            return password


def check_password(password):
    errors = []

    if len(password) < MIN_PASSWORD_LENGTH:
        errors.append(
            f"Длина должна быть не менее {MIN_PASSWORD_LENGTH} символов."
        )

    if not any(c.isupper() for c in password):
        errors.append("Нет заглавной буквы.")

    if not any(c.isdigit() for c in password):
        errors.append("Нет цифры.")

    invalid = [c for c in password if not c.isalnum()]
    if invalid:
        errors.append(
            "Есть недопустимые символы (разрешены только буквы и цифры)."
        )

    return errors


while True:
    print("\n=== Меню ===")
    print("1 - Сгенерировать пароль")
    print("2 - Проверить пароль")
    print("3 - Выход")

    choice = input("Выберите действие: ")

    if choice == "1":
        length = int(input("Введите длину пароля (не менее 9): "))

        if length < 9:
            print("Минимальная длина пароля — 9 символов.")
        else:
            print("Пароль:", generate_password(length))

    elif choice == "2":
        password = input("Введите пароль: ")

        errors = check_password(password)

        if errors:
            print("\nПароль не подходит:")
            for error in errors:
                print("-", error)
        else:
            print("\nПароль соответствует требованиям.")

    elif choice == "3":
        print("Программа завершена.")
        break

    else:
        print("Неверный выбор.")