Тренажёр Python для тестировщиков
Основы языка и ООП, нужные для автотестов: от f-строк и словарей до классов и модулей. Решение проверяется скрытыми тестами.
- Задач
- 80
- Среда
- Python 3.12 в браузере
- Тариф
- Базовый на выбор или Pro

Что тренируем
- Типы данных, переменные, f-строки и операторы: str, int, float, bool, None
- Коллекции: списки, словари, кортежи, множества, срезы и comprehensions
- Условия, циклы и функции: if, for, while, def, lambda, *args и **kwargs
- Классы и ООП: __init__, наследование, super, dataclass, property
- Исключения, import и модули, mutable и immutable, мини-проекты для автотестов
Как устроена проверка
Код выполняется на Python 3.12 прямо в браузере, проверка — скрытыми тестами. Если решение неверное, видно, какой тест упал; к каждой задаче есть подсказка и карточки справочника.
Среда: Python 3.12 в браузере. Всё работает в браузере, устанавливать ничего не нужно.
Уровни и число задач
Четыре уровня. Следующий открывается, когда решена треть задач предыдущего (30 %).
| Уровень | Задач | Открывается |
|---|---|---|
| Простой | 20 | сразу |
| Средний | 20 | после 6 из 20 задач уровня «Простой» |
| Сложный | 20 | после 6 из 20 задач уровня «Средний» |
| Продвинутый | 20 | после 6 из 20 задач уровня «Сложный» |
Примеры задач
По задаче с простого и продвинутого уровней и две со среднего, с условием как в тренажёре. Проверка, подсказки и справочник открываются после регистрации.
- Простой
Приветствие
В заготовке заданы переменные
nameиage. Напечатай две строки:первая —
Привет, <имя>!, вторая —Через год тебе будет <возраст + 1>.Для имени
Мираи возраста7программа должна вывести:Привет, Мира! Через год тебе будет 8 - Средний
Провалившиеся тесты
Напиши функцию
failed_names(results: list[dict]) -> list[str]. Каждый словарь вresultsсодержит ключиnameиstatus. Функция возвращает список имён (по ключуname) тех записей, у которыхstatusравен'failed', — в том же порядке, в каком они шли во входном списке. Например,failed_names([{'name': 'test_a', 'status': 'passed'}, {'name': 'test_b', 'status': 'failed'}])→['test_b']. Для пустого списка, а также если проваленных записей нет, функция возвращает[]. Записи со статусом'skipped'в результат не попадают — только'failed'. - Средний
Счётчик по статусам
Напиши функцию
count_by_status(results: list[dict]) -> dict[str, int]. Каждый словарь вresultsсодержит ключstatus. Функция возвращает словарь: статус → сколько раз он встретился в списке. Например,count_by_status([{'status': 'passed'}, {'status': 'failed'}, {'status': 'passed'}])→{'passed': 2, 'failed': 1}. Для пустого списка — пустой словарь{}. - Продвинутый
Импорт из своего модуля
В файле
helpers.py(вкладка выше) определена функцияslugify(text: str) -> str, которая приводит текст к виду URL-слага: обрезает пробелы по краям, переводит в нижний регистр и заменяет пробелы на дефисы. Она уже импортирована вmain.pyстрокойfrom helpers import slugify. Напиши функциюarticle_url(title: str) -> str, которая возвращаетslugify(title), обёрнутый в путь статьи:/articles/<слаг>. Используй импортированную функциюslugify— не переписывай её логику вручную. Например,article_url('Hello World')→'/articles/hello-world'.
В каком тарифе
Python входит в три тренажёра на выбор в Базовом и во все тренажёры в Pro. Демо открывает всё.
Демо0 ₽
3 дня бесплатно после регистрации, без карты: все тренажёры и справочник
Базовый399 ₽ за 30 дней
Три тренажёра на выбор на 30 дней
Pro999 ₽ за 30 дней
Все тренажёры и Йова