From edf6bac3e498cc671e70f7c96818ec48aec212d3 Mon Sep 17 00:00:00 2001 From: teabag Date: Sat, 18 Apr 2026 09:51:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=20=D1=81=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B?= =?UTF-8?q?=D0=BC=D0=B8=20=D0=BE=20=D1=81=D0=BE=D1=82=D1=80=D1=83=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=B0=D1=85=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B8=20=D0=A1=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D1=8B?= =?UTF-8?q?=20=D1=81=D0=BA=D0=B5=D0=BB=D0=B5=D1=82=D1=8B=20=D1=84=D1=83?= =?UTF-8?q?=D0=BD=D0=BA=D1=86=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/employees.txt | 5 +++++ main.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 data/employees.txt diff --git a/data/employees.txt b/data/employees.txt new file mode 100644 index 0000000..f22ac83 --- /dev/null +++ b/data/employees.txt @@ -0,0 +1,5 @@ +Иванов, Sales, 50000, 3.5 +Петрова, IT, 75000, 6.0 +Сидоров, Sales, 62000, 2.0 +Козлова, HR, 48000, 4.0 +Смирнов, Sales, 70000, 7.0 \ No newline at end of file diff --git a/main.py b/main.py index e69de29..3342c3b 100644 --- a/main.py +++ b/main.py @@ -0,0 +1,46 @@ +# 1. Читает текстовый файл с данными (каждая строка: имя,отдел,зарплата,стаж). +# Возвращает список словарей: [{"name": str, "dept": str, "salary": float, "exp": float}, ...]. +def load_data(filepath: str) -> list[dict]: + pass + +# 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