Задачник · модуль 1 · Данные и имена

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

Задачи 1.8

1.8

Задачи к главе
«Операции деления»

Пара // и % решает удивительно много прикладных задач: цифры числа, сдача, время на часах, автобусы для группы и даже номер подъезда по номеру квартиры.

Глава справочника
1.8 Операции деления: /, // и %
Можно использовать
главы 1.1–1.8
Разборов
3 с решением
Практика
16 задач без решения
Уже изучено — этим и решаем

Условий и циклов пока нет — они в модулях 2 и 3. Все задачи решаются последовательностью строк сверху вниз. Делитель во всех задачах не равен нулю — проверять это научимся в модуле 2.

§1Разборы: как решать и оформлять

Три задачи решены полностью. Смотрите не только на ответ, но и на оформление: исходные данные сверху, расчёт отдельными строками с понятными именами, вывод — в конце.

Разбор 1

Число задом наперёд

★☆☆базовая

Для игры «перевёртыши» нужно по трёхзначному числу получить его цифры и число, записанное теми же цифрами в обратном порядке.

Как рассуждаем

  1. Сотни: отрезаем две последние цифры — number // 100.
  2. Десятки: отрезаем последнюю цифру и берём последнюю у того, что осталось, — number // 10 % 10. Единицы: number % 10.
  3. Собираем новое число по разрядам: единицы становятся сотнями — units * 100 + tens * 10 + hundreds.
main.pyрешение
# Ввод
number = int(input("Трёхзначное число: "))

# Цифры
hundreds = number // 100
tens = number // 10 % 10
units = number % 10

# Число наоборот
reversed_number = units * 100 + tens * 10 + hundreds

# Вывод
print("Цифры:", hundreds, tens, units)
print("Наоборот:", reversed_number)
Вывод в терминалсиним — то, что ввёл пользователь
Трёхзначное число: 254
Цифры: 2 5 4
Наоборот: 452

Проверка на других данных

Пример 1
Ввод
120
Вывод
Цифры: 1 2 0
Наоборот: 21
Куда делся ноль

Из 120 получилось 21, а не 021: у числа не бывает ведущих нулей. Программа права — это свойство чисел, а не ошибка.

Разбор 2

Сдача монетами

★★☆средняя

Автомат выдаёт сдачу монетами по 10, 5, 2 и 1 рублю — сначала крупными. Сколько монет каждого номинала он выдаст?

Как рассуждаем

  1. Сколько монет по 10 — сколько раз 10 помещается в сдаче: //. Что осталось выдать — %.
  2. С остатком повторяем то же для 5, затем для 2. Последний остаток — монеты по 1.
  3. Каждый шаг работает с тем, что осталось после предыдущего, — поэтому остаток хранится в своей переменной.
main.pyрешение
# Ввод
change = int(input("Сдача, руб.: "))

# Расчёт: от крупных монет к мелким
coins_10 = change // 10
rest = change % 10
coins_5 = rest // 5
rest = rest % 5
coins_2 = rest // 2
coins_1 = rest % 2

# Вывод
print("По 10 руб.:", coins_10)
print("По 5 руб.:", coins_5)
print("По 2 руб.:", coins_2)
print("По 1 руб.:", coins_1)
Вывод в терминалсиним — то, что ввёл пользователь
Сдача, руб.: 38
По 10 руб.: 3
По 5 руб.: 1
По 2 руб.: 1
По 1 руб.: 1

Проверка на других данных

Пример 1
Ввод
9
Вывод
По 10 руб.: 0
По 5 руб.: 1
По 2 руб.: 2
По 1 руб.: 0
Проверка суммой

38 = 3 × 10 + 1 × 5 + 1 × 2 + 1 × 1. Сложите монеты обратно — если сумма сошлась, расчёт верный.

Разбор 3

Чётный ли номер рейса

★★☆средняя

Авиакомпания отправляет чётные рейсы с терминала A, а на рейсы с номером, кратным 5, дарит напиток. Программа выводит остаток от деления номера на 2 и оба признака.

Как рассуждаем

  1. Чётность — остаток от деления на 2: у чётного числа он равен 0.
  2. Кратность 5 — остаток от деления на 5 равен 0. Сравнение из главы 1.7 превращает остаток в ответ True или False.
  3. Сохраняем признаки в переменные с именами-вопросами.
main.pyрешение
# Ввод
flight = int(input("Номер рейса: "))

# Проверки
remainder = flight % 2
is_even = remainder == 0
gift = flight % 5 == 0

