---
# System prepended metadata

title: Контрольная работа № 1

---

# Контрольная работа № 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'`.  
второй аргумент должен быть опциональным, его значение по умолчанию &mdash; `'all'`.

Если второй аргумент равен
* `'vow'` - программа должна вернуть кортеж из строки, полученной из исходной удалением всех согласных, и длины этой полученной строки.
* `'all'` - программа должна вернуть кортеж из исходной строки, и длины этой строки.

**NB!** использовать встроенную в Python функцию `len()` нельзя.


## Задание № 3

Для данного задания понадобится текст. Скачайте его по
[ссылке](https://gist.githubusercontent.com/Sapunov/9d2b729f10aa2216196aaabc14730aef/raw/f4bf9e0339be5908be307b5ddbb4890e9e1db62d/episode3.txt)

Нужно реализовать редакторскую программу, которая:

* спрашивает у пользователя `имя_файла`
* спрашивает у пользователя список слов через пробел. Эти слова назовём подлежащими цензуре. **NB!** если среди введённых пользователем слов было целое число (т.е. слово из цифр), то все слова &mdash; целые числа &mdash; считаются тоже подлежащими цензуре

* записывает в один файл `censored.txt` все строки из `имя_файла`, не содержащие слов, подлежащих цензуре
* выводит на экран имя созданного файла и пояснение о том, какой файл что содержит

