# 1. Читает текстовый файл с данными (каждая строка: имя,отдел,зарплата,стаж). # Возвращает список словарей: [{"name": str, "dept": str, "salary": float, "exp": float}, ...]. from sys import exec_prefix def load_data(filepath: str) -> list[dict]: employees = [] filepath = "data/employees.txt" try: with open(filepath, "r", encoding="utf-8") as file: for line_number, line in enumerate(file, 1): # Чищу строку от пробелов по краям и скипаю пустые строки, а то хз кто там этот емплоес.тииксти писал line = line.strip() if not line: continue try: # делим строку по запятой parts = [p.strip() for p in line.split(",")] # зачем нейронки если всю эту строку мне пайчарм вставил после знака равно??? if len(parts) != 4: # ну вдруг там не 4 колонки print(f"Ошибка в строке {line_number}: надо 4 значения, а получил {len(parts)}.") continue employee = { "name": parts[0], "dept": parts[1], "salary": float(parts[2]), "exp": float(parts[3]) } employees.append(employee) except ValueError as e: print(f"Ошибка преобразования типов в строке {line_number}: {e}") except FileNotFoundError: print(f"Ошибка: Файл по адресу '{filepath}' не найден.") except Exception as e: print(f"Произошла непредвиденная ошибка: {e}") return employees # 2. Возвращает новый список, содержащий только сотрудников указанного отдела. def filter_by_department(employees: list[dict], department: str) -> list[dict]: pass # 3. Возвращает новый список с сотрудниками, чей стаж (exp) не меньше min_years. def filter_by_experience(employees: list[dict], min_years: float) -> list[dict]: pass # 4. Вычисляет среднюю зарплату по переданному списку сотрудников. Если список пуст, возвращает 0.0. def calculate_average_salary(employees: list[dict]) -> float: pass # 5. Возвращает словарь сотрудника с максимальной зарплатой. При пустом списке возвращает None. def find_highest_paid(employees: list[dict]) -> dict | None: pass # 6. Группирует сотрудников по отделам. Возвращает словарь, где ключ – название отдела, # значение – список сотрудников этого отдела. def group_by_department(employees: list[dict]) -> dict[str, list[dict]]: pass # 7. Увеличивает значение salary каждого сотрудника в переданном списке на bonus_percent процентов. # Изменяет исходные словари (модификация на месте). Функция ничего не возвращает. def add_bonus(employees: list[dict], bonus_percent: float) -> None: pass # 8. Принимает словарь одного сотрудника, возвращает отформатированную строку: # "Имя: {name}, Отдел: {dept}, Зарплата: {salary:.2f} руб., Стаж: {exp} лет". def format_employee_string(employee: dict) -> str: pass # 9. Возвращает новый список сотрудников, отсортированный по зарплате # (по возрастанию, если reverse=False, иначе по убыванию). def sort_by_salary(employees: list[dict], reverse: bool = False) -> list[dict]: pass # 10. Сохраняет в файл по пути filepath текстовый отчёт: # для каждого сотрудника – строка, полученная функцией format_employee_string(). # Если список пуст, записывает строку "Нет данных". def save_report(employees: list[dict], filepath: str) -> None: pass