Skip to content
Open
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
0f1e138
basic_exercises part 1
Feb 20, 2023
1c8d7d0
basic_exercises fixed
Feb 22, 2023
88169bb
basic_exercises fixed_1
Feb 22, 2023
190192d
add string_challenges.py, for_challenges.py fixed
Feb 23, 2023
85ef5fb
add for_dict_challenges.py
Feb 25, 2023
c27c417
for_challenges.py, string_challenges.py fixed
Feb 25, 2023
dd92056
add task company.py solution
Feb 26, 2023
c63c919
add task company.py solution
Feb 26, 2023
b3ba249
company.py fixed, add additional tasks
Feb 27, 2023
867a711
fixed compane.py
Feb 28, 2023
991276a
fixed company.py, for_dict_challenges.py +last task
Mar 1, 2023
7ff8a37
fixed company.py
Mar 3, 2023
1a2b535
fixed for_dict_challenges.py, except for the 5 task
Mar 3, 2023
d7696ae
fixed company.py, for_dict_challenges.py
Mar 4, 2023
1a9d3bc
fixed for_challenges.py, string_challenges.py
Mar 4, 2023
2c3c060
correcting remarks code review company.py, for_dict_challenges.py
Mar 5, 2023
0563d48
add task 13, 14 company
Mar 6, 2023
f4da86c
correcting task 13, add functions
Mar 9, 2023
9b7131c
fixed 13, 14 tasks
Mar 11, 2023
0b79ba6
Исправил замечания, добавил решения задач 16,17,18
Mar 18, 2023
7598ae9
Решение 1 задачи в for_dict_challenges_bonus.py
Mar 18, 2023
fb5366d
исправление замечаний review
Mar 19, 2023
191c915
исправление замечаний, немного поменял алгоритм
Mar 19, 2023
3cc58b3
fixing the mistakes according to the comments
Mar 21, 2023
3aa9ea8
Решение 2 задачи \for_dict_challenges_bonus.py
Mar 27, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 39 additions & 41 deletions company_add_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
17. Вывести всех сотрудников, за которых компания платит больше 100к налогов в год.
18. Вывести имя и фамилию сотрудника, за которого компания платит меньше всего налогов.
"""
import operator

departments = [
{
Expand Down Expand Up @@ -44,73 +45,70 @@
]

# task 13. Вывести список отделов с суммарным налогом на сотрудников этого отдела.

def departments_salary(departments):
def generating_departments_salaries(departments):
departments_salary = {}
for department in departments:
salary_lst = []
salary = []

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По названию я ожидаю, что в этой переменной живёт зарплата, а это не так: в ней список зарплат :)

for employer in department["employers"]:
salary_lst.append(employer["salary_rub"])
departments_salary[department["title"]] = sum(salary_lst)
salary.append(employer["salary_rub"])
departments_salary[department["title"]] = sum(salary)
return departments_salary


def departments_tax_rate(taxes, departments):
def get_departments_tax_rate(taxes, departments):
taxes_for_department = {}

for tax in taxes:
taxes_for_department[tax["department"]] = tax["value_percents"] / 100

taxes_for_department["All"] = taxes_for_department.pop(None)
if tax["department"] != None:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

С None принято сравнивать не с помощью ==, а с помощью is

taxes_for_department[tax["department"]] = tax["value_percents"] / 100
else:
tax_for_all_departments = tax["value_percents"] / 100

department_taxes = {}
departments_lst = [department["title"] for department in departments]

for department in departments_lst:
dep_tax = []
if True:
dep_tax.append(taxes_for_department.get(department))
dep_tax.append(taxes_for_department.get("All"))
if None in dep_tax:
dep_tax.remove(None)
department_taxes[department] = sum(dep_tax)
departments_title = [department["title"] for department in departments]
tax_titles = [tax for tax in taxes_for_department]

for department in departments_title:
tax = []
if department in tax_titles:
tax.append(taxes_for_department.get(department))
tax.append(tax_for_all_departments)
department_taxes[department] = sum(tax)
else:
dep_tax.append(tax_dict.get("All"))
department_taxes[department] = sum(dep_tax)
tax.append(tax_for_all_departments)
department_taxes[department] = sum(tax)
return department_taxes


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

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

if __name__ == "__main__":
dep_sal = departments_salary(departments)
dep_tax = departments_tax_rate(taxes, departments)
print(department_tax_burden(dep_sal, dep_tax))

# task 14. Вывести список всех сотрудников с указанием зарплаты "на руки" и зарплаты с учётом налогов.

tax_departments = {}
for department in departments:
for employer in department['employers']:
if department["title"] == 'IT department':
employer_tax = employer['salary_rub'] * (taxes[0]["value_percents"] + taxes[1]["value_percents"]) / 100
salary_after_tax = employer['salary_rub'] - employer_tax
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата после вычета налогов'
f' {int(salary_after_tax)}')
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата до вычета налогов'
f' {employer["salary_rub"]}')
else:
employer_tax = employer['salary_rub'] * taxes[0]["value_percents"] / 100
def calculate_employers_salaries(departments):
tax_of_departments = get_departments_tax_rate(taxes, departments)
for department in departments:
for employer in department['employers']:
employer_tax = employer['salary_rub'] * (tax_of_departments.get(department["title"])) / 100

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут ты используешь get, но если в словаре ключа не будет, всё сломается. Используй квадратные скобки.

salary_after_tax = employer['salary_rub'] - employer_tax
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата после вычета налогов'
f' {int(salary_after_tax)}')
print(f'{employer["first_name"]} {employer["last_name"]}: зарплата до вычета налогов'
f' {employer["salary_rub"]}')


if __name__ == "__main__":
salaries_of_departments = generating_departments_salaries(departments)
tax_of_departments = get_departments_tax_rate(taxes, departments)
print(calculate_department_tax_burden(salaries_of_departments, tax_of_departments)) # 13
print(calculate_employers_salaries(departments)) # 14


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

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