Задачник · подготовка к контрольной работе · модуль 1

Справочник по Python · задачник · модуль 1

Главы 1.1–1.9

КР

Подготовка к контрольной
работе по главам 1.1–1.9

На странице три варианта по 10 задач. Задачи с одинаковым номером во всех вариантах проверяют одну и ту же тему, поэтому варианты равны по сложности. Решений нет, есть условие, примеры ввода и вывода, список глав для повторения и подсказка.

Главы справочника
1.1–1.9
Вариантов
3
Задач в варианте
10
Сложность
задачи 1–3 ★☆☆, 4–9 ★★☆, 10 ★★★
Что можно использовать

Условий и циклов в контрольной нет: каждая задача решается последовательностью строк сверху вниз. Данные вводятся с клавиатуры через input(), каждое значение отдельной строкой.

§0Что проверяет каждая задача

По строке таблицы видно, какие задачи трёх вариантов проверяют одну тему. Название задачи ведёт к её условию.

№Что проверяет задачаВариант 1Вариант 2Вариант 3
1Переменные и расчёт по формулеПоездка на таксиСтипендия за семестрОплата хостинга
2Типы данных, int(), str(), len()Число из строки вводаПроверка пароляМетка для коробки
3F-строкаСтрока заказаКарточка студентаСтрока журнала событий
4Параметры sep и endАдрес страницыТабло тренировкиIP-адрес и порт
5Ввод и преобразование int(), float()Бензин на поездкуТетради и ручкиВремя загрузки файла
6Множественное присваиваниеШаги за три дняДежурство в кабинетеВерсии документа
7Сравнения и составное присваиваниеСнятие наличныхПроходной баллМесто на диске
8Операции // и %Длительность видеоЧетырёхзначный ПИН-кодУпаковка на складе
9round() и формат .NfЦена по карте лояльностиСредний результат забегаРейтинг приложения
10Задача на несколько темТакси для группыКонец учебного дняЗагрузка резервной копии

§1Вариант 1

Задача 1

Поездка на такси

★☆☆базовая

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

Примеры для проверки

Пример 1
Ввод
99
25
12
Вывод
Стоимость поездки: 399 руб.
Пример 2
Ввод
150
30
1
Вывод
Стоимость поездки: 180 руб.
Подсказка

Сначала посчитайте стоимость в отдельную переменную, потом выведите её через print() с запятыми.

Задача 2

Число из строки ввода

★☆☆базовая

Пользователь вводит целое число. Выведите тип значения, которое вернул input(), тип значения после int(), количество цифр во введённом числе, само число, умноженное на 2, и введённую строку, повторённую два раза.

Примеры для проверки

Пример 1
Ввод
25
Вывод
<class 'str'>
<class 'int'>
Цифр: 2
Число × 2: 50
Строка × 2: 2525
Пример 2
Ввод
1000
Вывод
<class 'str'>
<class 'int'>
Цифр: 4
Число × 2: 2000
Строка × 2: 10001000
Подсказка

Сохраните ввод в одну переменную, а результат int() — в другую. Количество цифр считается по строке, а удвоение — по числу.

Задача 3

Строка заказа

★☆☆базовая

Интернет-магазин печатает строку заказа. Вводятся название товара, цена за штуку и количество — цена и количество целые. Выведите одну строку, как в примерах, с помощью f-строки.

Примеры для проверки

Пример 1
Ввод
Кофе
250
3
Вывод
Кофе: 3 шт. по 250 руб. = 750 руб.
Пример 2
Ввод
Флешка
890
1
Вывод
Флешка: 1 шт. по 890 руб. = 890 руб.
Подсказка

Внутри фигурных скобок f-строки пишутся имена переменных. Сумму посчитайте заранее.

Задача 4

Адрес страницы

★★☆средняя

Вводятся домен сайта, раздел и страница. Выведите две строки: адрес страницы, где части разделены косой чертой, и строку навигации «Вы здесь: раздел > страница». Каждую часть выводите отдельным аргументом print(), склеивать строки плюсом нельзя. Слова «Вы здесь:» печатаются отдельным print().

Примеры для проверки

Пример 1
Ввод
shop.ru
catalog
laptops
Вывод
https://shop.ru/catalog/laptops
Вы здесь: catalog > laptops
Пример 2
Ввод
college.ru
students
schedule
Вывод
https://college.ru/students/schedule
Вы здесь: students > schedule
Подсказка

Для первой строки нужен sep="/". Подумайте, что поставить первым аргументом, чтобы после https: получилось две косые черты. Чтобы вторая строка собралась из двух print(), у первого поменяйте end.

