Как устроен квиз по Python
Квиз — это 10 вопросов, в каждом показан код и 4 варианта вывода. После клика сразу видно «Верно» или «Не совсем» и короткое объяснение, кнопка «Дальше» открывает следующий вопрос, а в конце появляется счёт.
Все программы в квизе по Python настоящие: каждую можно скопировать в окно Python на сайте и убедиться, что вывод совпадает с правильным ответом. Если вариант звучит как «ошибка IndexError», значит, программа не печатает ничего полезного, а останавливается с этой ошибкой. Результаты сохраняются только в вашем браузере и видны на странице прогресса. Код в вопросах оформлен по руководству PEP 8: отступ в 4 пробела и понятные имена, чтобы глаза цеплялись за смысл, а не за оформление.
Главное правило квиза — не запускать код до ответа. Ценность вопроса «что выведет программа» в том, что вы сами выполняете её в голове, строка за строкой. Если сначала запустить, а потом выбрать вариант, тренировки не будет: вы просто сравните две строчки текста. Квиз по Python готовит и к школьным проверкам. Похожий формат есть на экзаменах: в материалах ФИПИ к ОГЭ по информатике есть задания, где нужно понять результат работы короткой программы.
Как читать код глазами: трассировка
Трассировка — это пошаговое выполнение программы на бумаге: вы записываете в таблицу значения переменных после каждой строки. Этот способ подходит для любого вопроса квиза и почти всегда находит ошибку в рассуждении.
Возьмём программу из последнего вопроса, которым заканчивается квиз по Python. В ней переменная total копит сумму, а print стоит внутри цикла. Таблица показывает, что происходит на каждом шаге.
| Шаг | i | total после строки total += i | Что напечатано |
| до цикла | — | 0 | ничего |
| 1 | 1 | 1 | 1 |
| 2 | 2 | 3 | 3 |
| 3 | 3 | 6 | 6 |
Чтобы трассировка работала, соблюдайте 3 правила. Первое: двигайтесь строго по одной строке, не перепрыгивая через «очевидные». Второе: после каждой строки записывайте новое значение, а не держите его в голове. Третье: отдельно отмечайте, что попадает на экран, — ведь вывод и значение переменной не одно и то же. Через несколько недель такой практики таблица становится не нужна, но привычка читать код медленно остаётся.
Ловушка 1: строки и числа
Если значение стоит в кавычках, это строка, даже когда внутри цифры. Для строк операторы + и * работают иначе, чем для чисел: + склеивает, а * повторяет.
print("5" + "7")
print(5 + 7)
print("ха" * 3)
57
12
хахаха
Отсюда ответы на первый и четвёртый вопросы квиза. Особенно коварна эта ловушка в программах с вводом: функция input() всегда возвращает строку, поэтому два введённых числа без int() склеятся. А вот сложить строку с числом, например "5" + 7, не получится вовсе: Python остановится с ошибкой TypeError. Подробнее о типах и их преобразовании рассказывает статья про типы данных Python.
Ловушка 2: три вида деления
В Python 3 оператора деления 3: / даёт дробный результат, // — целую часть, а % — остаток. Путаница между ними — частая причина неверного ответа в квизе.
Выражение 10 / 2 даёт 5.0, а не 5: результат обычного деления всегда имеет тип float, даже если числа делятся нацело. Это поведение описано в официальной документации Python[1], и оно отличается от Python 2, который давно не поддерживается. Пара 17 // 5 и 17 % 5 даёт 3 и 2, потому что 17 = 5 · 3 + 2. Остаток удобно проверять так: умножьте частное на делитель, прибавьте остаток и сравните с исходным числом. Деление на ноль любым из трёх операторов приводит к ошибке ZeroDivisionError. Все операторы с приоритетами собраны в статье про операторы Python с таблицей.
Ловушка 3: индексы, срезы и границы
Индексы в Python начинаются с 0, а правая граница среза и range не входит в результат. Эти 2 правила объясняют больше половины ошибок «на единицу».
s = "питон"
print(s[0], s[-1])
print(s[1:3])
print(list(range(2, 6)))
п н
ит
[2, 3, 4, 5]
Отрицательный индекс считает с конца: -1 — последний символ, -2 — предпоследний. Срез [1:3] берёт элементы с номерами 1 и 2. В списке из трёх элементов последний индекс равен 2, поэтому обращение к items[3] заканчивается ошибкой IndexError — это девятый вопрос квиза. Удобный приём: длина среза [a:b] равна b - a, то есть в [1:3] ровно два символа.
Ловушка 4: что меняет объект, а что нет
Строки в Python неизменяемы, а списки можно менять на месте. Поэтому s.upper() не трогает исходную строку, а b.append(3) меняет список, на который ссылаются сразу два имени.
s = "кот"
s = s.upper()
print(s)
a = [1, 2]
b = a[:]
b.append(3)
print(a, b)
Здесь обе ловушки обезврежены. Результат upper() сохранён обратно в s, и программа печатает «КОТ». А список скопирован срезом a[:], поэтому добавление в b не задевает a: выводится [1, 2] [1, 2, 3]. В квизе было наоборот: b = a не создаёт копию, а лишь даёт тому же списку второе имя. Методы строк подробно разобраны на странице про строки в Python.
Ловушка 5: цепочки сравнений и отступы
Запись 3 < 5 < 4 — это не ошибка, а цепочка сравнений: Python читает её как «3 меньше 5 и 5 меньше 4». Вторая часть ложна, поэтому результат False.
Цепочки удобны для проверки диапазона: 0 <= x <= 100 читается так же, как в математике. Но стоит помнить, что сравнения выполняются попарно, и каждая пара должна быть истинной. Вторая часть ловушки — отступы. Строка с отступом под for выполняется на каждом шаге цикла, строка без отступа — один раз после него. В десятом вопросе print стоит внутри цикла, поэтому на экране три числа, а не одно. Сдвиньте его влево на 4 пробела, и программа напечатает только 6.
Как тренироваться, чтобы был толк
Чтобы вопросы действительно учили, проходите их несколько раз с перерывами в 1–3 дня. Повторная самопроверка закрепляет знания лучше, чем перечитывание объяснений.
Так показали исследования памяти. Roediger и Karpicke обнаружили, что попытка вспомнить ответ сохраняет материал в памяти надёжнее, чем повторное чтение того же текста[2]. Обзор Cepeda и соавторов показал пользу распределённой практики: занятия с паузами между ними дают более прочный результат, чем одно длинное занятие[3]. Отсюда простой план. Пройдите все 10 заданий, выпишите вопросы с ошибками, через день решите их снова без подсказок. Для каждого неверного ответа найдите в разборе выше правило, которое вы нарушили, и придумайте свою программу с тем же подвохом. Ещё 10 вопросов по основам — на странице «Что выведет программа?».
Миф: «Если ответил правильно, значит, тема понятна». Это не подтверждается: правильный ответ можно угадать с вероятностью один к четырём. Проверка простая — объясните вслух, почему остальные три варианта неверны.
Когда такая тренировка не поможет
Вопросы на вывод не помогут научиться писать программы с нуля: он тренирует чтение кода, а не его сочинение. В этих 4 случаях нужен другой формат.
- Ребёнок ещё не написал ни одной программы. Сначала 2–3 занятия с print, input и переменными, потом вопросы на вывод.
- Нужно готовиться к заданию 16 ОГЭ. Там пишут программу целиком, поэтому нужны задачи с автопроверкой, а не выбор из 4 вариантов.
- Ответ выбирают за 1–2 секунды наугад. Без пошагового чтения выбор превращается в лотерею.
- Ученику 7–9 лет, и он учится в Scratch. Текстовый код пока рано читать, лучше блочные задания.
Чего делать нельзя
Нельзя превращать проверку себя в соревнование на скорость: смысл в медленном и точном чтении. Шесть правил помогут извлечь из вопросов максимум.
- Нельзя запускать код до ответа — так пропадает сама тренировка.
- Не стоит проходить вопросы второй раз сразу после первого: вы запомните буквы ответов, а не правила.
- Не следует пропускать объяснения даже после верного ответа — в них бывает деталь, которую вы не знали.
- Не стоит ругать ребёнка за ошибки: неверный ответ показывает, что именно повторить.
- Не допускается гадать, если ответ неочевиден — лучше выписать значения переменных на листок.
- Нельзя ограничиваться одной попыткой: после разбора напишите свою программу с тем же подвохом.
Миф: «Читать чужой код — пустая трата времени, надо сразу писать своё». Этому нет подтверждения: чтобы найти ошибку в собственной программе, нужно уметь мысленно выполнять код. Вопросы на этой странице тренируют именно это умение.
Источники
[1] The Python Tutorial (официальная документация Python 3). Python Software Foundation.
[2] Roediger H. L., Karpicke J. D. Test-enhanced learning: Taking memory tests improves long-term retention // Psychological Science. 2006. Vol. 17, № 3. P. 249–255.
[3] Cepeda N. J., Pashler H., Vul E., Wixted J. T., Rohrer D. Distributed practice in verbal recall tasks: A review and quantitative synthesis // Psychological Bulletin. 2006. Vol. 132, № 3. P. 354–380.
[4] ФИПИ. Методические рекомендации для обучающихся по организации индивидуальной подготовки к ОГЭ 2026 года. Информатика. М., 2026.
Вопросы и ответы
Сколько времени занимает квиз по Python?
Обычно 10–15 минут, если честно выполнять каждую программу в голове. Быстрее не нужно: скорость придёт сама.
С какого класса подходят эти вопросы?
С того момента, когда ученик знаком с переменными, циклом for, строками и списками. По школьной программе это темы 8–9 классов, но многие дети доходят до них раньше.
Почему вывод в браузере и в IDLE может выглядеть по-разному?
Для вопросов этого квиза вывод одинаковый. Отличаться может только текст сообщения об ошибке: в IDLE он длиннее и содержит полный Traceback.
Что делать, если ответил неверно на половину?
Это нормальный результат для первой попытки. Разберите подвохи по разделам выше, запустите каждую программу и попробуйте снова через день.
Можно ли придумать свои вопросы?
Да, и это отличное упражнение. Напишите программу на 3–5 строк с подвохом, предскажите вывод, затем запустите и проверьте себя.
Сохраняется ли результат?
Счёт пройденных тестов хранится в браузере и показывается на странице прогресса. На другом устройстве его не будет.