# Вывод
print("Остаток от деления на 2:", remainder)
print("Терминал A:", is_even)
print("Напиток в подарок:", gift)
Вывод в терминалсиним — то, что ввёл пользователь
Номер рейса: 1250
Остаток от деления на 2: 0
Терминал A: True
Напиток в подарок: True

Проверка на других данных

Пример 1
Ввод
733
Вывод
Остаток от деления на 2: 1
Терминал A: False
Напиток в подарок: False
Приоритет

В flight % 5 == 0 сначала считается остаток, потом сравнение — арифметика выполняется раньше сравнений.

§2Задачи для самостоятельной работы

Решений здесь нет — только условие и примеры, на которых решение нужно проверить. Сложность отмечена звёздами: ★☆☆ — прямое применение главы, ★★☆ — нужно собрать несколько шагов, ★★★ — есть подвох или требуется догадка.

Задача 1.8.1

Сумма цифр двузначного числа

★☆☆базовая

Вводится двузначное число. Выведите его цифру десятков, цифру единиц и их сумму.

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

Пример 1
Ввод
47
Вывод
Десятков: 4
Единиц: 7
Сумма цифр: 11
Пример 2
Ввод
90
Вывод
Десятков: 9
Единиц: 0
Сумма цифр: 9
Подсказка

Десятки отрезаются делением на 10, единицы остаются в остатке.

Задача 1.8.2

Переставить цифры

★☆☆базовая

Вводится двузначное число. Выведите число, в котором его цифры переставлены местами.

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

Пример 1
Ввод
47
Вывод
74
Пример 2
Ввод
50
Вывод
5
Пример 3
Ввод
11
Вывод
11
Подсказка

Единицы становятся десятками: умножьте их на 10 и прибавьте старые десятки.

Задача 1.8.3

Последняя цифра номера

★☆☆базовая

Для розыгрыша нужна последняя цифра номера заказа. Вводится номер, выведите его последнюю цифру.

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

Пример 1
Ввод
58213
Вывод
Последняя цифра: 3
Пример 2
Ввод
40
Вывод
Последняя цифра: 0
Подсказка

Остаток от деления на 10.

Задача 1.8.4

Номер без последней цифры

★☆☆базовая

Вводится номер телефона без кода страны — целым числом. Выведите номер без последней цифры и отдельно последние две цифры.

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

Пример 1
Ввод
9001234567
Вывод
Без последней цифры: 900123456
Последние две цифры: 67
Пример 2
Ввод
5550102
Вывод
Без последней цифры: 555010
Последние две цифры: 2
Подсказка

// отрезает цифры с конца, % оставляет их.

Задача 1.8.5

Билет с подарком

★☆☆базовая

В кинотеатре дарят попкорн по билетам, номер которых делится на 3. Вводится номер билета, выведите признак подарка.

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

Пример 1
Ввод
123
Вывод
Попкорн в подарок: True
Пример 2
Ввод
124
Вывод
Попкорн в подарок: False
Подсказка

Кратность — остаток, равный нулю.

Задача 1.8.6

Контрольная сумма артикула

★★☆средняя

На складе трёхзначный артикул проверяют так: считают сумму и произведение его цифр. Выведите обе величины.

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

Пример 1
Ввод
254
Вывод
Сумма цифр: 11
Произведение цифр: 40
Пример 2
Ввод
907
Вывод
Сумма цифр: 16
Произведение цифр: 0
Подсказка

Сначала выделите три цифры в три переменные, потом считайте.

Задача 1.8.7

Что показывают часы

★★☆средняя

С начала суток прошло n секунд. Выведите, сколько полных часов прошло, сколько полных минут прошло с начала текущего часа и сколько секунд — с начала текущей минуты.

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

Пример 1
Ввод
12307
Вывод
Часов: 3
Минут с начала часа: 25
Секунд с начала минуты: 7
Пример 2
Ввод
86399
Вывод
Часов: 23
Минут с начала часа: 59
Секунд с начала минуты: 59
Пример 3
Ввод
59
Вывод
Часов: 0
Минут с начала часа: 0
Секунд с начала минуты: 59
Подсказка

Минуты с начала часа — это минуты в остатке после полных часов.

Задача 1.8.8

Автобусы для экскурсии

★★☆средняя

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

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