Задача 5

Бензин на поездку

★★☆средняя

Водитель планирует поездку. Вводятся расстояние в километрах, расход бензина на 100 км в литрах и цена литра — все целые. Выведите, сколько литров понадобится и сколько они будут стоить.

Примеры для проверки

Пример 1
Ввод
450
8
56
Вывод
Понадобится литров: 36.0
Стоимость бензина: 2016.0 руб.
Пример 2
Ввод
120
10
60
Вывод
Понадобится литров: 12.0
Стоимость бензина: 720.0 руб.
Подсказка

Расход указан на 100 км, поэтому расстояние умножают на расход и делят на 100. Результат деления / всегда дробный.

Задача 6

Шаги за три дня

★★☆средняя

Шагомер хранит число шагов за позавчера и вчера. Вводятся эти два числа, затем число шагов за сегодня. Выведите разницу «вчера минус позавчера» — она может быть отрицательной, если вчера шагов было меньше. Затем одной строкой множественного присваивания сдвиньте дни: вчера становится позавчера, сегодня становится вчера. После сдвига той же формулой выведите разницу ещё раз.

Примеры для проверки

Пример 1
Ввод
6000
7500
9000
Вывод
Прирост вчера: 1500
Прирост сегодня: 1500
Пример 2
Ввод
10000
8000
8500
Вывод
Прирост вчера: -2000
Прирост сегодня: 500
Подсказка

Формула разницы записывается дважды одинаково: yesterday - before. Меняются только значения переменных после сдвига.

Задача 7

Снятие наличных

★★☆средняя

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

Примеры для проверки

Пример 1
Ввод
12000
5000
10000
Вывод
Денег хватает: True
Лимит не превышен: True
Баланс после снятия: 7000
Пример 2
Ввод
3000
5000
10000
Вывод
Денег хватает: False
Лимит не превышен: True
Баланс после снятия: -2000
Пример 3
Ввод
50000
15000
10000
Вывод
Денег хватает: True
Лимит не превышен: False
Баланс после снятия: 35000
Подсказка

Проверки считаются до изменения баланса. Результат сравнения — True или False, его можно сохранить в переменную.

Задача 8

Длительность видео

★★☆средняя

Видеосервис знает длительность ролика в секундах. Выведите её в часах, минутах и секундах, как в примерах.

Примеры для проверки

Пример 1
Ввод
4985
Вывод
1 ч 23 мин 5 с
Пример 2
Ввод
600
Вывод
0 ч 10 мин 0 с
Пример 3
Ввод
7322
Вывод
2 ч 2 мин 2 с
Подсказка

В часе 3600 секунд. Минуты считаются из того, что осталось после полных часов.

Задача 9

Цена по карте лояльности

★★☆средняя

По карте лояльности действует скидка в процентах. Вводятся цена товара (дробная) и процент скидки (целый). Выведите цену со скидкой с двумя знаками после точки и экономию, округлённую до целых рублей функцией round().

Примеры для проверки

Пример 1
Ввод
1499.9
12
Вывод
Цена по карте: 1319.91 руб.
Экономия, руб.: 180
Пример 2
Ввод
350
5
Вывод
Цена по карте: 332.50 руб.
Экономия, руб.: 18
Подсказка

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

Задача 10

Такси для группы

★★★повышенная

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

Примеры для проверки

Пример 1
Ввод
10
4
450.5
150
Вывод
Машин: 3
Всего: 1351.50 руб.
С каждого: 135.15 руб.
Бюджета хватает: True
10/3
Пример 2
Ввод
8
4
600
150
Вывод
Машин: 2
Всего: 1200.00 руб.
С каждого: 150.00 руб.
Бюджета хватает: True
8/2
Пример 3
Ввод
3
4
520
150
Вывод
Машин: 1
Всего: 520.00 руб.
С каждого: 173.33 руб.
Бюджета хватает: False
3/1
Подсказка

Если хотя бы один студент не поместился в полные машины, нужна ещё одна машина. Без условий это считают так: к числу студентов прибавляют «мест минус один» и делят нацело.

§2Вариант 2

Задача 1

Стипендия за семестр

★☆☆базовая

Студент получает одинаковую стипендию каждый месяц и один раз за семестр — премию за олимпиаду. Вводятся размер стипендии, число месяцев и размер премии — все целые. Выведите сумму за семестр.

Примеры для проверки

Пример 1
Ввод
3200
5
5000
Вывод
За семестр: 21000 руб.
Пример 2
Ввод
2800
4
0
Вывод
За семестр: 11200 руб.
Подсказка

