Skip to content

Naberno/Python

Repository files navigation

Python

📌 Меню

Сайт

AnyTask: https://anytask.org/course/1076#tasks-tab

📌 1 longdiv

Cдать до 21:30 25-11-2023

Дописать реализацию функции, выводящую деление столбиком двух натуральных чисел http://shannon.usu.edu.ru/ftp/python/hw1/longdiv_stripped.py

Требования:

  • Прохождение тестов (3 балла)
  • Соответствие PEP8 (2 балла)
  • Активность на занятиях

📌 2 stat

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 балла)

📌 3 phil

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 балл)

📌 4 logs

Cдать до 21:30 09-12-2023

На четвёртом занятии мы делали следующую задачку: Дан лог-файл web-сервера: http://shannon.usu.edu.ru/ftp/python/cw5/.

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

  • Самый популярный ресурс
  • Самый активный клиент

На паре сначала весь лог считывается в память, затем анализируется. Важно при написании программы обращать внимание на:

  • Декомпозиция — отдельные функции: для считывания параметров запуска (напрямую из sys.argv), для чтения данных из файла, для поиска одной статистики, второй статистики, третьей статистики...
  • Тестирование на маленьком фрагменте лога
  • Дописать вторую статистику!

Требования:

  • Выдача статистики №1 (4 балла)
  • Выдача статистики №2 (4 балла)
  • Соответствие кода PEP8 (2 балл)
  • Читать весь лог в память нельзя!

📌 5 logs_classes

Cдать до 21:30 09-12-2023

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

Требования:

  • Декомпозиция [2+2]
  • Стиль [2]
  • Тесты [2+2]

📌 6 logs_merge

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 балл, если не реализовано)

📌 7 decorators

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 балл, если не реализовано)

📌 8 untar

Cдать до 21:30 16-12-2023

В этом ДЗ вам необходимо дописать распаковщик tar-файлов, который начали писать на паре.

Для начала необходимо ознакомиться с форматом:

Дописать распаковщик, заготовка здесь: 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

📌 9 exceptions

Cдать до 21:30 23-12-2023

Ваша задача дополнить своим кодом файл https://alexbers.com/python/exceptions.py

В этом файле каждая функция генерирует какое-либо исключение и вам необходимо заменить явный raise объекта-исключения указанного типа на произвольный код, выполнение которого приведёт к выбросу соответствующего исключения "естественным путём".

Оцениваться решение будет по количеству сгенерированных типов исключений. По два балла за каждые 3 типа исключения.

📌 10 threaded_parser

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

📌 11 timer

В этом домашнем задании вам нужно написать таймер (например, для варки пельменей или отсчёта времени до нового года :)), но не простой, а с графическим интерфейсом.

Требования:

  1. Графический интерфейс программы должен быть написан на PyQt (2 балла).
  2. Иметь элементы управления чтобы задать время для отсчёта (2 балла).
  3. Кнопки старт, пауза, стоп (2 балла).
  4. Показывать текущее состояние отсчёта времени (2 балла).
  5. Иметь элементы управления для установки звука, который будет проигрываться при истечении времени (2 балла).
  6. Код должен соответствовать PEP8 (обязательное условие).

About

My Py repository

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published