JustCaptain kod-buduschego
0c215d6bd3ad548a5cf5fee4d168ffd04adaac92
Перейти к файлу
Код
kod-buduschego Python 2025-20263.5. Функция enumeratepracticeschatgpttask_6.py
anc update c70a58f 8 октября 2026 г.
task_6.py
"""
6. Почти реальная задача

Дан список пользователей:

Выведи номер пользователя (с 1) и имя только неактивных.

Ожидаемый вывод:

2 John
4 Mike
"""


class User:
    def __init__(self, name: str, active: bool) -> None:
        self.__name: str = name
        self.__active: bool = active

    def get_name(self) -> str:
        return self.__name

    def get_active(self) -> bool:
        return self.__active

    def __repr__(self) -> str:
        return "name: {} | active: {}".format(self.__name, self.__active)


class UserCollection:
    def __init__(self) -> None:
        self.__collection: list[User] = []

    def get_active(self, active: bool, start=0) -> list[tuple[int, str]]:
        collection: list[tuple[int, str]] = []

        for id, user in enumerate(self.__collection, start):
            if user.get_active() == active:
                collection.append((id, user.get_name()))
        return collection

    def get(self) -> list[User]:
        return self.__collection

    def add_user(self, name: str, active: bool) -> None:
        new_user: User = User(name=name, active=active)
        self.__collection.append(new_user)

    def add_users(self, users_list: list[dict[str, str | bool]]) -> None:
        for user_dict in users_list:
            if (
                user_dict.get("name")
                and isinstance(user_dict["name"], str)
                and user_dict.get("active") != None
                and isinstance(user_dict["active"], bool)
            ):
                new_user: User = User(
                    name=user_dict["name"], active=user_dict["active"]
                )
                self.__collection.append(new_user)


users_dict: list[dict[str, str | bool]] = [
    {"name": "Alex", "active": True},
    {"name": "John", "active": False},
    {"name": "Kate", "active": True},
    {"name": "Mike", "active": False},
]


"""
users: list[dict[str, str | bool]] = [
    {"name": "Alex", "active": True},
    {"name": "John", "active": False},
    {"name": "Kate", "active": True},
    {"name": "Mike", "active": False},
]


# BASE SOLUTION
def get_users(users: list[dict[str, str | bool]]) -> None:
    for id, user in enumerate(users, 1):
        if isinstance(user.get("active"), bool) and user["active"] == False:
            print(id, user["name"])
"""

if __name__ == "__main__":
    users = UserCollection()
    users.add_users(users_list=users_dict)
    result = users.get_active(active=False)
    print(users.get())
    print(result)

    # get_users(users=users, status=False)