python.hw 2015-2016

КБ-101

strings
Дописать реализацию string.py (ссылка)
Требования:
- правильность (прохождение тестов) [1]
- соответствие стиля PEP8 [1]

stat
1. Скачать страницу
2. Реализовать недостающий функционал в скрипте:
• Статистика по именам за каждый год [2]
• (необязательно) Отдельная статистика для мальчиков, отдельная для девочек [1]
• PEP8 [1]

Тесты лежат здесь.

phil
Проверить тезис: «из любой статьи на русской Википедии можно за несколько шагов перейти в статью „Философия“».

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

Написанная программа должна проходить тесты.

Требования:
• Использовать urlopen, re
• Если можно перейти, выдать список переходов (иначе ничего не печатать) [1]
• Переходить в пределах ru.wikipedia.org, переходы выполнять только в статьи [1]
• Не ходить по страницам дважды, не зацикливаться [1]
• PEP8 [1]

Таймаут: 500с
Дедлайн: 22.03 23:59

log_parser
Написать парсер логов.

Данные для разбора можно взять здесь.

Требования к парсеру:
• Парсер должен корректно работать для больших файлов
• Должна быть декомпозиция(разбивка) по функциям
• Парсер должен уметь считать статистику:
- самая медленная страница (*1)
- самая быстрая страница (*1)
- самая медленная страница в среднем (*2)
- самая популярная страница (*3)
- самый активный клиент (*3)
- самый популярный браузер (*3)
- самый активный клиент по дням (*3)

(*1) если несколько, вернуть последнюю
(*2) если несколько, вернуть первую
(*3) если несколько, вернуть лексикографически наименьшую

Интерфейс:
Лог-файл подаётся на стандартный ввод. Примеры вывода можно посмотреть здесь.

Описание формата данных:
IP_адрес - - дата_время_TZ запрос код_ответа размер_ответа(байт) referrer User_Agent время_обработки

запросы могут быть вида:
{GET|PUT|POST|HEAD|OPTIONS|DELETE} имя_страницы(без_пробелов) тип_и_версия_протокола

Обратите внимание:
• Не все строки в логе содержат время обработки, такие строки не надо учитывать в статистике по времени, но надо учитывать в остальных статистиках
• В логе могут присутствовать некорректные строки, их следует игнорировать
• Нельзя считывать все данные в память, так как данных может быть крайне много
• Важен формат вывода. Обратите внимание на предложенные примеры, в т.ч. на расстановку отступов, пробелов, пустых строк.

ФТ-101

strings
Дописать реализацию string.py (ссылка)
Требования:
• правильность (прохождение тестов) [2]
• соответствие стиля PEP8 [1]

Срок сдачи: 26.02 14:29

stat
1. Скачать страницу
2. Реализовать недостающий функционал в скрипте:
• Статистика по именам за каждый год [2]
• (необязательно) Отдельная статистика для мальчиков, отдельная для девочек [1]
• PEP8 [1]

Тесты лежат здесь.

phil
Проверить тезис: «из любой статьи на русской Википедии можно за несколько шагов перейти в статью „Философия“».

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

Написанная программа должна проходить тесты.

Требования:
• Использовать urlopen, re
• Если можно перейти, выдать список переходов (иначе ничего не печатать) [1]
• Переходить в пределах ru.wikipedia.org, переходы выполнять только в статьи [1]
• Не ходить по страницам дважды, не зацикливаться [1]
• PEP8 [1]

Таймаут: 500с
Дедлайн: 27.03 23:59

log_parser
Написать парсер логов.

Данные для разбора можно взять здесь.

Требования к парсеру:
• Парсер должен корректно работать для больших файлов
• Должна быть декомпозиция(разбивка) по функциям
• Парсер должен уметь считать статистику:
- самая медленная страница (*1)
- самая быстрая страница (*1)
- самая медленная страница в среднем (*2)
- самая популярная страница (*3)
- самый активный клиент (*3)
- самый популярный браузер (*3)
- самый активный клиент по дням (*3)

(*1) если несколько, вернуть последнюю
(*2) если несколько, вернуть первую
(*3) если несколько, вернуть лексикографически наименьшую

Интерфейс:
Лог-файл подаётся на стандартный ввод. Примеры вывода можно посмотреть здесь.

Описание формата данных:
IP_адрес - - дата_время_TZ запрос код_ответа размер_ответа(байт) referrer User_Agent время_обработки

запросы могут быть вида:
{GET|PUT|POST|HEAD|OPTIONS|DELETE} имя_страницы(без_пробелов) тип_и_версия_протокола

