- 1 longdiv
- 2 stat
- 3 phil
- 4 logs
- 5 logs_classes
- 6 logs_merge
- 7 decorators
- 8 untar
- 9 exceptions
- 10 threaded_parser
- 11 timer
Сайт
AnyTask: https://anytask.org/course/1076#tasks-tab
Cдать до 21:30 25-11-2023
Дописать реализацию функции, выводящую деление столбиком двух натуральных чисел http://shannon.usu.edu.ru/ftp/python/hw1/longdiv_stripped.py
Требования:
- Прохождение тестов (3 балла)
- Соответствие PEP8 (2 балла)
- Активность на занятиях
Cдать до 21:30 25-11-2023
Требуется сохранить страницу http://shannon.usu.edu.ru/ftp/python/hw2/home.html локально, а затем:
Реализовать недостающий функционал в скрипте: http://shannon.usu.edu.ru/ftp/python/hw2/homestat_stripped.py. Прилагаются тесты: http://shannon.usu.edu.ru/ftp/python/hw2/test_homestat.py
Требования:
- Статистика по именам за каждый год (2 балла)
- Соответствие PEP8 (1 балл)
- Отдельная статистика для мальчиков, отдельная для девочек (2 балла)
Cдать до 21:30 25-11-2023
Мы хотим проверить тезис: «из любой статьи на русской Википедии можно за несколько шагов перейти в статью „Философия“». Дана заготовка: http://shannon.usu.edu.ru/ftp/python/hw3/phil_stripped.py, её нужно дописать так, чтобы первым аргументом принимала слово (название стартовой статьи) [использовать sys.argv] и в ответ писала список переходов.
Также прилагаются тесты: http://shannon.usu.edu.ru/ftp/python/hw3/test_phil.py, которые программа должна проходить (таймаут: 500с).
Требования:
- Использовать urlopen, re (2 балла)
- Печать списка переходов в случае успеха и молчание в случае неуспеха (3 балла)
- Переходить только в пределах ru.wikipedia.org и только в статьи (2 балла)
- Не ходить по страницам дважды, не зацикливаться (2 балла)
- Соответствие PEP8 (1 балл)
Cдать до 21:30 09-12-2023
На четвёртом занятии мы делали следующую задачку: Дан лог-файл web-сервера: http://shannon.usu.edu.ru/ftp/python/cw5/.
Нужно написать консольную утилиту, которая по данному логу, согласно параметрам, выдаёт одну из статистик:
- Самый популярный ресурс
- Самый активный клиент
На паре сначала весь лог считывается в память, затем анализируется. Важно при написании программы обращать внимание на:
- Декомпозиция — отдельные функции: для считывания параметров запуска (напрямую из sys.argv), для чтения данных из файла, для поиска одной статистики, второй статистики, третьей статистики...
- Тестирование на маленьком фрагменте лога
- Дописать вторую статистику!
Требования:
- Выдача статистики №1 (4 балла)
- Выдача статистики №2 (4 балла)
- Соответствие кода PEP8 (2 балл)
- Читать весь лог в память нельзя!
Cдать до 21:30 09-12-2023
Модифицировать решение предыдущего задания с использованием классов и написать для него модульные тесты. Имеется заготовка и тест (подобными мы будем проверять ваше решение).
Требования:
- Декомпозиция [2+2]
- Стиль [2]
- Тесты [2+2]
Cдать до 21:30 09-12-2023
Реализовать недостающий функционал: http://shannon.usu.edu.ru/ftp/python/hw5/hw5.py.
В стандартной библиотеке python есть способ решить задачу в одну строчку, им пользоваться нельзя, нужно сделать самим.
Требования:
- merge произвольного количества итераторов по ключу (2 балла)
- merge логов по времени, будет подана эта коллекция файлов: http://shannon.usu.edu.ru/ftp/python/hw5/ (2 балла)
- Тесты (1 балл)
- Соответствие PEP8 (-1 балл, если не реализовано)
Cдать до 21:30 16-12-2023
Вам нужно доделать iPython notebook, который лежит тут:
https://drive.google.com/file/d/1fpbBlMk-KHLjec2duuPHkAlNOsNhvD-u/view?usp=sharing
Вы можете писать свой код только в те места, которые отмечены строкой "# your code here".
Требования:
- Прохождение тестов, написанных в файле (1-10 баллов в зависимости от выполнения задачи)
- Соответствие PEP8 (-1 балл, если не реализовано)
Cдать до 21:30 16-12-2023
В этом ДЗ вам необходимо дописать распаковщик tar-файлов, который начали писать на паре.
Для начала необходимо ознакомиться с форматом:
- https://en.wikipedia.org/wiki/Tar_(computing)
- http://www.gnu.org/software/tar/manual/html_node/Standard.html
Дописать распаковщик, заготовка здесь: http://shannon.usu.edu.ru/ftp/python/cw9/
Обратить внимание на использование argparse для разбора параметров! Подробное освоение модуля argparse остаётся домой.
Отныне в task используем argparse, а не цикл по sys.argv. (обязательное условие для сдачи ДЗ!)
- Получение листинга файлов (2 балла)
- Распаковка файлов (4 балла)
- Получение информации о файлах (2 балла)
- Соответствие PEP8 (2 балла)
Тестовый tar-файл: http://shannon.usu.edu.ru/ftp/python/cw7/NSimulator.tar
Cдать до 21:30 23-12-2023
Ваша задача дополнить своим кодом файл https://alexbers.com/python/exceptions.py
В этом файле каждая функция генерирует какое-либо исключение и вам необходимо заменить явный raise объекта-исключения указанного типа на произвольный код, выполнение которого приведёт к выбросу соответствующего исключения "естественным путём".
Оцениваться решение будет по количеству сгенерированных типов исключений. По два балла за каждые 3 типа исключения.
Cдать до 21:30 23-12-2023
Ваша задача - реализовать скрапер, который собирает изображения из статей с хабра https://habr.com.
Для каждой из последних n статей (параметр ) необходимо создать в выходной директории (параметр <out_dir>) новую директорию и сохранить в неё все изображения из статьи. Имя новой директории должно совпадать с именем статьи. Если статья не содержит изображений, директорию создавать не нужно.
Требования:
- Загрузка и сохранение изображений (2 балла).
- Работа скрипта должна быть распараллена на x потоков (параметр ) (4 балла).
- Соответствие кода pep8 (1 балл).
- Скрипт должен поддерживать graceful shutdown, то есть при получении сигнала о завершении каждый поток должен закончить обработку текущей статьи и только после этого остановиться. Для получения сигнала используйте модуль signal, для передачи события между потоками - threading.Event (3 балла).
Заготовку для ДЗ можно взять здесь: https://drive.google.com/file/d/1E1xnQU9CyuQMyG76y9WOkYz23tDy8XLg/view?usp=sharing
В этом домашнем задании вам нужно написать таймер (например, для варки пельменей или отсчёта времени до нового года :)), но не простой, а с графическим интерфейсом.
Требования:
- Графический интерфейс программы должен быть написан на PyQt (2 балла).
- Иметь элементы управления чтобы задать время для отсчёта (2 балла).
- Кнопки старт, пауза, стоп (2 балла).
- Показывать текущее состояние отсчёта времени (2 балла).
- Иметь элементы управления для установки звука, который будет проигрываться при истечении времени (2 балла).
- Код должен соответствовать PEP8 (обязательное условие).