Проверить программы онлайн · файлы остаются в браузере

Служба доставки — практикум

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

Как это проверяется. Программы проверяет не учитель глазами, а оболочка Проверка.bat из общей папки: она запускает каждое решение на семи разных наборах данных и сравнивает вывод с правильным. Поэтому программа должна работать при любых входных данных, а не только при тех, что в примере. Интернет для проверки не нужен.

Часть 1. Разминка: предскажи вывод

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

0 верно из 6

Часть 2. Тариф

Все пять программ считают по одному и тому же тарифу. Держи его перед глазами — он понадобится в каждом задании.

ЧтоСколько
Подача курьера150 руб.
За каждый километр12 руб.
За каждый килограмм20 руб.
Ночью, с 22:00 до 05:59вся сумма умножается на 1,4
Если вышло меньше 200 руб.доставка всё равно стоит 200 руб.

Правила, одинаковые для всех пяти заданий

Часть 3. Пять заданий

Задание 1 Приветствие клиента

Программа получает две строки: имя клиента и город. Она должна поздороваться и назвать город.

Вход

Анна
Пермь

Вывод

Здравствуйте, Анна!
Доставка в город Пермь.

Проверяется: код, код, f-строка, точность вывода до знака препинания.

Если застрял

Чтобы подставить значение переменной в текст, перед кавычками ставится буква код, а само значение пишется в фигурных скобках:

фрагмент программы — набери его сам

Обрати внимание на точку в конце второй строки — она тоже часть ответа.

Задание 2 Время в пути

Диспетчер знает, сколько минут займёт доставка. Программа получает одно целое число — минуты — и переводит его в часы и минуты.

Вход

135

Вывод

Доставка: 2 ч 15 мин

Если часов не набралось, всё равно печатай оба числа: код → код.

Проверяется: код и код. Оператор код здесь не подойдёт — он даёт дробное число.

Если застрял

код — сколько целых часов помещается в код минутах. код — что осталось сверх целых часов. Проверь на бумаге: код, код.

Задание 3 Стоимость заказа

Программа получает в одной строке через пробел расстояние в километрах (целое) и вес в килограммах (может быть дробным, например код). Считает стоимость по тарифу — пока без ночной надбавки и без минимума.

Вход

10 3

Вывод

Стоимость: 330.00 руб.

Ровно два знака после точки, даже если копеек нет: не код и не код, а код. Деньги пишут так всегда.

Проверяется: разбор строки на два значения, код против код, формат код.

Если застрял

Два значения из одной строки берутся так:

фрагмент программы — набери его сам

Без код и код это останутся строки, и код вызовет ошибку. Два знака после точки: код.

Задание 4 Ночной тариф и минимум

К предыдущей программе добавляется третье число — час отправления (целое от 0 до 23). Ночью, с 22:00 до 05:59, вся сумма умножается на 1,4. И какой бы дешёвой ни вышла доставка, меньше 200 руб. она не стоит. Сначала печатается тариф, потом стоимость.

Вход

10 3 23

Вывод

Тариф: ночной
Стоимость: 462.00 руб.

Вход

1 1 12

Вывод

Тариф: дневной
Стоимость: 200.00 руб.

Во втором примере по тарифу вышло 182 руб., но сработал минимум.

Проверяется: код, составное условие, порядок действий — надбавка раньше минимума.

Если застрял

«Ночь» — это два отрезка суток сразу, и союз между ними «или»:

фрагмент программы — набери его сам

Запись код не работает: не бывает числа, которое одновременно не меньше 22 и не больше 6. Такое условие никогда не выполнится, и ночного тарифа у тебя просто не будет.

И подумай, что идёт раньше: сначала умножить на 1,4, а потом сравнить с 200, или наоборот. Ответ есть в условии.

Задание 5 На сколько хватит денег

Задача наоборот. У клиента есть бюджет, и он хочет знать, на какое расстояние его хватит. Программа получает в одной строке бюджет (целое число рублей) и вес (может быть дробным) и печатает наибольшее целое число километров, при котором дневная доставка ещё укладывается в бюджет. Если не хватает даже на минимальную — так и сказать.

Вход

1000 5

Вывод

Хватит на 62 км

Вход

150 1

Вывод

Не хватает даже на минимальную доставку

Проверяется то, ради чего затевался урок: подобрать исходные данные под требуемый результат. Ночного тарифа здесь нет — считай по дневному.

Если застрял

Разверни формулу. Стоимость — это код. Если она должна уложиться в бюджет, то код не больше, чем код. Отсюда километры и находятся — только их надо округлить вниз: на «62 с половиной километра» никто не поедет.

