Skip to content

About

Задачи по Python с автотестами: форкните, решите, тесты прогонятся сами

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

Задачи с автотестами

Задачи по Python для подготовки к собеседованиям. К каждой написаны тесты: решение готово, когда они проходят.

Форкните репозиторий, решайте у себя — тесты будут прогоняться автоматически при каждом push.

Разделы

Раздел Задач О чём
strings_lists 10 строки и списки: методы языка, без алгоритмических приёмов

Разделы добавляются по мере работы.

Как начать

  1. Нажмите Fork — появится ваша копия репозитория.

  2. Склонируйте её себе:

    git clone https://github.com/ВАШ-ЛОГИН/teaching-tasks.git
    cd teaching-tasks
  3. Поставьте pytest:

    pip install -r requirements.txt
  4. Запустите тесты — сейчас все падают, и это нормально:

    pytest

Как решать

Задачи лежат в tasks/<раздел>/tasks.py. Каждая функция описана в докстроке: что принимает, что возвращает, какая ожидается сложность. Вместо тела стоит raise NotImplementedError — замените его своим кодом.

Решайте по одной. После каждой запускайте тесты только для неё:

pytest -k count_words

Весь раздел целиком:

pytest tests/strings_lists

Когда всё зелёное, отправьте изменения к себе:

git add tasks/
git commit -m "Решение: count_words"
git push

После push тесты прогонятся на GitHub — вкладка Actions в вашем форке. Зелёная галочка рядом с коммитом означает, что всё сошлось.

Пока задачи не решены, там будет красный крест: тесты падают с NotImplementedError. Это стартовое состояние, а не поломка.

Раздел «Строки и списки»

Базовый уровень: работа с методами языка, без указателей, скользящего окна и префиксных сумм. Сложность указана к каждой задаче — на собеседовании вопрос о ней идёт следом за рабочим решением.

Задача Функция Сложность
Количество слов в строке count_words O(n)
Сумма всех чисел в строке sum_numbers O(n)
Удалить гласные remove_vowels O(n)
Самое длинное слово longest_word O(n)
Каждое слово с большой буквы capitalize_words O(n)
Второй максимум second_max O(n), один проход
Убрать дубликаты, сохранив порядок dedup O(n)
Частота символов char_freq O(n), без Counter
Общие элементы двух списков common O(n + m + k log k)
k наибольших элементов top_k O(n log n)

Первые пять — на владение методами. Последние пять требуют держать дополнительное состояние: счётчик, множество встреченного, две переменные вместо одной.

Порядок работы

Сначала проговорите решение словами, потом пишите код, потом запускайте тесты. Упавший тест показывает пробел точнее любого объяснения: посмотрите, на каком входе он падает, и разберитесь почему.

Если тесты не запускаются

  • ModuleNotFoundError: No module named 'tasks' — запускайте pytest из корня репозитория: путь импорта задаётся в pytest.ini.
  • pytest: command not found — не установлен pytest, см. шаг 3.
  • Python старее 3.10 не поймёт запись int | None в аннотациях. Проверьте версию: python3 --version.

About

Задачи по Python с автотестами: форкните, решите, тесты прогонятся сами

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages