Skip to content

Commit 0b79ba6

Browse files
author
Alexey Chernykh
committed
Исправил замечания, добавил решения задач 16,17,18
1 parent 9b7131c commit 0b79ba6

File tree

1 file changed

+50
-11
lines changed

1 file changed

+50
-11
lines changed

company_add_tasks.py

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,17 @@
4848
def generating_departments_salaries(departments):
4949
departments_salary = {}
5050
for department in departments:
51-
salary = []
51+
department_salaries = []
5252
for employer in department["employers"]:
53-
salary.append(employer["salary_rub"])
54-
departments_salary[department["title"]] = sum(salary)
53+
department_salaries.append(employer["salary_rub"])
54+
departments_salary[department["title"]] = sum(department_salaries)
5555
return departments_salary
5656

5757

5858
def get_departments_tax_rate(taxes, departments):
5959
taxes_for_department = {}
6060
for tax in taxes:
61-
if tax["department"] != None:
61+
if tax["department"] is not None:
6262
taxes_for_department[tax["department"]] = tax["value_percents"] / 100
6363
else:
6464
tax_for_all_departments = tax["value_percents"] / 100
@@ -94,23 +94,62 @@ def calculate_employers_salaries(departments):
9494
tax_of_departments = get_departments_tax_rate(taxes, departments)
9595
for department in departments:
9696
for employer in department['employers']:
97-
employer_tax = employer['salary_rub'] * (tax_of_departments.get(department["title"])) / 100
97+
employer_tax = employer['salary_rub'] * (tax_of_departments[department["title"]]) / 100
9898
salary_after_tax = employer['salary_rub'] - employer_tax
9999
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата после вычета налогов'
100100
f' {int(salary_after_tax)}')
101101
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата до вычета налогов'
102102
f' {employer["salary_rub"]}')
103103

104104

105-
if __name__ == "__main__":
106-
salaries_of_departments = generating_departments_salaries(departments)
107-
tax_of_departments = get_departments_tax_rate(taxes, departments)
108-
print(calculate_department_tax_burden(salaries_of_departments, tax_of_departments)) # 13
109-
print(calculate_employers_salaries(departments)) # 14
105+
# task 16. Вывести список отделов, отсортированный по месячной налоговой нагрузке.
106+
def output_departments_name_by_total_taxes(departments_salary, department_taxes):
107+
departments_total_taxes = {}
108+
for department in departments_salary:
109+
tax_burden = departments_salary.get(department) * department_taxes.get(department)
110+
departments_total_taxes[department] = tax_burden
110111

112+
sorted_departments_total_taxes = dict(sorted(departments_total_taxes.items(), key=lambda item: item[1],
113+
reverse=True))
114+
departments_names_by_total_taxes = [department_name for department_name in sorted_departments_total_taxes]
115+
for department_name in departments_names_by_total_taxes:
116+
print(department_name)
111117

112-
# task 16. Вывести список отделов, отсортированный по месячной налоговой нагрузке.
113118

114119
# task 17. Вывести всех сотрудников, за которых компания платит больше 100к налогов в год.
120+
def output_employers_over_option_tax(departments, option_sum_of_tax):
121+
tax_of_departments = get_departments_tax_rate(taxes, departments)
122+
for department in departments:
123+
for employer in department['employers']:
124+
employer_year_tax = employer['salary_rub'] * 12 * tax_of_departments[department["title"]]
125+
if employer_year_tax > option_sum_of_tax:
126+
print(f'За {employer["first_name"]} {employer["last_name"]} компания платит больше '
127+
f'{option_sum_of_tax//1000} тысяч налогов в год')
128+
115129

116130
# task 18. Вывести имя и фамилию сотрудника, за которого компания платит меньше всего налогов.
131+
def get_employer_with_max_tax(departments):
132+
tax_of_departments = get_departments_tax_rate(taxes, departments)
133+
employers_taxes_list = []
134+
for department in departments:
135+
for employer in department['employers']:
136+
employers_taxes = {}
137+
employer_year_tax = employer['salary_rub'] * 12 * tax_of_departments[department["title"]]
138+
employers_taxes["first_name"] = employer["first_name"]
139+
employers_taxes["last_name"] = employer["last_name"]
140+
employers_taxes["year_tax"] = employer_year_tax
141+
employers_taxes_list.append(employers_taxes)
142+
143+
sorted_list_of_employers_tax = sorted(employers_taxes_list, key=lambda x: x["year_tax"], reverse=True)
144+
145+
return sorted_list_of_employers_tax[0]["first_name"], sorted_list_of_employers_tax[0]["last_name"]
146+
147+
148+
if __name__ == "__main__":
149+
salaries_of_departments = generating_departments_salaries(departments)
150+
tax_of_departments = get_departments_tax_rate(taxes, departments)
151+
print(calculate_department_tax_burden(salaries_of_departments, tax_of_departments)) # 13
152+
print(calculate_employers_salaries(departments)) # 14
153+
print(output_departments_name_by_total_taxes(salaries_of_departments, tax_of_departments)) # 16
154+
print(output_employers_over_option_tax(departments, 100000)) # 17
155+
print(* get_employer_with_max_tax(departments)) # 18

0 commit comments

Comments
 (0)