Skip to content

Commit 9b7131c

Browse files
author
Alexey Chernykh
committed
fixed 13, 14 tasks
1 parent f4da86c commit 9b7131c

File tree

1 file changed

+39
-41
lines changed

1 file changed

+39
-41
lines changed

company_add_tasks.py

Lines changed: 39 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
17. Вывести всех сотрудников, за которых компания платит больше 100к налогов в год.
1616
18. Вывести имя и фамилию сотрудника, за которого компания платит меньше всего налогов.
1717
"""
18+
import operator
1819

1920
departments = [
2021
{
@@ -44,73 +45,70 @@
4445
]
4546

4647
# task 13. Вывести список отделов с суммарным налогом на сотрудников этого отдела.
47-
48-
def departments_salary(departments):
48+
def generating_departments_salaries(departments):
4949
departments_salary = {}
5050
for department in departments:
51-
salary_lst = []
51+
salary = []
5252
for employer in department["employers"]:
53-
salary_lst.append(employer["salary_rub"])
54-
departments_salary[department["title"]] = sum(salary_lst)
53+
salary.append(employer["salary_rub"])
54+
departments_salary[department["title"]] = sum(salary)
5555
return departments_salary
5656

5757

58-
def departments_tax_rate(taxes, departments):
58+
def get_departments_tax_rate(taxes, departments):
5959
taxes_for_department = {}
60-
6160
for tax in taxes:
62-
taxes_for_department[tax["department"]] = tax["value_percents"] / 100
63-
64-
taxes_for_department["All"] = taxes_for_department.pop(None)
61+
if tax["department"] != None:
62+
taxes_for_department[tax["department"]] = tax["value_percents"] / 100
63+
else:
64+
tax_for_all_departments = tax["value_percents"] / 100
6565

6666
department_taxes = {}
67-
departments_lst = [department["title"] for department in departments]
68-
69-
for department in departments_lst:
70-
dep_tax = []
71-
if True:
72-
dep_tax.append(taxes_for_department.get(department))
73-
dep_tax.append(taxes_for_department.get("All"))
74-
if None in dep_tax:
75-
dep_tax.remove(None)
76-
department_taxes[department] = sum(dep_tax)
67+
departments_title = [department["title"] for department in departments]
68+
tax_titles = [tax for tax in taxes_for_department]
69+
70+
for department in departments_title:
71+
tax = []
72+
if department in tax_titles:
73+
tax.append(taxes_for_department.get(department))
74+
tax.append(tax_for_all_departments)
75+
department_taxes[department] = sum(tax)
7776
else:
78-
dep_tax.append(tax_dict.get("All"))
79-
department_taxes[department] = sum(dep_tax)
77+
tax.append(tax_for_all_departments)
78+
department_taxes[department] = sum(tax)
8079
return department_taxes
8180

8281

83-
def department_tax_burden(departments_salary, department_taxes):
82+
def calculate_department_tax_burden(departments_salary, department_taxes):
83+
departments_tax_burden = {}
8484
for department in departments_salary:
8585
tax_burden = departments_salary.get(department) * department_taxes.get(department)
86-
print(f'По {department} суммарный налог на сотрудников равен {tax_burden}')
86+
departments_tax_burden[department] = tax_burden
8787

88+
for department, tax_burden in departments_tax_burden.items():
89+
print(f'По {department} суммарный налог на сотрудников равен {tax_burden}')
8890

89-
if __name__ == "__main__":
90-
dep_sal = departments_salary(departments)
91-
dep_tax = departments_tax_rate(taxes, departments)
92-
print(department_tax_burden(dep_sal, dep_tax))
9391

9492
# task 14. Вывести список всех сотрудников с указанием зарплаты "на руки" и зарплаты с учётом налогов.
95-
96-
tax_departments = {}
97-
for department in departments:
98-
for employer in department['employers']:
99-
if department["title"] == 'IT department':
100-
employer_tax = employer['salary_rub'] * (taxes[0]["value_percents"] + taxes[1]["value_percents"]) / 100
101-
salary_after_tax = employer['salary_rub'] - employer_tax
102-
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата после вычета налогов'
103-
f' {int(salary_after_tax)}')
104-
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата до вычета налогов'
105-
f' {employer["salary_rub"]}')
106-
else:
107-
employer_tax = employer['salary_rub'] * taxes[0]["value_percents"] / 100
93+
def calculate_employers_salaries(departments):
94+
tax_of_departments = get_departments_tax_rate(taxes, departments)
95+
for department in departments:
96+
for employer in department['employers']:
97+
employer_tax = employer['salary_rub'] * (tax_of_departments.get(department["title"])) / 100
10898
salary_after_tax = employer['salary_rub'] - employer_tax
10999
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата после вычета налогов'
110100
f' {int(salary_after_tax)}')
111101
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата до вычета налогов'
112102
f' {employer["salary_rub"]}')
113103

104+
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
110+
111+
114112
# task 16. Вывести список отделов, отсортированный по месячной налоговой нагрузке.
115113

116114
# task 17. Вывести всех сотрудников, за которых компания платит больше 100к налогов в год.

0 commit comments

Comments
 (0)