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


class WorkParticipant:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def display_info(self):
        return f"Имя: {self.name}, Возраст: {self.age}"



class Manager(WorkParticipant):
    def __init__(self, name, age, department):
        super().__init__(name, age)
        self.position = "Менеджер"
        self.department = department

    def display_info(self):
        base_info = super().display_info()
        return f"{base_info}, Должность: {self.position}, Отдел: {self.department}"



class Developer(WorkParticipant):
    def __init__(self, name, age, programming_language):
        super().__init__(name, age)
        self.position = "Разработчик"
        self.programming_language = programming_language

    def display_info(self):
        base_info = super().display_info()
        return f"{base_info}, Должность: {self.position}, Язык программирования: {self.programming_language}"


class Designer(WorkParticipant):
    def __init__(self, name, age, design_tool):
        super().__init__(name, age)
        self.position = "Дизайнер"
        self.design_tool = design_tool

    def display_info(self):
        base_info = super().display_info()
        return f"{base_info}, Должность: {self.position}, Инструмент: {self.design_tool}"



class WorkTeam:
    def __init__(self):
        self.members = []

    def add_member(self, participant):
        self.members.append(participant)
        print(f"Добавлен участник: {participant.display_info()}")

    def remove_member(self, name):
        for participant in self.members:
            if participant.name == name:
                self.members.remove(participant)
                print(f"Удален участник: {name}")
                return
        print(f"Участник с именем {name} не найден")

    def display_all_members(self):
        if not self.members:
            print("Команда пуста")
        else:
            print("\n=== Список всех участников команды ===")
            for i, member in enumerate(self.members, 1):
                print(f"{i}. {member.display_info()}")

    def get_average_age(self):
        if not self.members:
            return 0
        total_age = sum(member.age for member in self.members)
        average = total_age / len(self.members)
        print(f"\nСредний возраст команды: {average:.2f} лет")
        return average

    def filter_by_position(self, position):
        filtered = [member for member in self.members if member.position == position]
        if filtered:
            print(f"\n=== Участники с должностью '{position}' ===")
            for member in filtered:
                print(member.display_info())
        else:
            print(f"Участники с должностью '{position}' не найдены")



# Пример использования
if __name__ == "__main__":
    team = WorkTeam()

    # Создаём участников разных должностей
    manager1 = Manager("Анна", 32, "Маркетинг")
    developer1 = Developer("Борис", 28, "Python")
    designer1 = Designer("Виктория", 25, "Figma")
    developer2 = Developer("Дмитрий", 30, "JavaScript")
    manager2 = Manager("Елена", 35, "Продажи")

    # Добавляем участников в команду
    team.add_member(manager1)
    team.add_member(developer1)
    team.add_member(designer1)
    team.add_member(developer2)
    team.add_member(manager2)

    # Выводим полный список
    team.display_all_members()

    # Фильтруем по должностям
    team.filter_by_position("Разработчик")
    team.filter_by_position("Менеджер")

    # Средний возраст команды
    team.get_average_age()

    # Удаляем участника
    team.remove_member("Виктория")

    # Обновлённый список
    team.display_all_members()