Премия прибавляется один раз, а стипендия умножается на число месяцев.

Задача 2

Проверка пароля

★☆☆базовая

Сайт требует пароль длиной 12 символов. Пользователь вводит пароль (короче 12 символов). Выведите длину пароля, сколько символов не хватает до 12, пароль, скрытый звёздочками, и тип значения длины.

Примеры для проверки

Пример 1
Ввод
qwerty
Вывод
Длина: 6
Не хватает: 6
На экране: ******
<class 'int'>
Пример 2
Ввод
Sun2026
Вывод
Длина: 7
Не хватает: 5
На экране: *******
<class 'int'>
Подсказка

Строку из звёздочек нужной длины даёт умножение строки на число.

Задача 3

Карточка студента

★☆☆базовая

Электронный журнал печатает карточку студента. Вводятся имя, группа и курс (целое число). Обучение длится 4 курса. Выведите две строки, как в примерах, с помощью f-строк: во второй строке — курс и сколько курсов осталось до выпуска.

Примеры для проверки

Пример 1
Ввод
Анна
ИС-21
1
Вывод
Студент: Анна (группа ИС-21)
Курс: 1, до выпуска: 3
Пример 2
Ввод
Олег
ПР-34
3
Вывод
Студент: Олег (группа ПР-34)
Курс: 3, до выпуска: 1
Подсказка

В фигурных скобках f-строки можно записать не только имя переменной, но и выражение.

Задача 4

Табло тренировки

★★☆средняя

Табло спортзала показывает время старта тренировки. Вводятся часы, минуты и секунды (все двузначные). Выведите строку «Старт: часы:минуты:секунды» двумя вызовами print(): первый печатает слово «Старт:», второй — время. Затем выведите номера трёх подходов через запятую с пробелом.

Примеры для проверки

Пример 1
Ввод
18
30
15
Вывод
Старт: 18:30:15
1, 2, 3
Пример 2
Ввод
10
45
50
Вывод
Старт: 10:45:50
1, 2, 3
Подсказка

Чтобы второй print() продолжил ту же строку, первому нужен параметр end. Двоеточия между частями времени даёт sep.

Задача 5

Тетради и ручки

★★☆средняя

В канцелярском магазине покупают тетради и ручки. Вводятся цена тетради (дробная), количество тетрадей, цена ручки (дробная) и количество ручек. Выведите стоимость тетрадей, стоимость ручек и общую сумму.

Примеры для проверки

Пример 1
Ввод
45.5
4
30
2
Вывод
Тетради: 182.0
Ручки: 60.0
Всего: 242.0
Пример 2
Ввод
60
1
25.5
3
Вывод
Тетради: 60.0
Ручки: 76.5
Всего: 136.5
Подсказка

Цены преобразуйте через float(), количества — через int().

Задача 6

Дежурство в кабинете

★★☆средняя

Три студента дежурят по очереди. Вводятся три имени в порядке дежурства. Каждый день первый в очереди уходит в её конец. Выведите очередь сегодня, завтра и послезавтра. Сдвиг очереди выполните множественным присваиванием.

Примеры для проверки

Пример 1
Ввод
Анна
Борис
Вера
Вывод
Сегодня: Анна Борис Вера
Завтра: Борис Вера Анна
Послезавтра: Вера Анна Борис
Пример 2
Ввод
Ира
Лев
Марк
Вывод
Сегодня: Ира Лев Марк
Завтра: Лев Марк Ира
Послезавтра: Марк Ира Лев
Подсказка

При множественном присваивании правая часть вычисляется целиком до того, как переменные получат новые значения, поэтому временная переменная не нужна.

Задача 7

Проходной балл

★★☆средняя

Для поступления на курс нужно набрать проходную сумму баллов за три экзамена. Вводятся баллы за три экзамена и проходная сумма. Выведите сумму баллов, набрана ли проходная сумма, равны ли баллы за первый и второй экзамен, и разницу «сумма минус проходная» — она может быть отрицательной. Сумму набирайте составным присваиванием.

Примеры для проверки

Пример 1
Ввод
70
65
80
200
Вывод
Сумма: 215
Проходной набран: True
Первый равен второму: False
Разница с проходным: 15
Пример 2
Ввод
60
60
55
190
Вывод
Сумма: 175
Проходной набран: False
Первый равен второму: True
Разница с проходным: -15
Подсказка

Для «не меньше» используется >=, для «равно» — два знака ==.

Задача 8

Четырёхзначный ПИН-код

★★☆средняя