Обратите внимание:
• Не все строки в логе содержат время обработки, такие строки не надо учитывать в статистике по времени, но надо учитывать в остальных статистиках
• В логе могут присутствовать некорректные строки, их следует игнорировать
• Нельзя считывать все данные в память, так как данных может быть крайне много
• Важен формат вывода. Обратите внимание на предложенные примеры, в т.ч. на расстановку отступов, пробелов, пустых строк.

log_classes
Модифицировать решение предыдущего задания с использованием
классов и написать для него модульные тесты.

Имеется заготовка и тест (подобными мы будем проверять ваше решение).

Требования:
• Декомпозиция [1+1]
• Стиль [1]
• Тесты [1+1]

merge
Бонусная задача

Реализовать недостающий функционал: ссылка.

Требования:
• merge произвольного числа итераторов по ключу
• merge логов (будет подана на вход коллекция файлов) по времени
• Тесты

КН-102

strings
Дописать реализацию string.py (ссылка)
Требования:
- правильность (прохождение тестов) [1]
- соответствие стиля PEP8 [1]

stat
1. Скачать страницу
2. Реализовать недостающий функционал в скрипте:
• Статистика по именам за каждый год [2]
• (необязательно) Отдельная статистика для мальчиков, отдельная для девочек [1]
• PEP8 [1]

Тесты лежат здесь.

phil
Проверить тезис: «из любой статьи на русской Википедии можно за несколько шагов перейти в статью „Философия“».

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

Написанная программа должна проходить тесты.

Требования:
• Использовать urlopen, re
• Если можно перейти, выдать список переходов (иначе ничего не печатать) [1]
• Переходить в пределах ru.wikipedia.org, переходы выполнять только в статьи [1]
• Не ходить по страницам дважды, не зацикливаться [1]
• PEP8 [1]

Таймаут: 500с
Дедлайн: 24.03 23:59

log_parser
Написать парсер логов.

Данные для разбора можно взять здесь.

Требования к парсеру:
• Парсер должен корректно работать для больших файлов
• Должна быть декомпозиция(разбивка) по функциям
• Парсер должен уметь считать статистику:
- самая медленная страница (*1)
- самая быстрая страница (*1)
- самая медленная страница в среднем (*2)
- самая популярная страница (*3)
- самый активный клиент (*3)
- самый популярный браузер (*3)
- самый активный клиент по дням (*3)

(*1) если несколько, вернуть последнюю
(*2) если несколько, вернуть первую
(*3) если несколько, вернуть лексикографически наименьшую

Интерфейс:
Лог-файл подаётся на стандартный ввод. Примеры вывода можно посмотреть здесь.

Описание формата данных:
IP_адрес - - дата_время_TZ запрос код_ответа размер_ответа(байт) referrer User_Agent время_обработки

запросы могут быть вида:
{GET|PUT|POST|HEAD|OPTIONS|DELETE} имя_страницы(без_пробелов) тип_и_версия_протокола

Обратите внимание:
• Не все строки в логе содержат время обработки, такие строки не надо учитывать в статистике по времени, но надо учитывать в остальных статистиках
• В логе могут присутствовать некорректные строки, их следует игнорировать
• Нельзя считывать все данные в память, так как данных может быть крайне много
• Важен формат вывода. Обратите внимание на предложенные примеры, в т.ч. на расстановку отступов, пробелов, пустых строк.

log_classes
Модифицировать решение предыдущего задания с использованием
классов и написать для него модульные тесты.

Имеется заготовка и тест (подобными мы будем проверять ваше решение).

Требования:
• Декомпозиция [1+1]
• Стиль [1]
• Тесты [1+1]

Дедлайн: 01.05 23:59

merge
Бонусная задача

Реализовать недостающий функционал: ссылка.

Требования:
• merge произвольного числа итераторов по ключу
• merge логов (будет подана на вход коллекция файлов) по времени
• Тесты

Дедлайн: 01.05 23:59

КН-101

strings
Дописать реализацию string.py (ссылка)
Требования:
- правильность (прохождение тестов) [1]
- соответствие стиля PEP8 [1]

stat
1. Скачать страницу
2. Реализовать недостающий функционал в скрипте:
• прохождение тестов [3]
• стиль кода [1]

Тесты лежат здесь.

phil
Проверить тезис: «из любой статьи на русской Википедии можно за несколько шагов перейти в статью „Философия“».

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

Написанная программа должна проходить тесты.

Требования:
• Использовать urlopen, re
• Если можно перейти, выдать список переходов (иначе ничего не печатать) [1]
• Переходить в пределах ru.wikipedia.org, переходы выполнять только в статьи [1]
• Не ходить по страницам дважды, не зацикливаться [1]
• PEP8 [1]