И проверь отдельно случай, когда денег не хватает даже на минимальную доставку в 200 руб. — тогда километров нет вообще.

Часть 4. Когда программа не работает

Это нормальная часть работы, а не провал. Порядок действий такой.

  1. Прочитай последнюю строку ошибки. Она называет тип: ValueError — не смог превратить в число, TypeError — попытался сложить строку с числом, IndentationError — сбит отступ.
  2. Проверь, что пришло на вход. Временно вставь print(km, kg) сразу после чтения — увидишь, что программа прочитала на самом деле. Это и есть отладочный вывод; перед сдачей его убирают.
  3. Посчитай пример руками и сравни с тем, что вывела программа. Расходится — ошибка в формуле, а не в Python.
  4. Отладчик — когда всё вышеперечисленное не помогло. Инструкция ниже.

Отладчик IDLE за шесть шагов

Отладчик не находит ошибку и не исправляет её. Он делает другое: показывает, что происходит на самом деле — какие значения у переменных и по какой ветке пошла программа. Вывод делаете вы.

  1. Перейди в главное окно IDLE — то, где приглашение >>>. Отладчик включается там, а не в окне с программой.
  2. Меню Debug → Debugger. Откроется окошко Debug Control, а в Shell появится [DEBUG ON].
  3. Поставь в этом окошке галочки Locals и Globals — без них значений переменных видно не будет.
  4. Вернись в окно с программой и нажми F5. Программа остановится на первой строке и будет ждать.
  5. Дальше — кнопками в Debug Control:
    • Step — выполнить одну строку и снова остановиться;
    • Over — то же, но не заходя внутрь функции;
    • Out — доработать функцию и встать после выхода из неё;
    • Go — бежать до точки останова или до конца;
    • Quit — прервать программу.
    После каждого шага смотри список Locals: там живые значения переменных прямо сейчас.
  6. Закончил — выключи: Debug → Debugger ещё раз. Пока отладчик включён, любой запуск идёт по шагам — забыв про это, легко решить, что «программа сломалась».
Точка останова — чтобы не жать Step по сто раз. Щёлкни по нужной строке правой кнопкой → Set Breakpoint, строка станет жёлтой. Теперь Go домчит программу прямо до неё и остановится перед выполнением этой строки. Убрать — правой кнопкой → Clear Breakpoint.
Пример: ищем ошибку в ночном тарифе

Программа считает по дневному тарифу, хотя час ночной. Ставим точку останова на строку с if:

фрагмент программы — набери его сам

Запускаем, вводим 10 3 23, жмём Go. Программа встаёт на строке if. Смотрим Locals: h = 23 — значит час прочитан правильно, и он ночной.

Жмём Step — и программа перескакивает сразу на print, минуя умножение. Условие оказалось ложным при правильном h. Вот теперь видно, что дело не в данных, а в самой записи условия — и можно вспомнить, что «ночь» это два куска суток и союз между ними «или».

Данные при отладке набираются в главном окне IDLE — там же, где приглашение >>>.

Часть 5. Сдача

  1. Проверь, что файлы называются zadanie1.py … zadanie5.py и лежат в твоей папке.
  2. В общей папке двойной щелчок по Проверка.bat — откроется окно.
  3. Нажми «Найти мои файлы», затем «Проверить всё».
  4. Покажи учителю экран с итогом.
Если вместо окна открылся текст программы — значит файл открылся в IDLE как обычный код. Ничего страшного: нажми F5, и окно появится. Так же можно запустить и checker.py напрямую.

Оболочка показывает не только «принято / не принято», но и на каких данных программа ошиблась и что должна была вывести. Это подсказка — исправляй и запускай проверку снова, попыток сколько угодно.

Подсказка: ввод, вывод и ветвление

Пять этапов решения задачи на компьютере

  1. постановка — что дано и что требуется получить;
  2. модель — какими величинами это описать;
  3. алгоритм — порядок действий;
  4. программа — запись алгоритма на языке;
  5. отладка и анализ — проверить там, где ответ известен заранее.

Ввод: input() всегда даёт строку

фрагмент программы — набери его сам

Забыл код — и код даст код, а не 5: плюс склеивает строки, а не складывает.

Вывод: f-строка и точность

фрагмент программы — набери его сам

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

Целые части: // и %

фрагмент программы — набери его сам

Ветвление и составное условие

фрагмент программы — набери его сам

код — верно и то, и другое; код — хотя бы одно. Порядок проверок — часть условия: ночная надбавка считается раньше минимума, поменяешь местами — изменится ответ.

Обратная задача

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

Материалы подготовлены с использованием технологий искусственного интеллекта.