# Контрольная работа № 1 Первые два задания должны быть оформлены в виде **2 отдельных функций** в ***одном*** файле. Программа для 3 задания должна быть оформлена в отдельном файле и должна уметь общаться с пользователем через `input()` и `print()`. По названию функции/файла должно быть легко понять к какому заданию они относятся. **Закиньте сделанное в приватный репозиторий на гитхабе.** После пары попрошу доступ к нему. ## Формула mark(O1, O2, O3) = 0.5 * MAX(O1, O2, O3) + 0.3 * MEDIAN(O1, O2, O3) + 0.2 * MIN(O1, O2, O3) ```python mark (3, 3, 10) = 6.5 average(3, 3, 10) = 5.3 ``` ## Задание № 1 Для данного задания нужно использовать свой корпус с морфологической разметкой в формате CoNLL-U (О. Ляшевская дала нам в качестве примера ссылку на [этот](https://raw.githubusercontent.com/KseniaSeverina/LiveCorpus/master/zemfira.csv)). Если у вас такого нет, используйте [частотный словарь русского языка](https://goo.gl/1Q6fxq). Ссылку на использованный файл укажите комментарием в коде. В файлах на каждой строчке записано слово, морфологическая информация о нем (часть речи, число и т.д.) в виде списка тегов, что-то ещё. Файлы выглядят либо так ``` ... 11 слова слово NOUN _ Animacy=Inan|Case=Nom|Gender=Neut|Number=Plur _ _ _ @vvp1934-words#@vvp1934#784.9#785.45 12 и и CCONJ _ _ _ _ _ @vvp1934-words#@vvp1934#785.45#786.0 13 музыка музыка NOUN _ Animacy=Inan|Case=Nom|Gender=Fem|Number=Sing ... ``` либо так ``` ... агрессор|сущ одуш ед муж им|5.02 агроном|сущ одуш ед муж им|6.67 агути|сущ одуш ед муж|1.29 ад|сущ неод ед муж им|32.14 адаптация|сущ неод ед жен им|5.51 адаптироваться|гл 2вид непер воз инф|2.2 адвентист|сущ одуш ед муж им|1.16 ... ``` --- Напишите функцию, которая * первым аргументом будет принимать путь к файлу с вашим корпусом (или частотным словарём, если вы делаете про него), * вторым аргументом - часть речи (глагол, существительное или прилагательное, на другие части речи можно забить) в соответствующем файлу формате (для существительного это `NOUN` или `сущ` соответственно, например), * третьим аргументом - одно из значений `"sing"` или `"plur"`. Третий аргумент опционален, по умолчанию равен пустой строке. Функция должна возвращать **список кортежей**. Каждый элемент списка - это кортеж из слова и его морфологического разбора. Список должен содержать кортежи только про слова (из выбранного файла) указанной части речи и указанного числа, если число было указано. ## Задание № 2 Напишите функцию, которая будет принимать на вход два аргумента: первый - какая-то строка; второй - строка, одна из следующих: `'vow'`, `'all'`. второй аргумент должен быть опциональным, его значение по умолчанию — `'all'`. Если второй аргумент равен * `'vow'` - программа должна вернуть кортеж из строки, полученной из исходной удалением всех согласных, и длины этой полученной строки. * `'all'` - программа должна вернуть кортеж из исходной строки, и длины этой строки. **NB!** использовать встроенную в Python функцию `len()` нельзя. ## Задание № 3 Для данного задания понадобится текст. Скачайте его по [ссылке](https://gist.githubusercontent.com/Sapunov/9d2b729f10aa2216196aaabc14730aef/raw/f4bf9e0339be5908be307b5ddbb4890e9e1db62d/episode3.txt) Нужно реализовать редакторскую программу, которая: * спрашивает у пользователя `имя_файла` * спрашивает у пользователя список слов через пробел. Эти слова назовём подлежащими цензуре. **NB!** если среди введённых пользователем слов было целое число (т.е. слово из цифр), то все слова — целые числа — считаются тоже подлежащими цензуре * записывает в один файл `censored.txt` все строки из `имя_файла`, не содержащие слов, подлежащих цензуре * выводит на экран имя созданного файла и пояснение о том, какой файл что содержит