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

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

Задачи 1.9

1.9

Задачи к главе
«round() и формат .2f»

Два инструмента для «некрасивых» дробей: round() даёт округлённое число для дальнейших расчётов, формат :.2f — аккуратный текст для вывода. В задачах важно выбрать нужный.

Глава справочника
1.9 round() и формат .2f
Можно использовать
главы 1.1–1.9
Разборов
3 с решением
Практика
16 задач без решения
Уже изучено — этим и решаем

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

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

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

Разбор 1

Средняя оценка в электронном журнале

★☆☆базовая

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

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

  1. Среднее считаем один раз и не округляем — точное значение пригодится.
  2. round(average, 1) возвращает новое число — оно не меняет average.
  3. :.2f — только вид в выводе: всегда два знака, даже нули.
main.pyрешение
# Ввод
a = int(input("Оценка 1: "))
b = int(input("Оценка 2: "))
c = int(input("Оценка 3: "))

# Расчёт
average = (a + b + c) / 3

# Вывод
print("Точно:", average)
print("До десятых:", round(average, 1))
print(f"Два знака: {average:.2f}")
Вывод в терминалсиним — то, что ввёл пользователь
Оценка 1: 5
Оценка 2: 4
Оценка 3: 4
Точно: 4.333333333333333
До десятых: 4.3
Два знака: 4.33

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

Пример 1
Ввод
3
4
5
Вывод
Точно: 4.0
До десятых: 4.0
Два знака: 4.00
Число или текст

round() вернул float — с ним можно считать дальше. F-строка вернула бы текст. Во втором примере видно различие: round(4.0, 1) — это 4.0, а формат даёт 4.00.

Разбор 2

Счёт с НДС

★★☆средняя

Поставщик выставляет счёт: цена единицы без НДС и количество. Выведите сумму без налога, НДС 20% и итог — всё в рублях с копейками.

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

  1. Все промежуточные суммы считаем без округления — чтобы не накапливать ошибку.
  2. НДС — 20% от суммы: subtotal * 0.2.
  3. Округляем только при выводе: формат :.2f в каждой строке.
main.pyрешение
# Ввод
price = float(input("Цена без НДС, руб.: "))
qty = int(input("Количество: "))

# Расчёт
subtotal = price * qty
vat = subtotal * 0.2
total = subtotal + vat

# Вывод
print(f"Сумма без НДС: {subtotal:.2f} руб.")
print(f"НДС 20%: {vat:.2f} руб.")
print(f"Итого: {total:.2f} руб.")
Вывод в терминалсиним — то, что ввёл пользователь
Цена без НДС, руб.: 149.9
Количество: 7
Сумма без НДС: 1049.30 руб.
НДС 20%: 209.86 руб.
Итого: 1259.16 руб.

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

Пример 1
Ввод
1000
3
Вывод
Сумма без НДС: 3000.00 руб.
НДС 20%: 600.00 руб.
Итого: 3600.00 руб.
Не округляйте на каждом шаге

Если сначала округлить subtotal, потом vat, потом итог, копейки начнут расходиться с бухгалтерией. Считайте точно, показывайте аккуратно.

Разбор 3

Процент выполнения плана

★★☆средняя

Трекер задач показывает, на сколько процентов выполнен план, — целым числом.

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

  1. Доля = выполнено / запланировано, в процентах — умножить на 100.
  2. Нужно целое число для дальнейшей работы — round() без второго аргумента вернёт int.
  3. Выводим тип результата, чтобы убедиться.
main.pyрешение
# Ввод
done = int(input("Выполнено задач: "))
plan = int(input("Запланировано задач: "))

# Расчёт
percent = round(done / plan * 100)

# Вывод
print(f"План выполнен на {percent}%")
print("Тип результата:", type(percent))
Вывод в терминалсиним — то, что ввёл пользователь
Выполнено задач: 12
Запланировано задач: 18
План выполнен на 67%
Тип результата: <class 'int'>

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

Пример 1
Ввод
1
8
Вывод
План выполнен на 12%
Тип результата: <class 'int'>
Половина — к чётному

Во втором примере 1 / 8 × 100 = 12.5, а round() дал 12: значения ровно посередине Python округляет к ближайшему чётному. Об этом стоит помнить, когда результат «на половине» кажется неверным.

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

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

Задача 1.9.1

Цена до копеек

★☆☆базовая

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

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

Пример 1
Ввод
3.14159
Вывод
3.14
Пример 2
Ввод
2.5
Вывод
2.50
Пример 3
Ввод
100
Вывод
100.00
Подсказка

Нужен вид, а не новое число, — значит, формат в f-строке.

Задача 1.9.2

Сколько гостей за столом

★☆☆базовая

Организатор банкета знает дробную оценку «гостей на стол». Выведите её округлённой до целого числа.

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

Пример 1
Ввод
7.6
Вывод
8
Пример 2
Ввод
7.4
Вывод
7
Пример 3
Ввод
2.5
Вывод
2
Подсказка

Одна функция без второго аргумента. Результат третьего примера объясняется правилом из главы 1.9.

Задача 1.9.3

До десятых

★☆☆базовая

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

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

Пример 1
Ввод
3.14159
Вывод
3.1
Пример 2
Ввод
2.96
Вывод
3.0
Подсказка

Второй аргумент round() — количество знаков.

Задача 1.9.4

Размер скидки в процентах

★☆☆базовая

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

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

