diff --git a/.gitignore b/.gitignore
index 6d13ccc88..10253d0b3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,8 +3,12 @@
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
+# создаваемы файлы в задачах:
+save_json_data.json
+
# User-specific stuff
.idea
+tmp/
# CMake
cmake-build-*/
diff --git a/Module10/practice/algo/01_task_algo.py b/Module10/practice/algo/01_task_algo.py
new file mode 100644
index 000000000..4263ae6ed
--- /dev/null
+++ b/Module10/practice/algo/01_task_algo.py
@@ -0,0 +1,6 @@
+# "Карточки"
+# Для настольной игры используются карточки с номерами от 1 до N. Одна карточка потерялась.
+# Найдите ее, зная номера оставшихся карточек.
+# Вводится число N, далее еще N − 1 чисел: номера оставшихся карточек (различные числа от 1 до N).
+# Программа должна вывести номер потерянной карточки.
+
diff --git a/Module10/practice/algo/02_task_algo.py b/Module10/practice/algo/02_task_algo.py
new file mode 100644
index 000000000..342061b51
--- /dev/null
+++ b/Module10/practice/algo/02_task_algo.py
@@ -0,0 +1,9 @@
+# Игра “Компьютер угадывает число”
+# Пользователь загадывает число между 1 и 100 (включительно).
+# Компьютер может спросить у него “Твое число равно, меньше или больше чем число N?”,
+# где N - число, которое хочет проверить компьютер.
+# Пользователь отвечает одним из трех чисел: 1 - равно, 2 - больше, 3 - меньше
+# Напишите программу, которая с помощью цепочки таких вопросов и ответов пользователя угадывает число
+
+# Дополнительно: сделайте так, чтобы можно было гарантированно угадать число за 7 попыток.
+
diff --git a/Module10/practice/algo/03_task_algo.py b/Module10/practice/algo/03_task_algo.py
new file mode 100644
index 000000000..1f9aafd8d
--- /dev/null
+++ b/Module10/practice/algo/03_task_algo.py
@@ -0,0 +1,10 @@
+# "Кинотеатр"
+# X мальчиков и Y девочек пошли в кинотеатр и купили билеты на подряд идущие места в одном ряду.
+# Напишите программу, которая выдаст, как нужно сесть мальчикам и девочкам, чтобы рядом с каждым мальчиком
+# сидела хотя бы одна девочка, а рядом с каждой девочкой — хотя бы один мальчик.
+#
+# На вход подаются два числа - кол-во мальчиков X и кол-во девочек Y.
+# В ответе выведите какую-нибудь строку, в которой будет ровно X символов “B” (обозначающих мальчиков)
+# и Y символов “G” (обозначающих девочек), удовлетворяющую условию задачи. Пробелы между символами выводить не нужно.
+# Если рассадить мальчиков и девочек согласно условию задачи невозможно, выведите строку “Нет решения”.
+
diff --git a/Module10/practice/algo/04_task_algo.py b/Module10/practice/algo/04_task_algo.py
new file mode 100644
index 000000000..bfd2845a1
--- /dev/null
+++ b/Module10/practice/algo/04_task_algo.py
@@ -0,0 +1,22 @@
+# "Шифровка"
+# Секретное агентство «Super-Secret-no» решило
+# для шифрования переписки своих сотрудников использовать «метод бутерброда».
+# Сначала буквы слова нумеруются в таком порядке:
+# первая буква получает номер 1,
+# последняя буква - номер 2,
+# вторая – номер 3,
+# предпоследняя – номер 4, потом третья … и так для всех букв (см. рисунок).
+# Затем все буквы записываются в шифр в порядке своих номеров.
+#
+# Например, слово «sandwich» зашифруется в «shacnidw».
+#
+# К сожалению, программист «Super-Secret-no», написал только программу шифрования и уволился.
+# И теперь агенты не могут понять, что же они написали друг другу. Помогите им.
+#
+# Пример:
+# Введите зашифрованное сообщение: shacnidw
+# Расшифрованное сообщение: sandwich
+# 1 3 5 7 8 6 4 2
+# Слово: | s | a | n | d | w | i | c | h |
+#
+# Шифр: | s | h | a | c | n | i | d | w |
diff --git a/Module10/practice/funcs/01_task_funcfib.py b/Module10/practice/funcs/01_task_funcfib.py
new file mode 100644
index 000000000..86f49d7d8
--- /dev/null
+++ b/Module10/practice/funcs/01_task_funcfib.py
@@ -0,0 +1,6 @@
+# Напишите функцию нахождения n-ого числа Фибоначчи
+# Пример ряда чисел Фибоначчи: 0 1 1 2 3 5 8 13 ...
+# (сумма элемента равна сумме двух предыдущих)
+
+def fib(n):
+ pass
\ No newline at end of file
diff --git a/Module10/practice/funcs/02_task_funcfact.py b/Module10/practice/funcs/02_task_funcfact.py
new file mode 100644
index 000000000..999cf7a44
--- /dev/null
+++ b/Module10/practice/funcs/02_task_funcfact.py
@@ -0,0 +1,7 @@
+# Напишите функцию нахождения факториала числа n
+# Примеры нахождения факториала:
+# 5! = 1*2*3*4*5
+# 7! = 1*2*3*4*5*6*7
+
+def factorial(n):
+ pass
\ No newline at end of file
diff --git a/Module10/practice/funcs/decor_clock.py b/Module10/practice/funcs/decor_clock.py
new file mode 100644
index 000000000..21e46ff8d
--- /dev/null
+++ b/Module10/practice/funcs/decor_clock.py
@@ -0,0 +1,19 @@
+def clock(func):
+ def clocked(*args, **kwargs):
+ import time
+ t0 = time.time()
+
+ result = func(*args, **kwargs) # вызов декорированной функции
+
+ elapsed = time.time() - t0
+ name = func.__name__
+ arg_1st = []
+ if args:
+ arg_1st.append(', '.join(repr(arg) for arg in args))
+ if kwargs:
+ pairs = ['%s=%r' % (k, w) for k, w in sorted(kwargs.items())]
+ arg_1st.append(', '.join(pairs))
+ arg_str = ', '.join(arg_1st)
+ print('[%0.8fs] %s(%s) -> %r' % (elapsed, name, arg_str, result))
+ return result
+ return clocked
\ No newline at end of file
diff --git a/Module10/practice/result/01_task_result.py b/Module10/practice/result/01_task_result.py
new file mode 100644
index 000000000..932a3c3aa
--- /dev/null
+++ b/Module10/practice/result/01_task_result.py
@@ -0,0 +1,9 @@
+# Напишите программу, вычисляющую площадь всех граней и объем прямоугольного параллелепипеда.
+# Формат входных данных: даны три целые числа - ширина, высота и длина параллелепипеда.
+# Формат выходных данных: вывести площадь всех граней и объем фигуры
+
+# Важно!
+# Оформите решение так, что работа с вашей программой была удобна пользователю.
+# Пользователь должен понимать, что его просят ввести и что именно делает программа.
+
+
diff --git a/Module10/practice/result/02_task_result.py b/Module10/practice/result/02_task_result.py
new file mode 100644
index 000000000..7e554211f
--- /dev/null
+++ b/Module10/practice/result/02_task_result.py
@@ -0,0 +1,8 @@
+# На числовой прямой расположены точки A, B, C и D.
+# Напишите программу, которая выведет, во сколько раз отрезок AB больше или меньше, чем отрезок CD.
+# Формат входных данных:
+# На вход программе подается четыре целых числа A, B, C и D.
+# Расположение точек относительно друг друга на координатной прямой произвольное.
+# Формат выходных данных:
+# Выведите, во сколько раз отрезок AB больше, чем отрезок CD. Ответ введите с точностью до 6-ти знаков после запятой.
+
diff --git a/Module10/practice/result/03_task_result.py b/Module10/practice/result/03_task_result.py
new file mode 100644
index 000000000..1b4688a75
--- /dev/null
+++ b/Module10/practice/result/03_task_result.py
@@ -0,0 +1,6 @@
+# С некоторого момента прошло некоторое количество дней. Сколько полных недель прошло с этого же момента?
+# Формат входных данных: Вводится целое положительное число — количество прошедших дней.
+# Формат выходных данных: Выведите целое число недель.
+# Уточнение: каждые 7 прошедших дней равны одной полной неделе.
+
+
diff --git a/Module10/practice/result/04_task_result.py b/Module10/practice/result/04_task_result.py
new file mode 100644
index 000000000..295626a24
--- /dev/null
+++ b/Module10/practice/result/04_task_result.py
@@ -0,0 +1,4 @@
+# Одноклеточная амеба каждые 3 часа делится на 2 такие же амёбы.
+# Необходимо определить, сколько будет амеб через n часов, если первоначально была только одна амёба.
+# Формат входных данных: Вводится целое положительное число n.
+# Формат выходных данных: Требуется одно число — конечное число амеб.
diff --git a/Module10/practice/result/05_task_result.py b/Module10/practice/result/05_task_result.py
new file mode 100644
index 000000000..4352e1023
--- /dev/null
+++ b/Module10/practice/result/05_task_result.py
@@ -0,0 +1,27 @@
+# Чтобы поднять холодильник на n-й этаж H-этажного дома, Коля вызвал бригаду грузчиков.
+# За подъем холодильника на один этаж требуется заплатить 200 рублей, за спуск на один этаж — 100 рублей.
+# За подъем и спуск на лифте плата не взимается.
+# Несмотря на то, что в Колином доме есть лифт, ему возможно все же придется заплатить грузчикам,
+# поскольку лифт останавливается только на каждом K-м этаже, начиная с первого
+# (то есть на этажах с номерами 1, K+1, 2K+1, 3K+1, …).
+# Требуется вычислить, за какую минимальную сумму грузчики доставят холодильник с первого этажа на этаж Коли.
+
+# Формат входных данных
+# Даны три числа, H - высота дома, N - этаж Коли и k - через сколько этажей останавливается лифт.
+# H (2≤H≤100), n (2≤n≤H) и K (2≤k≤H–1).
+# Формат выходных данных
+# Выведите одно целое число - минимальную стоимость подъема
+
+# Примеры для самопроверки:
+# Входные данные-1:
+# 20
+# 7
+# 4
+# Выходные данные-1:
+# 200
+# Входные данные-2:
+# 20
+# 7
+# 2
+# Выходные данные-2:
+# 0
diff --git a/Module10/practice/result/06_task_result.py b/Module10/practice/result/06_task_result.py
new file mode 100644
index 000000000..b18617053
--- /dev/null
+++ b/Module10/practice/result/06_task_result.py
@@ -0,0 +1,7 @@
+# Во время проведения олимпиады каждый из участников получил свой идентификационный номер.
+# Необходимо отсортировать список участников олимпиады по количеству набранных ими баллов.
+# Формат входных данных:
+# Для каждого участника олимпиады дается пара чисел: id-участника и количество набранных баллов.
+# Формат выходных данных:
+# Выведите исходный список в порядке убывания баллов. Если у некоторых участников одинаковые баллы,
+# то их между собой нужно упорядочить в порядке возрастания идентификационного номера
diff --git a/Module10/practice/result/07_task_result.py b/Module10/practice/result/07_task_result.py
new file mode 100644
index 000000000..0d2e32bee
--- /dev/null
+++ b/Module10/practice/result/07_task_result.py
@@ -0,0 +1 @@
+# Напишите программу генерирующую и записывающую в файле произвольное 20000-значное целое число.
diff --git a/Module10/practice/result/08_task_result.py b/Module10/practice/result/08_task_result.py
new file mode 100644
index 000000000..ddb4ee89a
--- /dev/null
+++ b/Module10/practice/result/08_task_result.py
@@ -0,0 +1,4 @@
+# Прочитав число из файла задачи 7, определите:
+# Какие цифры встречаются в числе чаще всего?
+# Если несколько цифр встречаются одинаковое максимальное кол-во раз - найдите любые.
+# Является ли данное число(20000-значное) четным?
diff --git a/Module10/practice/result/09_task_result.py b/Module10/practice/result/09_task_result.py
new file mode 100644
index 000000000..a46ad150e
--- /dev/null
+++ b/Module10/practice/result/09_task_result.py
@@ -0,0 +1,3 @@
+# Напишите функцию принимающую на вход целое числом n. И возвращающую список из n элементов.
+# заполненный случайными целыми числами в диапазоне от a до b.
+# Примечание: для генерации случайного числа используйте import random
diff --git a/Module10/practice/result/10_task_result.py b/Module10/practice/result/10_task_result.py
new file mode 100644
index 000000000..e46f568a4
--- /dev/null
+++ b/Module10/practice/result/10_task_result.py
@@ -0,0 +1,5 @@
+# Напишите функцию принимающую на вход целое числом n. И возвращающую список из n элементов.
+# заполненный случайными целыми числами в диапазоне от a до b.
+# Примечание: все элементы списка должны быть гарантировано уникальными(неповторяющимися)
+# Если создать список с заданными параметрами невозможно - функция должна выбросить исключение(любое)
+
diff --git a/Module2/home_work/01_hw.py b/Module2/home_work/01_hw.py
new file mode 100644
index 000000000..2e876f454
--- /dev/null
+++ b/Module2/home_work/01_hw.py
@@ -0,0 +1,8 @@
+# Требуется определить, можно ли от шоколадки размером n × m долек отломить k долек,
+# если разрешается сделать один разлом по прямой между дольками (то есть разломить шоколадку на два прямоугольника).
+# Формат входных данных
+# Вводятся 3 натуральных числа n, m и k. Точно известно, что k ≠ n ⋅ m.
+# Формат выходных данных
+# Выведите «YES», если можно отломить от шоколадки ровно k долек, и «NO» иначе.
+
+# TODO: your code here
diff --git a/Module2/home_work/02_hw.py b/Module2/home_work/02_hw.py
new file mode 100644
index 000000000..24ec97636
--- /dev/null
+++ b/Module2/home_work/02_hw.py
@@ -0,0 +1,10 @@
+# По данному числу n закончите фразу «На лугу пасется...» одним из возможных продолжений:
+# «n коров», «n корова», «n коровы», правильно склоняя слово «корова».
+# Формат входных данных
+# Дано целое положительное число n
+# Формат выходных данных
+# Программа должна вывести введенное число n и одно из слов (на латинице):
+# коров, корова или коровы
+# Например, 1 корова, 2 коровы, 5 коров, 125 коров.
+
+# TODO: your code here
diff --git a/Module2/home_work/03_hw.py b/Module2/home_work/03_hw.py
new file mode 100644
index 000000000..ed6529384
--- /dev/null
+++ b/Module2/home_work/03_hw.py
@@ -0,0 +1,33 @@
+# Задача 3. Таблица стоимости
+# Одна единица некоторого товара стоит x рублей. Напечатайте таблицу стоимости 2, 3, ..., 20 единиц этого товара.
+# Формат входных данных
+# Дано одно положительное вещественное число x - цена единицы товара
+# Формат выходных данных
+# Выведите таблицу стоимости. Цены вывести с точностью до двух знаков
+
+# пример:
+# Входные данные
+# 9.99
+# Выходные данные
+# 1 9.99 Rub.
+# 2 19.98 Rub.
+# 3 29.97 Rub.
+# 4 39.96 Rub.
+# 5 49.95 Rub.
+# 6 59.94 Rub.
+# 7 69.93 Rub.
+# 8 79.92 Rub.
+# 9 89.91 Rub.
+# 10 99.9 Rub.
+# 11 109.89 Rub.
+# 12 119.88 Rub.
+# 13 129.87 Rub.
+# 14 139.86 Rub.
+# 15 149.85 Rub.
+# 16 159.84 Rub.
+# 17 169.83 Rub.
+# 18 179.82 Rub.
+# 19 189.81 Rub.
+# 20 199.8 Rub.
+
+# TODO: your code here
diff --git a/Module2/home_work/04_hw.py b/Module2/home_work/04_hw.py
new file mode 100644
index 000000000..d7c60142c
--- /dev/null
+++ b/Module2/home_work/04_hw.py
@@ -0,0 +1,16 @@
+# Дан размер стороны квадрата. Вывести его стороны символами #.
+# Формат входных данных
+# На вход программе одно целое число a (2 0:
+ print("Положительное")
+else:
+ print("Отрицательным")
+
diff --git a/Module2/practice/if_else/02_task_if_else.py b/Module2/practice/if_else/02_task_if_else.py
new file mode 100644
index 000000000..33c5ac798
--- /dev/null
+++ b/Module2/practice/if_else/02_task_if_else.py
@@ -0,0 +1,5 @@
+# Дано целое число. Определить, заканчивается ли оно число цифрой 5?
+# Формат входных данных: Целое положительно число
+# Формат выходных данных: Если число оканчивается цифрой 5, вывести «YES», в противном случае — вывести «NO».
+
+# TODO: your code here
diff --git a/Module2/practice/if_else/03_task_if_else.py b/Module2/practice/if_else/03_task_if_else.py
new file mode 100644
index 000000000..6fd7713f1
--- /dev/null
+++ b/Module2/practice/if_else/03_task_if_else.py
@@ -0,0 +1,5 @@
+# Дан треугольник со сторонами a, b и c. Определите, является ли он равнобедренным.
+# Формат входных данных: дано три натуральных числа. Гарантируется, что отрезки с данными длинами образуют треугольник.
+# Формат выходных данных: Выведите «YES», если треугольник равнобедренный, и «NO» в противном случае.
+
+# TODO: your code here
diff --git a/Module2/practice/if_else/04_task_if_else.py b/Module2/practice/if_else/04_task_if_else.py
new file mode 100644
index 000000000..f5102b91a
--- /dev/null
+++ b/Module2/practice/if_else/04_task_if_else.py
@@ -0,0 +1,7 @@
+# Дано целое число.
+# Если оно делится на 3 без остатка - вывести "Foo",
+# если делится на 5 - вывести "Bar",
+# а если делится на 3 и на 5 - вывести "Foobar".
+# Для всех остальных случаев не выводить ничего.
+
+# TODO: your code here
diff --git a/Module2/practice/if_else/05_task_if_else.py b/Module2/practice/if_else/05_task_if_else.py
new file mode 100644
index 000000000..96a730387
--- /dev/null
+++ b/Module2/practice/if_else/05_task_if_else.py
@@ -0,0 +1,6 @@
+# Дано целое число m, задающее номер месяца года.
+# Выведите строку — название времени года, соответствующего данному месяцу.
+# Формат входных данных: дано целое число m (1 ≤ m ≤ 12).
+# Формат выходных данных: требуется вывести название времени года
+
+# TODO: your code here
diff --git a/Module2/practice/if_else/06_task_if_else.py b/Module2/practice/if_else/06_task_if_else.py
new file mode 100644
index 000000000..333f195ce
--- /dev/null
+++ b/Module2/practice/if_else/06_task_if_else.py
@@ -0,0 +1,10 @@
+# Дан номер года. Требуется определить количество дней в этом году, учитывая,
+# что обычный год насчитывает 365 дней, а високосный –— 366 дней.#
+# Високосным считается год, делящийся на 4, но не делящийся на 100,
+# либо делящиеся на 400 (например, годы 700, 1400 и 1800 не являются високосными, а 1600 и 2000 –— являются).
+# Формат входных данных: Вводится неотрицательное целое число— номер года.
+# Формат выходных данных: Выведите количество дней в данном году.
+
+year = int(input("Год: "))
+
+# TODO: your code here
diff --git a/Module2/practice/while/01_task_while.py b/Module2/practice/while/01_task_while.py
new file mode 100644
index 000000000..cb98773cf
--- /dev/null
+++ b/Module2/practice/while/01_task_while.py
@@ -0,0 +1,5 @@
+# Даны два целые числа a и b. Выведите на экран все целые четные числа от a до b включительно.
+# Формат входных данных: Дано два целых числа a и b. Гарантируется, что a < b
+# Формат выходных данных: Выведите все числа, требуемые по условию задачи.
+
+# TODO: your code here
diff --git a/Module2/practice/while/02_task_while.py b/Module2/practice/while/02_task_while.py
new file mode 100644
index 000000000..98f32f5eb
--- /dev/null
+++ b/Module2/practice/while/02_task_while.py
@@ -0,0 +1,5 @@
+# Напишите программу, которая запрашивает строку до тех пор, пока пользователь не введет “хватит”.
+# Т.е. программа запрашивает ввод, если вводится любое значение отличное от слова “хватит”,
+# то программа запрашивает ввод снова.
+
+# TODO: your code here
diff --git a/Module2/practice/while/03_task_while.py b/Module2/practice/while/03_task_while.py
new file mode 100644
index 000000000..3db93b73e
--- /dev/null
+++ b/Module2/practice/while/03_task_while.py
@@ -0,0 +1,12 @@
+# По данному натуральному n выведите лесенку из n ступенек, i-я ступень состоит из чисел от 1 до i без пробелов.
+# Формат входных данных: Вводится натуральное число n.
+# Формат выходных данных: Выведите ответ на задачу.
+# Пример:
+# Для n = 4
+# Нужно вывести:
+# 1
+# 12
+# 123
+# 1234
+
+# TODO: your code here
diff --git a/Module2/practice/while/04_task_while.py b/Module2/practice/while/04_task_while.py
new file mode 100644
index 000000000..347ec986e
--- /dev/null
+++ b/Module2/practice/while/04_task_while.py
@@ -0,0 +1,9 @@
+# Из остатков кирпичей Сергей сложил пирамиду.
+# На вершине пирамиды лежит один кирпич, на втором сверху ряду два кирпича,
+# на третьем - три, и т.д., в нижнем ряду пирамиды количество кирпичей равно количеству уровней пирамиды.
+# После этого он написал на каждом кирпиче по числу, равному количеству кирпичей на этом уровне,
+# т.е. на верхнем уровне 1, на втором уровне 2, и т.д. Определите сумму чисел написанных на кирпичах.
+# Формат входных данных: Программе даётся целое число — количество уровней в пирамиде
+# Формат выходных данных: Необходимо вывести сумму чисел написанных на кирпичах.
+
+# TODO: your code here
diff --git a/Module2/practice/while/05_task_while.py b/Module2/practice/while/05_task_while.py
new file mode 100644
index 000000000..c2a224541
--- /dev/null
+++ b/Module2/practice/while/05_task_while.py
@@ -0,0 +1,20 @@
+# Вывод символов по диагоналям
+# Даны сторона квадрата. Вывести его диагонали символами #.
+# Формат входных данных: На вход программе одно целое число a (2 "" вернет вам пустую строку, строку из НУЛЯ символов.
diff --git a/Module6/practice/files/02_task_file.py b/Module6/practice/files/02_task_file.py
new file mode 100644
index 000000000..80c853fa8
--- /dev/null
+++ b/Module6/practice/files/02_task_file.py
@@ -0,0 +1,15 @@
+# Кассовый аппарат пишет цены всех проданных товаров в текстовый файл, наименование проданных товаров не имеет значение.
+# По окончанию рабочего дня имеем файл data/sold.txt.
+# Формат файла: Цены товаров представлены целыми или вещественными числами.
+# Цены разделены одним или более пробельными символами.
+# Узнайте:
+# 1. На какую сумму было продано товаров
+# 2. Цену самого дорогого товара
+# 3. Цену самого дешевого товара
+
+# Совет: сначала считайте все цены из файла, сохраните в список,
+# преобразовав каждую цену к числу(цены в файле хранятся в виде строк)
+# А затем, работам с привычным списком, выполните задания
+prices = []
+
+# Подсказка: для преобразования строки в список вспомните про метод строки .split()
diff --git a/Module6/practice/files/03_task_file.py b/Module6/practice/files/03_task_file.py
new file mode 100644
index 000000000..6253872e5
--- /dev/null
+++ b/Module6/practice/files/03_task_file.py
@@ -0,0 +1,4 @@
+# В файлк salaries.txt даны зарплаты сотрудников
+
+# Задача: выведите всех сотрудников в файл highly_paid.txt, зарплаты которых превышают 60000
+# Сотружников вывести в формате: Фамилия И.О. ,например: Иванов И.П. (зарплаты в файл не записывать)
diff --git a/Module6/practice/files/04_task_file.py b/Module6/practice/files/04_task_file.py
new file mode 100644
index 000000000..8f4f41707
--- /dev/null
+++ b/Module6/practice/files/04_task_file.py
@@ -0,0 +1,13 @@
+# Дан файл ("data/fruits.txt") со списком фруктов.
+# Записать в новые файлы все фрукты, начинающиеся с определенной буквы.
+# Т.е. в одном файле будут все фрукты на букву “А”, во втором на “Б” и т.д.
+# Файлы назвать соответственно.
+# Пример имен файлов: fruits_А.txt, fruits_Б.txt, fruits_В.txt ….
+# Важно! Обратите внимание, что нет фруктов, начинающихся с некоторых букв,
+# а также есть пустые строки, которые нужно пропустить.
+# Напишите универсальный код, который будет работать с любым списком фруктов и
+# распределять по файлам в зависимости от первых букв, имеющихся в списке фруктов.
+
+# Возможно пригодится:
+# Чтобы получить список больших букв русского алфавита:
+# print(list(map(chr, range(ord('А'), ord('Я')+1))))
diff --git a/Module6/practice/files/05_task_file.py b/Module6/practice/files/05_task_file.py
new file mode 100644
index 000000000..97b4859e4
--- /dev/null
+++ b/Module6/practice/files/05_task_file.py
@@ -0,0 +1,8 @@
+# Кассовый аппарат был доработан, теперь он пишет не только цены, но и тип проданных товаров.
+# Файл data/items_sold.txt - продажи всех товаров за день.
+# Каждая строка файла - покупка одного покупателя.
+# Узнайте:
+# 1. Какова общая выручка магазина
+# 2. Какова выручка магазина по каждому типу товаров
+# 3. Какой тип товара был продан на самую большую сумму
+# 4. Сколько различных типов товаров было продано за день
diff --git a/Module6/practice/files/06_task_file(hard).py b/Module6/practice/files/06_task_file(hard).py
new file mode 100644
index 000000000..3d2748719
--- /dev/null
+++ b/Module6/practice/files/06_task_file(hard).py
@@ -0,0 +1,5 @@
+# Дана ведомость расчета заработной платы (файл "data/workers").
+# Рассчитайте зарплату всех работников, зная что они получат полный оклад,
+# если отработают норму часов. Если же они отработали меньше нормы, то их ЗП уменьшается пропорционально,
+# а за каждый час переработки они получают удвоенную ЗП, пропорциональную норме.
+# Кол-во часов, которые были отработаны, указаны в файле "data/hours_of"
diff --git a/Module6/practice/files/data/fruits.txt b/Module6/practice/files/data/fruits.txt
new file mode 100644
index 000000000..e55e35623
--- /dev/null
+++ b/Module6/practice/files/data/fruits.txt
@@ -0,0 +1,563 @@
+Абиу
+
+Абрикос
+
+Авокадо
+
+Айва
+
+Аки
+
+Алиберция
+
+Алыча
+
+Амбарелла
+
+Американский абрикос
+
+Американский орех
+
+Ананас
+
+Аннона горная
+
+Аннона колючая
+
+Аннона сетчатая
+
+Аннона черимола
+
+Аннона чешуйчатая
+
+Антильский крыжовник
+
+Апельсин
+
+Арабика
+
+Араза
+
+Арахис
+
+Арбуз обыкновенный
+
+Астрокариум колючий
+
+Атимойя
+
+Африканский колючий огурец
+
+Африканский тамаринд
+
+Бакау
+
+Баклажан
+
+Балия
+
+Бананы
+
+Баобаб
+
+Барбадин (Большая гранадилла)
+
+Барбадосская вишня
+
+Бархатное яблоко
+
+Баэль
+
+Белая сапота
+
+Бергамот
+
+Билимби
+
+Бирсонима
+
+Блигия вкусная
+
+Большой змеиный фрукт
+
+Бразильский орех
+
+Бычье сердце
+
+Вампи
+
+Вангерия
+
+Ваниль
+
+Виноград
+
+Воаванга
+
+Водяное(восковое) яблоко
+
+Гандария
+
+Генипа
+
+Гибискус съедобный
+
+Гнетум гнемон
+
+Голубиная слива
+
+Голубой квандонг
+
+Горлянка
+
+Горький огурец
+
+Гранадилла (Маракуйа)
+
+Гранадилла большая (Барбадин)
+
+Гранадилла сладкая
+
+Гранат
+
+Грейпфрут
+
+Грумичама
+
+Груша
+
+Гуайява земляничная
+
+Гуайява коста-риканская
+
+Гуайява красная
+
+Гуайява обыкновенная
+
+Гуарана
+
+Давидсония
+
+Дамские пальчики
+
+Деревянное яблоко
+
+Десертный квандонг
+
+Джекфрут
+
+Древесная калебаса
+
+Дуку
+
+Дуриан
+
+Дуриан цибетиновый
+
+Дынная груша
+
+Дынное дерево
+
+Дыня обыкновенная
+
+Звездчатое яблоко
+
+Земляничная груша
+
+Земляничный томат
+
+Земляной орех
+
+Зизифус мавританский
+
+Золотая слива
+
+Золотистый апельсин
+
+Индийские бобы
+
+Индийский инжир
+
+Индийский миндаль
+
+Индийское розовое яблоко
+
+Инжир
+
+Кабачки
+
+Каинито
+
+Какао
+
+Кактус инжировый
+
+Каламондин
+
+Калебаса
+
+Канариум яйцевидный
+
+Капский крыжовник
+
+Карамбола
+
+Кас
+
+Квини
+
+Квислендский орех
+
+Кепель
+
+Кетамбилла
+
+Кивано
+
+Киви
+
+Китайская калебаса
+
+Клементин
+
+Кокколоба ягодоносная
+
+Кокос
+
+Корилла
+
+Кофейные деревья
+
+Кранжи
+
+Кумкват овальный
+
+Купуасу
+
+Курбарил
+
+Кустовой горошек
+
+Лайм настоящий
+
+Лангсат
+
+Лансиум домашний
+
+Леуцена светлоголовчатая
+
+Либерика
+
+Ликания
+
+Лимон грубокожистый
+
+Лимон обыкновенный
+
+Лимон Мейера
+
+Лимонная осина
+
+Личи
+
+Лобия
+
+Ложный мангустан
+
+Лукума
+
+Луло
+
+Люффа остроребристая
+
+Маболо
+
+Мадагаскарская слива
+
+Макадамия цельнолистная
+
+Малабарская тыква
+
+Малабарский апельсин
+
+Малайское яблоко
+
+Малуко
+
+Мальпигия гранатолистная
+
+Маммея американская
+
+Мамончилло (Лайм испанский)
+
+Манго благоухающее
+
+Манго великолепное
+
+Манго индийское
+
+Манго резко пахнущее
+
+Мангостан
+
+Мангустан
+
+Мандарин
+
+Манилкара
+
+Маракуйя
+
+Мармеладный плод
+
+Марула
+
+Мауриция извилистая
+
+Маш
+
+Мексиканская земляная вишня
+
+Мексиканский огурец
+
+Мелинжо
+
+Моква
+
+Момбин желтый
+
+Момбин красный
+
+Момордика
+
+Моринда
+
+Мунду
+
+Мускатный орех
+
+Мушмула японская
+
+Наранхилла
+
+Ням-ням
+
+Обезьяний хлеб
+
+Огурец
+
+Огуречное дерево
+
+Орех кешью
+
+Пальма катеху
+
+Пальма кокосовая
+
+Пальма масличная африканская
+
+Пальма персиковая
+
+Пальчиковый лайм
+
+Папайя
+
+Папайя горная
+
+Папеда
+
+Паприка
+
+Пара-гуайява
+
+Паркия красивая
+
+Пассифлора съедобная
+
+Пекуи
+
+Пепино
+
+Перец
+
+Перец кайенский
+
+Перец стручковый
+
+Персик
+
+Перуанская вишня
+
+Питайя
+
+Питомба
+
+Пиши
+
+Помело
+
+Померанец
+
+Помидор
+
+Помпельмус
+
+Понцирус (несъедобный плод)
+
+Приморский виноград
+
+Путерия
+
+Пуласан
+
+Ракум-салакка
+
+Рамбай
+
+Рамбутан
+
+Робуста
+
+Розовое яблоко
+
+Роллиния слизистая
+
+Салакка
+
+Салакка скученная
+
+Саламандровое дерево
+
+Сантол
+
+Саподилла
+
+Сатсума
+
+Сахарное яблоко
+
+Сахарный горошек
+
+Свечное дерево
+
+Свити
+
+Сизигиум аквеум
+
+Сизигиум малаккский
+
+Сизигиум ямбоза
+
+Сингапурский миндаль
+
+Слива
+
+Слива какаду
+
+Слоновье яблоко
+
+Сметанное яблоко
+
+Сонсоя
+
+Соя
+
+Спаржевая фасоль
+
+Страстоцвет
+
+Суринамская вишня
+
+Съедобный таитянский орех
+
+Таитянское яблоко
+
+Такако
+
+Тамарилло
+
+Тамаринд
+
+Танжерин
+
+Терминалия катаппа
+
+Томат настоящий
+
+Томатное дерево
+
+Тукума
+
+Тупа
+
+Тыква бутылочная
+
+Тыква восковая
+
+Тыква мускатная
+
+Тыква обыкновенная
+
+Тыква фиголистная
+
+Тыквенное дерево
+
+Фейхоа
+
+Ферония лимонная
+
+Ферония слоновая
+
+Физалис земляничный
+
+Филиппинское розовое яблоко
+
+Филлантус кислый
+
+Финик
+
+Флакурция
+
+Хлебное дерево
+
+Хлебные бобы
+
+Хурма восточная (японская)
+
+Цейлонский крыжовник
+
+Циклантера
+
+Цуккини
+
+Чайот
+
+Чампедак
+
+Черешня
+
+Черимойя
+
+Черная гуайява
+
+Черная сапота
+
+Черная хурма
+
+Черный тамаринд
+
+Чили
+
+Чилибуха колючая
+
+Чупа
+
+Шоколадное дерево
+
+Яблоко
+
+Яблоко-кажу
+
+Яботикаба
+
+Ямайская вишня
diff --git a/Module6/practice/files/data/hours_of.txt b/Module6/practice/files/data/hours_of.txt
new file mode 100644
index 000000000..7e3c12c36
--- /dev/null
+++ b/Module6/practice/files/data/hours_of.txt
@@ -0,0 +1,7 @@
+Имя Фамилия Отработано часов
+Петр Алексеев 120
+Матвей Бурин 160
+Василий Сидоров 122
+Альберт Грибов 118
+Василий Иванов 180
+Петр Дурин 80
\ No newline at end of file
diff --git a/Module6/practice/files/data/items_sold.txt b/Module6/practice/files/data/items_sold.txt
new file mode 100644
index 000000000..06c231227
--- /dev/null
+++ b/Module6/practice/files/data/items_sold.txt
@@ -0,0 +1,6 @@
+fruits:45.10 bread:25.10 icecream:120.90 juice:80 vegetables:72.40
+bread:42.20 juice:42 meat:280.20
+vegetables:28.10 fruits:142.80
+icecream:40.75 juice:24.50 canned_food:137
+bread:78.40 meat:450.20
+fruits:58.54
\ No newline at end of file
diff --git a/Module6/practice/files/data/limericks.txt b/Module6/practice/files/data/limericks.txt
new file mode 100644
index 000000000..510267bb0
--- /dev/null
+++ b/Module6/practice/files/data/limericks.txt
@@ -0,0 +1,77 @@
+Жил на свете старик в бороде.
+Говорил он: «Я знал: быть беде.
+Две совы, три чижа
+И четыре стрижа
+Свили гнезда в моей бороде».
+
+Миловидная леди из гавани
+Сшила шляпку по моде недавней.
+Но размер и расцветка
+Этой шляпы нередко
+Удручали красотку из гавани.
+
+Худощавая мисс из Афин
+Была дверью расплющена в блин.
+Но вскричала спокойно:
+«Это вовсе не больно!»
+Та отважная мисс из Афин.
+
+Симпатичная леди с Атлантики,
+Завязавши ботинки на бантики,
+Знай гуляла по пристани
+Со щенками пятнистыми
+И порочила климат Атлантики.
+
+Длинноносый старик из Литвы
+Говорил: «Если скажете вы,
+Что мой нос длинноват,
+В чем же я виноват —
+Ведь не я так считаю, а вы!»
+
+Старый джентльмен на склоне холма
+Был подвижен и прыток весьма:
+Он, не знаясь со знатью,
+Бегал в тещином платье
+От подножья к вершине холма.
+
+К привлекательной леди из Капуи
+Часто птицы садились на шляпу, и
+Говорила с любовью:
+«Пусть сидят на здоровье!»
+Та приятная леди из Капуи.
+
+Непослушную внучку из Йены
+Бабка сжечь собралась как полено.
+Но заметила тонко:
+«А не сжечь ли котенка?»
+Невозможная внучка из Йены.
+
+Безрассудный старик из Остравы
+Вел себя неумно и нездраво:
+Даже будучи сытым,
+Груши ел с аппетитом
+Тот унылый старик из Остравы.
+
+Музыкальный старик на Меконге
+Без конца упражнялся на гонге.
+Все кричат: «Где закон,
+Чтоб такие, как он,
+День и ночь не играли на гонге?»
+
+Экспансивная леди из Ланса
+Не сумела прервать реверанса
+И, как штопор, крутилась,
+Пока в пол не ввинтилась,
+Опечалив всех жителей Ланса.
+
+Старика, что сидел на осине,
+Муха мучила невыносимо,
+И жужжала та муха
+Прямо в самое ухо
+Старику, что сидел на осине.
+
+К удалому флейтисту из Конго
+Раз в сапог заползла анаконда.
+Но настолько отвратно
+Он играл, что обратно
+Через час уползла анаконда.
\ No newline at end of file
diff --git a/Module6/practice/files/data/salaries.txt b/Module6/practice/files/data/salaries.txt
new file mode 100644
index 000000000..b1241249e
--- /dev/null
+++ b/Module6/practice/files/data/salaries.txt
@@ -0,0 +1,9 @@
+Фамилия Имя Отчество Зарплата
+Иванов Иван Петрович 45600
+Дмитриев Николай Алексеевич 64500
+Смирнова Ольга Ивановна 57000
+Керченских Виктор Олегович 125700
+Котов Дмитрий Юрьевич 26300
+Бирюкова Нина Алексеевна 89470
+Данилов Петр Никифорович 123500
+Олегова Ксения Петровна 89400
\ No newline at end of file
diff --git a/Module6/practice/files/data/sold.txt b/Module6/practice/files/data/sold.txt
new file mode 100644
index 000000000..426aefb0b
--- /dev/null
+++ b/Module6/practice/files/data/sold.txt
@@ -0,0 +1,2 @@
+23.45 123 17.45 200 221.10 265.0
+78.4 167 24.98 764.14 100
\ No newline at end of file
diff --git a/Module6/practice/files/data/workers.txt b/Module6/practice/files/data/workers.txt
new file mode 100644
index 000000000..78b2eaf09
--- /dev/null
+++ b/Module6/practice/files/data/workers.txt
@@ -0,0 +1,7 @@
+Имя Фамилия Зарплата Должность Норма_часов
+Петр Алексеев 22000 прораб 140
+Василий Иванов 18000 плотник 150
+Матвей Бурин 42000 директор 150
+Василий Сидоров 17500 плотник 140
+Петр Дурин 20000 разнорабочий 160
+Альберт Грибов 20000 разнорабочий 160
\ No newline at end of file
diff --git a/Module7/examples/4_exceptions_tree.py b/Module7/examples/4_exceptions_tree.py
new file mode 100644
index 000000000..c36bee126
--- /dev/null
+++ b/Module7/examples/4_exceptions_tree.py
@@ -0,0 +1,99 @@
+import inspect
+# our treeClass function
+def treeClass(cls, ind=0):
+ # print name of the class
+ print('-' * ind, cls.__name__)
+
+ # iterating through subclasses
+ for i in cls.__subclasses__():
+ treeClass(i, ind + 3)
+
+
+print("Hierarchy for Built-in exceptions is : ")
+
+# inspect.getmro() Return a tuple
+# of class cls’s base classes.
+
+# building a tree hierarchy
+inspect.getclasstree(inspect.getmro(BaseException))
+
+# function call
+treeClass(BaseException)
+
+# BaseException
+# --- Exception
+# ------ TypeError
+# ------ StopAsyncIteration
+# ------ StopIteration
+# ------ ImportError
+# --------- ModuleNotFoundError
+# --------- ZipImportError
+# ------ OSError
+# --------- ConnectionError
+# ------------ BrokenPipeError
+# ------------ ConnectionAbortedError
+# ------------ ConnectionRefusedError
+# ------------ ConnectionResetError
+# --------- BlockingIOError
+# --------- ChildProcessError
+# --------- FileExistsError
+# --------- FileNotFoundError
+# --------- IsADirectoryError
+# --------- NotADirectoryError
+# --------- InterruptedError
+# --------- PermissionError
+# --------- ProcessLookupError
+# --------- TimeoutError
+# --------- UnsupportedOperation
+# ------ EOFError
+# ------ RuntimeError
+# --------- RecursionError
+# --------- NotImplementedError
+# --------- _DeadlockError
+# ------ NameError
+# --------- UnboundLocalError
+# ------ AttributeError
+# ------ SyntaxError
+# --------- IndentationError
+# ------------ TabError
+# ------ LookupError
+# --------- IndexError
+# --------- KeyError
+# --------- CodecRegistryError
+# ------ ValueError
+# --------- UnicodeError
+# ------------ UnicodeEncodeError
+# ------------ UnicodeDecodeError
+# ------------ UnicodeTranslateError
+# --------- UnsupportedOperation
+# ------ AssertionError
+# ------ ArithmeticError
+# --------- FloatingPointError
+# --------- OverflowError
+# --------- ZeroDivisionError
+# ------ SystemError
+# --------- CodecRegistryError
+# ------ ReferenceError
+# ------ MemoryError
+# ------ BufferError
+# ------ Warning
+# --------- UserWarning
+# --------- DeprecationWarning
+# --------- PendingDeprecationWarning
+# --------- SyntaxWarning
+# --------- RuntimeWarning
+# --------- FutureWarning
+# --------- ImportWarning
+# --------- UnicodeWarning
+# --------- BytesWarning
+# --------- ResourceWarning
+# ------ _OptionError
+# ------ error
+# ------ Verbose
+# ------ Error
+# ------ TokenError
+# ------ StopTokenizing
+# ------ EndOfBlock
+# --- GeneratorExit
+# --- SystemExit
+# --- KeyboardInterrupt
diff --git a/Module7/practice/exceptions/01_task_except.py b/Module7/practice/exceptions/01_task_except.py
new file mode 100644
index 000000000..38878a016
--- /dev/null
+++ b/Module7/practice/exceptions/01_task_except.py
@@ -0,0 +1,6 @@
+# Дан прямоугольник размером n×m. Напишите программу, вычисляющую, сколько квадратов
+# со стороной m от него получится отрезать.
+
+# На вход программе подается строка формата nxm (x - латинская буква икс).
+# Пример входных данных: 12x6
+# Если данные вводятся в неверном формате, сообщить об этом и запросить ввод заново.
diff --git a/Module7/practice/exceptions/02_task_except.py b/Module7/practice/exceptions/02_task_except.py
new file mode 100644
index 000000000..663f36438
--- /dev/null
+++ b/Module7/practice/exceptions/02_task_except.py
@@ -0,0 +1,6 @@
+# Даны номер месяца и номер года. Найдите сколько дней в этом месяце.
+# При вводе неверного номера месяца или некорректного значения программа должна сообщить об ошибке
+# и попросить ввести корректные данные. Также необходимо учесть високосный или не високосный год.
+# Алгоритм проверки на високосный год оформите в виде отдельной функции.
+#
+# Входная строка содержит два целых числа – номер месяца (возможно, неправильный) и номер года.
diff --git a/Module7/practice/exceptions/03_task_except.py b/Module7/practice/exceptions/03_task_except.py
new file mode 100644
index 000000000..65d95bae5
--- /dev/null
+++ b/Module7/practice/exceptions/03_task_except.py
@@ -0,0 +1,7 @@
+# Дана строка из пяти целых чисел, разделенных пробелом.
+# Пример входных данных: "2 12 -45 7 10"
+# Напишите программу, которая находит среди них минимальное положительное число.
+# Если таких чисел несколько - вывести любое из них.
+
+# При решении задачи требуется учесть формат входных данных.
+# Если входные данные некорректные, сообщить об этом.
diff --git a/Module7/practice/exceptions/04_task_except.py b/Module7/practice/exceptions/04_task_except.py
new file mode 100644
index 000000000..de64c3bc6
--- /dev/null
+++ b/Module7/practice/exceptions/04_task_except.py
@@ -0,0 +1,4 @@
+# Даны два уравнения прямых вида у=kx+b и виде строки. Проверить, пересекаются ли данные прямые?
+# Примеры уравнений: "y = 2x + 4" "y = -12x -12"
+
+# Проверьте входные данные на корректность
diff --git a/Module8/practice/decorators/01_task_decor.py b/Module8/practice/decorators/01_task_decor.py
new file mode 100644
index 000000000..fcee47749
--- /dev/null
+++ b/Module8/practice/decorators/01_task_decor.py
@@ -0,0 +1,9 @@
+# Напишите функцию-декоратор, оборачивающую результат другой функции в прямоугольник звездочек.
+# Пояснение: если декорируемая функция возвращает “Привет”, то декоратор должен изменить вывод на:
+# ********
+# *Привет*
+# ********
+# ****
+# *23*
+# ****
+# (кол-во звездочек зависит от длины возвращаемого значения)
diff --git a/Module8/practice/decorators/02_task_decor.py b/Module8/practice/decorators/02_task_decor.py
new file mode 100644
index 000000000..5832902a1
--- /dev/null
+++ b/Module8/practice/decorators/02_task_decor.py
@@ -0,0 +1,3 @@
+# Напишите функцию декоратор, которая округляет значение декорируемой функции до двух знаков после запятой.
+# Если округление невозможно, например там строка, или не требуется(целое число) то оставляем результат без изменений.
+# Примечание: используйте встроенную функцию round()
diff --git a/Module8/practice/hard/01_task_hard.py b/Module8/practice/hard/01_task_hard.py
new file mode 100644
index 000000000..0656e15a8
--- /dev/null
+++ b/Module8/practice/hard/01_task_hard.py
@@ -0,0 +1,7 @@
+# "Банкомат"
+# В банкомате есть купюры 5000, 2000, 1000 и 500 рублей.
+# Напишите функцию, которая будет рассчитывать количество купюр, которыми можно будет выдать
+# запрошенную пользователем сумму и возвращать ее в виде словаря, ключами в котором будут номиналы банкнот,
+# а значениями кол-во банкнот. Если пользователь запросил некорректную сумму,
+# нужно вывести дружественное сообщение об ошибке.
+# Результат работы программы - текстовый отчет о номиналах и количестве купюр.
diff --git a/Module8/practice/hard/02_task_hard.py b/Module8/practice/hard/02_task_hard.py
new file mode 100644
index 000000000..dab5df514
--- /dev/null
+++ b/Module8/practice/hard/02_task_hard.py
@@ -0,0 +1,19 @@
+# "Перевернутая башня"
+# Вавилонцы решили построить удивительную башню — расширяющуюся кверху и содержащую бесконечное число этажей и комнат.
+# Она устроена следующим образом — на первом этаже одна комната,
+# затем идет два этажа на каждом из которых по две комнаты,
+# затем идёт три этажа, на каждом из которых по три комнаты и так далее:
+# ... ... ...
+# 15 16 17 18
+# 12 13 14
+# 9 10 11
+# 6 7 8
+# 4 5
+# 2 3
+# 1
+
+# Эту башню решили оборудовать лифтом --- и вот задача: нужно научится по номеру комнаты определять,
+# на каком этаже она находится и какая она по счету слева на этом этаже.
+
+# Дано целое число - номер комнаты
+# Вывести два целых числа — номер этажа и ее порядковый номер слева на этаже.
diff --git a/Module8/practice/hard/03_task_hard.py b/Module8/practice/hard/03_task_hard.py
new file mode 100644
index 000000000..b769992a1
--- /dev/null
+++ b/Module8/practice/hard/03_task_hard.py
@@ -0,0 +1,19 @@
+# "Негостеприимные панды"
+# В панда парке был очень плохой управляющий. Из-за его ошибок вышло так, что многие клетки с пандами переполнены,
+# многие не заполнены, а есть и вовсе пустые. Пришел новый управляющий и захотел решить создавшуюся проблему,
+# перераспределив панд по клеткам.
+
+# Но управляющий столкнулся с двумя проблемами:
+# Общество защиты животных запретило выселять панд из клеток, если клетка не переполнена;
+# Панды оказались не очень-то дружелюбны к новым соседям и больше одного нового соседа не принимают.
+# Зато в пустые клетки можно переселять панд из разных клеток.
+
+# Напишите программу, которая определяет сколько панд были "лишними" в своих клетках (суммарное переполнение клеток).
+# И какое суммарное переполнение получится, после массового переселения панд.
+
+# Алгоритм переселения нужно разработать самостоятельно с учетом ограничений.
+
+# Формат входных данных
+# n - суммарное количество клеток (4 ≤ n ≤ 100)
+# Pn - количество панд в каждой клетке (0 ≤ Pn ≤ 10)
+# Sn - количество мест в каждой клетке (1 ≤ Sn ≤10)
diff --git a/Module8/practice/structs/01_task_struct.py b/Module8/practice/structs/01_task_struct.py
new file mode 100644
index 000000000..e2d407d67
--- /dev/null
+++ b/Module8/practice/structs/01_task_struct.py
@@ -0,0 +1,3 @@
+# Бегун проводил ежедневные тренировки и записывал расстояния которые пробегал за занятия в метрах:
+distances = [600, 755, 321.6, 1234, 231, 456.6, 4561, 1200, 456]
+# Переведите все значения в футы (получить и вывести новый список)
diff --git a/Module8/practice/structs/02_task_struct.py b/Module8/practice/structs/02_task_struct.py
new file mode 100644
index 000000000..4eeeafb34
--- /dev/null
+++ b/Module8/practice/structs/02_task_struct.py
@@ -0,0 +1,7 @@
+# Дан список, заполненный произвольными целыми числами.
+# Примечание: для генерации списка используйте функцию написанную на одном из прошлых занятий.
+# Получите новый список, элементами которого будут:
+# 1. неповторяющиеся(уникальные) элементы исходного списка:
+# например, lst = [1, 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 2, 4, 5, 6]
+# 2. элементы исходного списка, которые не имеют повторений(встречаются только один раз):
+# например, lst = [1 , 2, 4, 5, 6, 2, 5, 2], нужно получить lst2 = [1, 4, 6]
diff --git a/Module8/practice/structs/03_task_struct.py b/Module8/practice/structs/03_task_struct.py
new file mode 100644
index 000000000..928ade23b
--- /dev/null
+++ b/Module8/practice/structs/03_task_struct.py
@@ -0,0 +1,6 @@
+# Дан список, заполненный произвольными целыми числами.
+# Примечание: для генерации списка используйте функцию.
+# Найдите:
+# 1. Количество элементов списка не превышающие 10
+# 2. Сумму всех положительных элементов списка
+# 3. Среднее арифметическое всех четных элементов
diff --git a/Module8/practice/structs/04_task_struct.py b/Module8/practice/structs/04_task_struct.py
new file mode 100644
index 000000000..d1ca75147
--- /dev/null
+++ b/Module8/practice/structs/04_task_struct.py
@@ -0,0 +1,4 @@
+# Даны два словаря:
+dictionary_1 = {'a': 300, 'b': 400}
+dictionary_2 = {'c': 500, 'd': 600}
+# Объедините их в один
diff --git a/Module8/practice/structs/05_task_struct.py b/Module8/practice/structs/05_task_struct.py
new file mode 100644
index 000000000..02dcb2e91
--- /dev/null
+++ b/Module8/practice/structs/05_task_struct.py
@@ -0,0 +1,7 @@
+# Создайте словарь из строки следующим образом:
+# в качестве ключей возьмите буквы строки,
+# а значениями пусть будут числа, соответствующие количеству вхождений данной буквы в строку.
+
+# Пример: для строки 'pythonist'
+# Получим словарь: {'p': 1, 'y': 1, 't': 2, 'h': 1, 'o': 1, 'n': 1, 's': 1, 'i': 1}
+# Примечание: т.к. ключи неупорядочены, порядок следования ключей может быть произвольным
diff --git a/Module8/practice/structs/06_task_struct.py b/Module8/practice/structs/06_task_struct.py
new file mode 100644
index 000000000..0c99708e9
--- /dev/null
+++ b/Module8/practice/structs/06_task_struct.py
@@ -0,0 +1,10 @@
+# Вы написали программу для работы с сотрудниками и вам ее необходимо протестировать.
+# Для теста нужны большие списки сотрудников (100+).
+# Вбивать вручную столько данных займет очень много времени.
+# Напишите программу, генерирующую списки сотрудников со следующими параметрами:
+# 1. Имя
+# 2. Фамилия
+# 3. Возраст
+# 4. Профессия
+# 5. Зарплата
+# Примечание: Данные сгенерированных сотрудников могут повторяться
diff --git a/Module8/practice/structs/07_task_struct.py b/Module8/practice/structs/07_task_struct.py
new file mode 100644
index 000000000..631a3395c
--- /dev/null
+++ b/Module8/practice/structs/07_task_struct.py
@@ -0,0 +1,2 @@
+# Доработайте предыдущую программу так, чтобы каждый сгенерированный сотрудник
+# был уникальным(не должны повторяться комбинации Имя + Фамилия).
diff --git a/Modulr9/examples/1_rstring.py b/Module9/examples/1_rstring.py
similarity index 100%
rename from Modulr9/examples/1_rstring.py
rename to Module9/examples/1_rstring.py
diff --git a/Modulr9/examples/2_regexp.py b/Module9/examples/2_regexp.py
similarity index 100%
rename from Modulr9/examples/2_regexp.py
rename to Module9/examples/2_regexp.py
diff --git a/Module9/practice/regexp/01_task_regexp.py b/Module9/practice/regexp/01_task_regexp.py
new file mode 100644
index 000000000..1ca440844
--- /dev/null
+++ b/Module9/practice/regexp/01_task_regexp.py
@@ -0,0 +1,9 @@
+# Дано произвольное предложение. Слова разделены пробелами. Предложение содержит знаки препинания.
+# Найдите:
+# 1) первое слово из строки
+# 2) первые два символа каждого слова
+# 3) все слова начинающиеся на гласную букву
+# 4) все слова начинающиеся на согласную букву
+# 5) все уникальные(без дубликатов) знаки препинания
+
+text = ...
\ No newline at end of file
diff --git a/Module9/practice/regexp/02_task_regexp.py b/Module9/practice/regexp/02_task_regexp.py
new file mode 100644
index 000000000..2991f2d7c
--- /dev/null
+++ b/Module9/practice/regexp/02_task_regexp.py
@@ -0,0 +1,10 @@
+# Дан текст в котором упоминаются IP-адреса.
+# Пример текста:
+text = """
+Все публичные сервера и сайты в сети Интернет используют "белые" IP-адреса (например, сайт google.com — 172.217.22.14,
+DNS-сервер Google — 8.8.8.8, сайт yandex.ru — 213.180.204.11, DNS-сервер Яндекс.DNS — 77.88.8.8).
+Все публичные IP-адреса в сети Интернет уникальны и не могут повторяться
+"""
+# Найдите все упоминаемые IP.
+# Точно известно, что все IP-адреса в тексте являются корректными, т.е. не будут встречаться адреса вида 900.400.18.56
+
diff --git a/Module9/practice/regexp/03_task_regexp.py b/Module9/practice/regexp/03_task_regexp.py
new file mode 100644
index 000000000..5f39a5478
--- /dev/null
+++ b/Module9/practice/regexp/03_task_regexp.py
@@ -0,0 +1,7 @@
+# Проверить, является ли заданная строка доменным именем для протоколов http или https, с необязательным слешем в конце.
+# Специальные символы не используются.
+# Примеры:
+# http://example.com/ — Да(является)
+# example.com — Нет
+# https://кремль.рф — Да
+
diff --git a/Module9/practice/regexp/04_task_regexp.py b/Module9/practice/regexp/04_task_regexp.py
new file mode 100644
index 000000000..0e7e1f594
--- /dev/null
+++ b/Module9/practice/regexp/04_task_regexp.py
@@ -0,0 +1,4 @@
+# Дан текст:
+text = "World War II began on Sep 1939 and ended on Sep 1945. Victory Day has been celebrated since 1945."
+# Найдите и выведите все года, которым предшествует месяц.
+# Уточнение: вывести ТОЛЬКО года, но те, ПЕРЕД которыми стоит месяц!
diff --git a/Module9/practice/trening/00_tasks.md b/Module9/practice/trening/00_tasks.md
new file mode 100644
index 000000000..c7d760c29
--- /dev/null
+++ b/Module9/practice/trening/00_tasks.md
@@ -0,0 +1,50 @@
+## Практические задания на regExp
+
+Ресурс для проверки регулярок: [тут](https://regex101.com/).
+
+### Задание-0 “Разминка”
+
+#### Часть-1:
+
+Даны строки: **cats. 8967. ?=+!. abcd1**
+
+Напишите шаблон, который будет соответствовать первым трем строкам, но не соответствовать последней.
+
+Соответствовать: cats.
+
+Соответствовать: 8967.
+
+Соответствовать: ?=+!.
+
+Пропустить: abcd1
+
+#### Часть-2:
+Даны строки: **can man fan dan**
+
+Напишите шаблон, который будет соответствовать первым трем строкам, но не соответствовать трем последним.\
+
+Соответствовать can
+
+Соответствовать man
+
+Соответствовать fan
+
+Пропустить dan
+
+Пропустить ran
+
+Пропустить pan
+
+#### Часть-3:
+
+Для строк ниже напишите выражение, которое будет соответствовать как полной дате, так и только годам.
+
+Точно известно: название месяца начинается с большой буквы и состоит из трех букв. \
+А год состоит из четырех цифр.
+
+| Дано | Извлечь-1 | Извлечь-2 |
+| ----------------- | ----------- |----------- |
+| Date Jan 1987 | Jan 1987 |1987
+| In May 1969 | May 1969 |1969
+| The war ended on 8 May 1945 | May 1945 |1945
+
diff --git a/README.md b/README.md
index c4d63a92e..5f6bdc37d 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@
### Модуль 4: Функции
1. Создание функций
1. Аргументы по умолчанию
-1. Переменное количество переменных
+1. Переменное количество аргументов
1. lambda-функции
1. Встроенные функции map, zip, filter
@@ -51,7 +51,7 @@
### Модуль 8: Продвинутые инструменты
1. Оператор is
-1. Функциции как аргументы. Функции - объекты первого порядка
+1. Функции как аргументы. Функции - объекты первого порядка
1. Декораторы
1. Генераторы списков и словарей
@@ -60,3 +60,6 @@
1. Понятие о регулярном выражении
1. Синтаксис регулярных выражений
1. Применение регулярных выражений
+
\ No newline at end of file