Таймаут: 500с
Дедлайн: 22.03 23:59

log_parser
Написать парсер логов.

Данные для разбора можно взять здесь.

Требования к парсеру:
• Парсер должен корректно работать для больших файлов
• Должна быть декомпозиция(разбивка) по функциям
• Парсер должен уметь считать статистику:
- самая медленная страница (*1)
- самая быстрая страница (*1)
- самая медленная страница в среднем (*2)
- самая популярная страница (*3)
- самый активный клиент (*3)
- самый популярный браузер (*3)
- самый активный клиент по дням (*3)

(*1) если несколько, вернуть последнюю
(*2) если несколько, вернуть первую
(*3) если несколько, вернуть лексикографически наименьшую

Интерфейс:
Лог-файл подаётся на стандартный ввод. Примеры вывода можно посмотреть здесь.

Описание формата данных:
IP_адрес - - дата_время_TZ запрос код_ответа размер_ответа(байт) referrer User_Agent время_обработки

запросы могут быть вида:
{GET|PUT|POST|HEAD|OPTIONS|DELETE} имя_страницы(без_пробелов) тип_и_версия_протокола

Обратите внимание:
• Не все строки в логе содержат время обработки, такие строки не надо учитывать в статистике по времени, но надо учитывать в остальных статистиках
• В логе могут присутствовать некорректные строки, их следует игнорировать
• Нельзя считывать все данные в память, так как данных может быть крайне много
• Важен формат вывода. Обратите внимание на предложенные примеры, в т.ч. на расстановку отступов, пробелов, пустых строк.

Python.вольнослушатели

strings
Дописать реализацию string.py (ссылка)
Требования:
• правильность (прохождение тестов) [2]
• соответствие стиля PEP8 [1]

stat
1. Скачать страницу
2. Реализовать недостающий функционал в скрипте:
• Статистика по именам за каждый год [2]
• (необязательно) Отдельная статистика для мальчиков, отдельная для девочек [1]
• PEP8 [1]

Тесты лежат здесь.

phil
Проверить тезис: «из любой статьи на русской Википедии можно за несколько шагов перейти в статью „Философия“».

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

Написанная программа должна проходить тесты.

Требования:
• Использовать urlopen, re
• Если можно перейти, выдать список переходов (иначе ничего не печатать) [1]
• Переходить в пределах ru.wikipedia.org, переходы выполнять только в статьи [1]
• Не ходить по страницам дважды, не зацикливаться [1]
• PEP8 [1]

Таймаут: 500с

log_parser
Написать парсер логов.

Данные для разбора можно взять здесь.

Требования к парсеру:
• Парсер должен корректно работать для больших файлов
• Должна быть декомпозиция(разбивка) по функциям
• Парсер должен уметь считать статистику:
- самая медленная страница (*1)
- самая быстрая страница (*1)
- самая медленная страница в среднем (*2)
- самая популярная страница (*3)
- самый активный клиент (*3)
- самый популярный браузер (*3)
- самый активный клиент по дням (*3)

(*1) если несколько, вернуть последнюю
(*2) если несколько, вернуть первую
(*3) если несколько, вернуть лексикографически наименьшую

Интерфейс:
Лог-файл подаётся на стандартный ввод. Примеры вывода можно посмотреть здесь.

Описание формата данных:
IP_адрес - - дата_время_TZ запрос код_ответа размер_ответа(байт) referrer User_Agent время_обработки

запросы могут быть вида:
{GET|PUT|POST|HEAD|OPTIONS|DELETE} имя_страницы(без_пробелов) тип_и_версия_протокола

Обратите внимание:
• Не все строки в логе содержат время обработки, такие строки не надо учитывать в статистике по времени, но надо учитывать в остальных статистиках
• В логе могут присутствовать некорректные строки, их следует игнорировать
• Нельзя считывать все данные в память, так как данных может быть крайне много
• Важен формат вывода. Обратите внимание на предложенные примеры, в т.ч. на расстановку отступов, пробелов, пустых строк.

log_classes
Модифицировать решение предыдущего задания с использованием
классов и написать для него модульные тесты.

Имеется заготовка и тест (подобными мы будем проверять ваше решение).

Требования:
• Декомпозиция [1+1]
• Стиль [1]
• Тесты [1+1]

merge
Бонусная задача

Реализовать недостающий функционал: ссылка.

Требования:
• merge произвольного числа итераторов по ключу
• merge логов (будет подана на вход коллекция файлов) по времени
• Тесты