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
87 changes: 87 additions & 0 deletions company_add_tasks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
"""
В этот раз у нас есть компания, в ней отделы, в отделах люди. У людей есть имя, должность и зарплата.
Ваши задачи такие:

Третий уровень:
Теперь вам пригодится ещё список taxes, в котором хранится информация о налогах на сотрудников из разных департаметов.
Если department None, значит, этот налог применяется ко всем сотрудникам компании.
Иначе он применяется только к сотрудникам департмента, название которого совпадает с тем, что записано по ключу department.
К одному сотруднику может применяться несколько налогов.

13. Вывести список отделов с суммарным налогом на сотрудников этого отдела.
14. Вывести список всех сотредников с указанием зарплаты "на руки" и зарплаты с учётом налогов.
15. Вывести список отделов с указанием месячной налоговой нагрузки – количеством денег, которые в месяц этот отдел платит налогами.
16. Вывести список отделов, отсортированный по месячной налоговой нагрузке.
17. Вывести всех сотрудников, за которых компания платит больше 100к налогов в год.
18. Вывести имя и фамилию сотрудника, за которого компания платит меньше всего налогов.
"""

departments = [
{
"title": "HR department",
"employers": [
{"first_name": "Daniel", "last_name": "Berger", "position": "Junior HR", "salary_rub": 50000},
{"first_name": "Michelle", "last_name": "Frey", "position": "Middle HR", "salary_rub": 75000},
{"first_name": "Kevin", "last_name": "Jimenez", "position": "Middle HR", "salary_rub": 70000},
{"first_name": "Nicole", "last_name": "Riley", "position": "HRD", "salary_rub": 120000},
]
},
{
"title": "IT department",
"employers": [
{"first_name": "Christina", "last_name": "Walker", "position": "Python dev", "salary_rub": 80000},
{"first_name": "Michelle", "last_name": "Gilbert", "position": "JS dev", "salary_rub": 85000},
{"first_name": "Caitlin", "last_name": "Bradley", "position": "Teamlead", "salary_rub": 950000},
{"first_name": "Brian", "last_name": "Hartman", "position": "CTO", "salary_rub": 130000},
]
},
]

taxes = [
{"department": None, "name": "vat", "value_percents": 13},
{"department": "IT department", "name": "hiring", "value_percents": 6},
{"department": "BizDev Department", "name": "sales", "value_percents": 20},
]

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

tax_departments = {}
for department in departments:
department_salary = []
for employer in department['employers']:
department_salary.append(employer['salary_rub'])
if department["title"] == 'IT department':

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.

Тут ты в алгоритме решения используешь знание о том, какие есть налоги. Если добавить в список taxes пару строк, твой алгоритм перестанет работать. Давай перепишем так, чтобы было универсальнее.

tax_sum = sum(department_salary) * (taxes[0]["value_percents"] + taxes[1]["value_percents"]) / 100
tax_departments["department"] = department["title"]
tax_departments["tax"] = tax_sum
else:
tax_sum = sum(department_salary) * (taxes[0]["value_percents"] / 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.

Другая проблема в том, что в ветках ифа почти один и тот же код. От этого дублирования лучше бы избавиться.

tax_departments["department"] = department["title"]
tax_departments["tax"] = tax_sum
print(f'По {tax_departments["department"]} суммарный налог на сотрудников равен {tax_departments["tax"]}')

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

tax_departments = {}
for department in departments:

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']:
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
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"]}')

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

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

# task 18. Вывести имя и фамилию сотрудника, за которого компания платит меньше всего налогов.