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