Приложение проверяет ПИН-код из четырёх цифр (первая цифра не ноль). Выведите четыре цифры через пробел, сумму цифр и признак того, что последняя цифра чётная.

Примеры для проверки

Пример 1
Ввод
2468
Вывод
Цифры: 2 4 6 8
Сумма цифр: 20
Последняя чётная: True
Пример 2
Ввод
7031
Вывод
Цифры: 7 0 3 1
Сумма цифр: 11
Последняя чётная: False
Подсказка

Каждая цифра получается так: отрезать лишние цифры справа через //, затем взять последнюю через % 10.

Задача 9

Средний результат забега

★★☆средняя

Бегун пробежал три забега. Вводятся три времени в секундах (дробные). Выведите среднее время с двумя знаками после точки и то же время, округлённое функцией round() до десятых.

Примеры для проверки

Пример 1
Ввод
12.4
12.9
13.1
Вывод
Среднее: 12.80 с
До десятых: 12.8
Пример 2
Ввод
15
14.5
14
Вывод
Среднее: 14.50 с
До десятых: 14.5
Подсказка

Сумму заключите в скобки, иначе на 3 разделится только последнее время.

Задача 10

Конец учебного дня

★★★повышенная

Пары начинаются в заданное время, каждая пара длится 90 минут, между парами перерыв 10 минут. Вводятся час и минута начала первой пары и число пар. Выведите строку «Конец: часы:минуты» двумя вызовами print(), закончатся ли пары не позже 17:00 и сколько часов длится учебный день — с двумя знаками после точки. Во всех примерах минуты окончания двузначные.

Примеры для проверки

Пример 1
Ввод
8
20
4
Вывод
Конец: 14:50
Не позже 17:00: True
Учебный день: 6.50 ч
Пример 2
Ввод
9
0
3
Вывод
Конец: 13:50
Не позже 17:00: True
Учебный день: 4.83 ч
Пример 3
Ввод
10
15
5
Вывод
Конец: 18:25
Не позже 17:00: False
Учебный день: 8.17 ч
Подсказка

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

§3Вариант 3

Задача 1

Оплата хостинга

★☆☆базовая

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

Примеры для проверки

Пример 1
Ввод
500
290
12
Вывод
Всего к оплате: 3980 руб.
Пример 2
Ввод
0
450
3
Вывод
Всего к оплате: 1350 руб.
Подсказка

Умножение выполняется раньше сложения, поэтому скобки здесь не нужны.

Задача 2

Метка для коробки

★☆☆базовая

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

Примеры для проверки

Пример 1
Ввод
cable
40
Вывод
cable-40
Длина метки: 8
<class 'int'>
--------
Пример 2
Ввод
mouse
7
Вывод
mouse-7
Длина метки: 7
<class 'int'>
-------
Подсказка

Строку с числом сложить нельзя: сначала превратите число в строку функцией str().

Задача 3

Строка журнала событий

★☆☆базовая

Программа записывает события в журнал. Вводятся уровень события, имя модуля и текст сообщения. Выведите строку журнала, как в примерах, с помощью f-строки.

Примеры для проверки

Пример 1
Ввод
ERROR
auth
неверный пароль
Вывод
[ERROR] auth: неверный пароль
Пример 2
Ввод
INFO
backup
копия создана
Вывод
[INFO] backup: копия создана
Подсказка

Квадратные скобки и двоеточие — обычные символы строки, они пишутся в f-строке как есть.

Задача 4

IP-адрес и порт

★★☆средняя

Вводятся четыре числа IP-адреса и номер порта. Выведите адрес в виде «числа через точку:порт» двумя вызовами print(): первый печатает четыре числа, второй — порт. Затем выведите те же четыре числа через пробел.

Примеры для проверки

Пример 1
Ввод
192
168
1
10
8080
Вывод
192.168.1.10:8080
192 168 1 10
Пример 2
Ввод
10
0
0
1
22
Вывод
10.0.0.1:22
10 0 0 1
Подсказка

У первого print() нужны оба параметра: sep ставит точки между числами, end — двоеточие в конце.

Задача 5

Время загрузки файла

★★☆средняя

Размер файла указан в мегабайтах, скорость интернета — в мегабитах в секунду. В одном байте 8 бит. Вводятся размер файла и скорость — целые. Выведите размер в мегабитах и время загрузки в секундах.

Примеры для проверки

Пример 1
Ввод
700
100
Вывод
Размер, Мбит: 5600
Время загрузки, с: 56.0
Пример 2
Ввод
25
16
Вывод
Размер, Мбит: 200
Время загрузки, с: 12.5
Подсказка

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

Задача 6

Версии документа

★★☆средняя

Редактор хранит текущую и предыдущую версии документа. Вводятся предыдущая версия, текущая версия и новая версия. Выведите обе хранимые версии, затем одной строкой множественного присваивания сохраните новую версию: текущая становится предыдущей, новая становится текущей. Выведите версии ещё раз.

Примеры для проверки

Пример 1
Ввод
v1.0
v1.1
v2.0
Вывод
Было: v1.0 v1.1
Стало: v1.1 v2.0
Пример 2
Ввод
draft
review
final
Вывод
Было: draft review
Стало: review final
Подсказка

Если записать сдвиг двумя обычными присваиваниями, одна версия потеряется. Множественное присваивание делает сдвиг за один шаг.

Задача 7

Место на диске

★★☆средняя

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

Примеры для проверки

Пример 1
Ввод
100
15
4
Вывод
Поместятся: True
Останется, ГБ: 40
Точно впритык: False
Пример 2
Ввод
50
12
5
Вывод
Поместятся: False
Останется, ГБ: -10
Точно впритык: False
Пример 3
Ввод
64
16
4
Вывод
Поместятся: True
Останется, ГБ: 0
Точно впритык: True
Подсказка

Сравнения посчитайте до того, как уменьшите свободное место.

Задача 8

Упаковка на складе

★★☆средняя

Товар упаковывают в коробки одинаковой вместимости. Вводятся число единиц товара и вместимость коробки. Выведите, сколько коробок заполнится полностью, сколько единиц останется и сколько всего коробок нужно, чтобы упаковать всё.

Примеры для проверки

Пример 1
Ввод
125
12
Вывод
Полных коробок: 10
Осталось единиц: 5
Всего коробок: 11
Пример 2
Ввод
96
12
Вывод
Полных коробок: 8
Осталось единиц: 0
Всего коробок: 8
Пример 3
Ввод
5
12
Вывод
Полных коробок: 0
Осталось единиц: 5
Всего коробок: 1
Подсказка

Последнее число без условий считается так: к числу товаров прибавьте «вместимость минус один» и разделите нацело.

Задача 9

Рейтинг приложения

★★☆средняя

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

Примеры для проверки

Пример 1
Ввод
1287
300
Вывод
Рейтинг: 4.3
Округлённо: 4
От максимума: 85.80%
Пример 2
Ввод
37
9
Вывод
Рейтинг: 4.1
Округлённо: 4
От максимума: 82.22%
Подсказка

Формат .1f работает так же, как .2f, только оставляет один знак.

Задача 10

Загрузка резервной копии

★★★повышенная

Резервную копию загружают в облако. Вводятся размер копии в мегабайтах и скорость в мегабитах в секунду — целые. Выведите время загрузки в секундах с одним знаком, это время, округлённое до целых секунд и разложенное на минуты и секунды (строка «минуты мин секунды с»), уложится ли загрузка в 10 минут, то есть займёт ли она не больше 600 секунд, и последней строкой размер и скорость через « | ».

Примеры для проверки

Пример 1
Ввод
3500
50
Вывод
Время: 560.0 с
9 мин 20 с
Уложится в 10 минут: True
3500 | 50
Пример 2
Ввод
10240
100
Вывод
Время: 819.2 с
13 мин 39 с
Уложится в 10 минут: False
10240 | 100
Пример 3
Ввод
3000
40
Вывод
Время: 600.0 с
10 мин 0 с
Уложится в 10 минут: True
3000 | 40
Подсказка

Для деления на минуты нужно целое число секунд: round() без второго аргумента возвращает int.

§4Как готовиться и проверять решения

  1. Решите один вариант целиком без справочника. Засеките время.
  2. Запустите каждую программу и введите значения из колонки «Ввод»: каждое значение отдельной строкой, после каждого Enter.
  3. Сравните вывод с колонкой «Вывод» символ в символ: пробелы, двоеточия, количество знаков после точки. Подсказки input() в примерах не показаны, проверяется только результат.
  4. Прогоните все примеры задачи. Второй и третий пример часто проверяют крайний случай: ноль, отрицательный результат, ровное деление.
  5. Если задача не решилась, откройте главы из строки «Повторить» и задачи к ним, затем решите ту же задачу в другом варианте.
Оформление, которое проверяют

Имена переменных называют смысл: total_cost, а не x. Ввод — вверху, расчёт — отдельными строками, вывод — в конце. Одно и то же выражение не повторяется: результат сохраняется в переменную и дальше используется по имени.

Подготовка к контрольной работе · главы 1.1–1.9 · Задачник по Python Автор: Макаров Максим Николаевич