Структура git-репозитория для практикума 2024 г. по Python

Регистрация

Репозиторий

  • Репозиторий должен быть публичный

  • Название репозитория может быть любым, структуру и именование каталогов с домашними заданиями см. ниже.
  • Всё, что вы сделали за время занятия, следует публиковать в этом репозитории в день занятия

  • Все решения и тесты должны быть опубликованы в репозитории до окончания дедлайна по заданию

Правила именования

  • Для каждого семинара создается каталог с именем вида <ГГГГММДД> (выдача команды date "+%Y%m%d"), дата - того семинара, на котором выдано задание.

  • Все программы, {i} написанные во время занятия, записываются в каталог <ГГГГММДД>/0

  • Для каждого задания создаются подкаталоги <ГГГГММДД>/1, <ГГГГММДД>/2 и т. д.

В подкаталоге содержатся:

  • ровно один .py-файл с текстом решения, имя файла должно быть prog.py

    • исключение: задания, в которых явно требуется наличие нескольких .py-файлов. В таком случае задание оформляется в виде набора модулей, каждый из которых располагается в каталоге src/имя_модуля и запускается из каталога src командой python3 -m имя_модуля.

  • подкаталог check/, в котором хранятся примеры входных данных и эталонного вывода (если нужны по заданию).

Подсистема проверки домашних заданий

  • hworker-0.9.3-py3-none-any.whl

    • скачиваем, делаем pip install hworker-0.9.3-py3-none-any.whl (Python 3.11+)

  • Запуск:
    • hworker -p из каталога с решением или hworker -p каталог-с решением

    • например, hworker -p pythonprac/20231017/1

Пример:

20210903/1

  • prog.py

  • check/

    • 1.in

    • 1.out

    • 2.in

    • 2.out

Как написать тест на класс/функцию?

  1. К файлу с классом/функцией необходимо приписать тестирующий код
       1 import sys
       2 exec(sys.stdin.read())
    
  2. В файл с тестом (1.in) кладётся программа на питоне, в которой используется тестируемый класс или функция

  3. В файл с эталонным выводом попадает результат этого print()

Пример:

  • prog.py

       1 class C:
       2         A = 100500
       3         def fun(self, other):
       4                 return self.A+other
       5 
       6 import sys
       7 exec(sys.stdin.read())
    
  • check/1.in

    print(C().A+42-C().fun(33))
  • check/1.out

    9

LecturesCMC/PythonIntro2024/Prac/RepoStruct (последним исправлял пользователь FrBrGeorge 2024-09-02 22:07:25)