Пример 1
Ввод
2000
1500
Вывод
Скидка: 25.0%
Пример 2
Ввод
999
799
Вывод
Скидка: 20.0%
Подсказка

Разница цен, делённая на старую цену, × 100.

Задача 1.9.5

Расход на 100 км

★☆☆базовая

Вводятся пройденные километры и потраченные литры. Выведите расход на 100 км с одним знаком после точки.

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

Пример 1
Ввод
430
31.6
Вывод
Расход: 7.3 л/100 км
Пример 2
Ввод
100
6
Вывод
Расход: 6.0 л/100 км
Подсказка

Формат .1f — один знак.

Задача 1.9.6

Цена за килограмм

★★☆средняя

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

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

Пример 1
Ввод
89.9
400
Вывод
За 1 кг: 224.75 руб.
Пример 2
Ввод
100
300
Вывод
За 1 кг: 333.33 руб.
Подсказка

Сначала цена одного грамма, потом умножение на 1000.

Задача 1.9.7

Доля рынка

★★☆средняя

Аналитик вводит продажи компании и продажи всего рынка. Выведите долю компании в процентах с одним знаком после точки и эту же долю, округлённую до целого.

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

Пример 1
Ввод
7
250
Вывод
Доля: 2.8%
Округлённо: 3
Пример 2
Ввод
1
3
Вывод
Доля: 33.3%
Округлённо: 33
Подсказка

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

Задача 1.9.8

Расходы на обеды

★★☆средняя

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

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

Пример 1
Ввод
345.5
Вывод
За месяц: 7601
За год: 91212.00 руб.
Пример 2
Ввод
280
Вывод
За месяц: 6160
За год: 73920.00 руб.
Подсказка

Годовую сумму считайте от точного месячного значения, а не от округлённого.

Задача 1.9.9

Сколько прошло от вебинара

★★☆средняя

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

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

Пример 1
Ввод
35
90
Вывод
Прошло: 38.9%
Округлённо: 39 %
Пример 2
Ввод
45
90
Вывод
Прошло: 50.0%
Округлённо: 50 %
Подсказка

Одна переменная для процента, два способа её показать.

Задача 1.9.10

Проверка правила половин

★★☆средняя

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

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

Пример 1
Ввод
2.5
3.5
Вывод
2.5 → 2
3.5 → 4
Пример 2
Ввод
0.5
1.5
Вывод
0.5 → 0
1.5 → 2
Пример 3
Ввод
4.6
4.4
Вывод
4.6 → 5
4.4 → 4
Подсказка

Результаты в первых двух примерах объясняет правило округления половин к чётному.

Задача 1.9.11

Обмен с комиссией

★★☆средняя

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

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

Пример 1
Ввод
10000
92.35
1.5
Вывод
Комиссия: 150.00 руб.
Получите: 106.66
Пример 2
Ввод
5000
100
0
Вывод
Комиссия: 0.00 руб.
Получите: 50.00
Подсказка

Сначала вычтите комиссию, потом делите на курс.

Задача 1.9.12

Оценка по пятибалльной шкале

★★☆средняя

За контрольную можно набрать максимум сколько-то баллов. Вводятся набранные баллы и максимум. Выведите оценку по пятибалльной шкале (доля × 5), округлённую до десятых.

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

Пример 1
Ввод
42
50
Вывод
Оценка: 4.2
Пример 2
Ввод
17
30
Вывод
Оценка: 2.8
Подсказка

Доля набранного от максимума, умноженная на 5.

Задача 1.9.13

Разделить счёт с чаевыми

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

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

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

Пример 1
Ввод
3450
4
10
Вывод
Чаевые: 345.00 руб.
Всего: 3795.00 руб.
С каждого: 948.75 руб.
Пример 2
Ввод
1000
3
0
Вывод
Чаевые: 0.00 руб.
Всего: 1000.00 руб.
С каждого: 333.33 руб.
Подсказка

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

Задача 1.9.14

Копейка в рассрочке

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

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

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

Пример 1
Ввод
1000
3
Вывод
Платёж: 333.33 руб.
Выплачено: 999.99 руб.
Разница с ценой: 0.01 руб.
Пример 2
Ввод
2000
3
Вывод
Платёж: 666.67 руб.
Выплачено: 2000.01 руб.
Разница с ценой: -0.01 руб.
Пример 3
Ввод
1200
12
Вывод
Платёж: 100.00 руб.
Выплачено: 1200.00 руб.
Разница с ценой: 0.00 руб.
Подсказка

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

Задача 1.9.15

НДС внутри суммы

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

В чеке указана сумма с НДС 20%. Вводится эта сумма. Выведите сумму без НДС и сам налог — с двумя знаками.

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

Пример 1
Ввод
1200
Вывод
Без НДС: 1000.00 руб.
НДС: 200.00 руб.
Пример 2
Ввод
999.99
Вывод
Без НДС: 833.33 руб.
НДС: 166.66 руб.
Подсказка

Подвох: НДС — это 20% от суммы без налога, а не от суммы с налогом. Сумма с НДС — это 120% от суммы без него.

Задача 1.9.16

Время чтения статьи

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

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

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

Пример 1
Ввод
1850
200
Вывод
Точно: 9.2 мин
Примерно: 9 мин
Пример 2
Ввод
450
180
Вывод
Точно: 2.5 мин
Примерно: 2 мин
Подсказка

Во втором примере время ровно 2.5 минуты — вспомните правило половин.

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

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

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

Задачи к главе 1.9 · round() и формат .2f · Задачник по Python Автор: Макаров Максим Николаевич