Пример 1
Ввод
130
45
Вывод
Полных автобусов: 2
Не поместились в полные: 40
Нужно заказать: 3
Пример 2
Ввод
90
45
Вывод
Полных автобусов: 2
Не поместились в полные: 0
Нужно заказать: 2
Пример 3
Ввод
10
45
Вывод
Полных автобусов: 0
Не поместились в полные: 10
Нужно заказать: 1
Подсказка

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

Задача 1.8.9

Сумма цифр года

★★☆средняя

Вводится четырёхзначный год. Выведите сумму его цифр.

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

Пример 1
Ввод
2026
Вывод
Сумма цифр: 10
Пример 2
Ввод
1999
Вывод
Сумма цифр: 28
Подсказка

Для каждой цифры: отрезать всё справа от неё, затем взять последнюю.

Задача 1.8.10

Переставить первые две цифры

★★☆средняя

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

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

Пример 1
Ввод
254
Вывод
524
Пример 2
Ввод
109
Вывод
19
Подсказка

Разберите число на цифры и соберите заново по разрядам. Во втором примере первая цифра станет нулём.

Задача 1.8.11

День недели через n дней

★★☆средняя

Дни недели пронумерованы от 0 (понедельник) до 6 (воскресенье). Вводятся номер сегодняшнего дня и число дней n. Выведите номер дня недели через n дней.

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

Пример 1
Ввод
0
10
Вывод
Номер дня: 3
Пример 2
Ввод
5
2
Вывод
Номер дня: 0
Пример 3
Ввод
3
365
Вывод
Номер дня: 4
Подсказка

Каждые 7 дней неделя повторяется — нужен остаток.

Задача 1.8.12

Какой месяц

★★☆средняя

С начала года прошло n полных месяцев (n может быть больше 12 — прошло несколько лет). Выведите номер текущего месяца от 1 до 12.

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

Пример 1
Ввод
3
Вывод
Месяц: 4
Пример 2
Ввод
11
Вывод
Месяц: 12
Пример 3
Ввод
25
Вывод
Месяц: 2
Подсказка

Остаток от деления на 12 даёт число от 0 до 11, а месяцы нумеруются с 1.

Задача 1.8.13

Число в зеркале

★★☆средняя

Вводится четырёхзначное число. Выведите число, записанное теми же цифрами в обратном порядке.

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

Пример 1
Ввод
1234
Вывод
4321
Пример 2
Ввод
2026
Вывод
6202
Пример 3
Ввод
5000
Вывод
5
Подсказка

Как в разборе с трёхзначным числом, только разрядов четыре.

Задача 1.8.14

Какой подъезд и этаж

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

В доме на каждом этаже одинаковое число квартир и во всех подъездах одинаковое число этажей; квартиры нумеруются подряд с первого подъезда и первого этажа. Вводятся номер квартиры, квартир на этаже и этажей в подъезде. Выведите номер подъезда и этажа.

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

Пример 1
Ввод
87
4
9
Вывод
Подъезд: 3
Этаж: 4
Пример 2
Ввод
36
4
9
Вывод
Подъезд: 1
Этаж: 9
Пример 3
Ввод
1
4
9
Вывод
Подъезд: 1
Этаж: 1
Подсказка

Нумерация с единицы мешает делению. Считайте от нуля: вычтите 1 из номера квартиры, а к найденным подъезду и этажу прибавьте 1. Сначала узнайте, сколько квартир в одном подъезде.

Задача 1.8.15

Счастливый билет

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

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

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

Пример 1
Ввод
385916
Вывод
Сумма первых трёх: 16
Сумма последних трёх: 16
Счастливый: True
Пример 2
Ввод
123456
Вывод
Сумма первых трёх: 6
Сумма последних трёх: 15
Счастливый: False
Подсказка

Шесть цифр — шесть выражений. Удобно сначала отрезать лишнее справа, потом взять последнюю цифру.

Задача 1.8.16

Время прибытия

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

Поезд отправляется в h часов m минут и едет t минут. Выведите время прибытия в формате «часы:минуты» (минуты без ведущего нуля, как в примерах). После полуночи часы начинаются с 0.

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

Пример 1
Ввод
9
30
45
Вывод
10:15
Пример 2
Ввод
22
40
95
Вывод
0:15
Пример 3
Ввод
23
0
1510
Вывод
0:10
Подсказка

Переведите время отправления в минуты, прибавьте поездку и разложите обратно. Часы нужно «завернуть» по кругу из 24.

§3Как проверить своё решение

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

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

Задачи к главе 1.8 · Операции деления · Задачник по Python Автор: Макаров Максим Николаевич