Python: Как мы проверяем ваши решения
Наш сайт автоматически проверяет ваши решения. Как это работает?
В самом простом случае проверка запускает ваш код и сравнивает вывод на экран с ожидаемым результатом. Например, если задание звучит так: "Выведите число 10 на экран", то ваш код на Python может выглядеть так:
print(10)Проверка запустит этот код и убедится, что на экране действительно появилось 10. Если вывод совпадает с ожидаемым, решение засчитывается. Иначе вы увидите ошибку:
E AssertionError: assert '9' == '10'
E
E - 10
E + 9Строка с + показывает фактический результат, который вернул ваш код, а строка с - ожидаемое значение.
В следующих, более сложных уроках вы будете писать функции. Они принимают данные и возвращают результат. В таких задачах проверка работает немного иначе: она вызывает вашу функцию с разными аргументами и заранее знает, какой ответ должен получиться в каждом случае.
Например, если нужно написать функцию сложения двух чисел, проверка будет передавать ей разные пары чисел и сравнивать результат с правильной суммой. Если во всех случаях ответы совпадут, решение считается верным.
Такой подход называется тестированием, и он используется в реальной разработке. Тесты помогают проверить, правильно ли работает программа, и быстро заметить ошибку после изменений.
Именно поэтому наш сайт говорит "Тесты пройдены", когда вы правильно решили задачу.
Моя ошибка или нет?
Иногда в процессе решения будет казаться, что вы сделали все правильно, но проверка не принимает решение. Подобное случается крайне редко. Тесты автоматически запускаются после каждого изменения, поэтому сломанная проверка обычно не попадает на сайт.
В подавляющем большинстве таких случаев ошибка содержится в коде решения. Она может быть очень незаметной: вместо английской буквы случайно ввели русскую, вместо верхнего регистра использовали нижний или забыли вывести запятую. Бывают и более сложные ситуации. Например, решение работает для одного набора входных данных, но не работает для другого.
Поэтому всегда внимательно читайте условие задачи и вывод тестов. Там почти наверняка есть указание на ошибку.
Если же вы уверены, что проблема в задании или нашли неточность, напишите в наше сообщество, в канал 'Обратная связь'.
Задание
Выведите на экран число 10 по примеру из теории. Проверьте как работает система тестирования, попробуйте вывести что-нибудь другое и посмотрите на вывод. Это поможет научиться его распознавать и правильно анализировать.
Полезное
Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект
Если вы зашли в тупик, то самое время поговорить с нашим асситентом Тота во вкладке "ИИ-помощник":
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Это нормально 🙆, в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи. В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в обратной связи нашего сообщества
Ваше упражнение проверяется по этим тестам
import runpy
def test(capsys):
expected = "10"
runpy.run_module('solution')
out, _ = capsys.readouterr()
assert out.strip() == expectedРешение учителя откроется через:
20:00
