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

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

Задачи 1.7

1.7

Задачи к главе
«Операторы»

Сравнения дают ответ «да или нет», приоритет решает, в каком порядке считается формула. Задачи главы — про формулы из жизни, где скобка не на месте меняет результат.

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

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

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

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

Разбор 1

Зачёт по баллам

★☆☆базовая

Экзамен сдан, если набрано не меньше 60 баллов, и сдан на «отлично» — если не меньше 90. Программа спрашивает баллы и выводит оба признака.

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

  1. «Не меньше» — это >=: граница включается.
  2. Результат сравнения — значение True или False. Его можно сохранить в переменную с именем-вопросом.
  3. Выводим признаки через запятую — print() покажет True или False.
main.pyрешение
# Ввод
score = int(input("Баллы за экзамен: "))

# Проверки
passed = score >= 60
excellent = score >= 90

# Вывод
print("Сдан:", passed)
print("Отлично:", excellent)
Вывод в терминалсиним — то, что ввёл пользователь
Баллы за экзамен: 75
Сдан: True
Отлично: False

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

Пример 1
Ввод
90
Вывод
Сдан: True
Отлично: True
Пример 2
Ввод
59
Вывод
Сдан: False
Отлично: False
Проверяйте границы

Второй и третий примеры стоят ровно на границах: 90 и 59. Ошибка > вместо >= проявляется только там — поэтому граничные значения берут в проверку всегда.

Разбор 2

Средняя оценка: где ошибка

★★☆средняя

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

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

  1. Деление выполняется раньше сложения: a + b + c / 3 делит на три только последнюю оценку.
  2. Скобки задают порядок явно: (a + b + c) / 3.
  3. Выводим обе версии с двумя знаками — разница видна сразу.
main.pyрешение
# Ввод
a = int(input("Первая оценка: "))
b = int(input("Вторая оценка: "))
c = int(input("Третья оценка: "))

# Две версии формулы
wrong = a + b + c / 3
average = (a + b + c) / 3

# Вывод
print(f"Без скобок: {wrong:.2f}")
print(f"Со скобками: {average:.2f}")
Вывод в терминалсиним — то, что ввёл пользователь
Первая оценка: 5
Вторая оценка: 4
Третья оценка: 3
Без скобок: 10.00
Со скобками: 4.00

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

Пример 1
Ввод
5
5
5
Вывод
Без скобок: 11.67
Со скобками: 5.00
Ошибка без сообщения

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

Разбор 3

Вклад со сложными процентами

★★☆средняя

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

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

  1. За год сумма умножается на 1 + ставка / 100. За несколько лет — возводится в степень числа лет: **.
  2. Степень выполняется раньше умножения, а сложение внутри скобок — первым: deposit * (1 + rate / 100) ** years.
  3. Доход — итог минус вложенное, считаем по готовым переменным.
main.pyрешение
# Ввод
deposit = float(input("Сумма вклада, руб.: "))
rate = float(input("Ставка, % годовых: "))
years = int(input("Срок, лет: "))

# Расчёт
total = deposit * (1 + rate / 100) ** years
income = total - deposit

# Вывод
print(f"Через {years} г.: {total:.2f} руб.")
print(f"Доход: {income:.2f} руб.")
Вывод в терминалсиним — то, что ввёл пользователь
Сумма вклада, руб.: 100000
Ставка, % годовых: 12
Срок, лет: 3
Через 3 г.: 140492.80 руб.
Доход: 40492.80 руб.

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

Пример 1
Ввод
5000
10
2
Вывод
Через 2 г.: 6050.00 руб.
Доход: 1050.00 руб.
Порядок в формуле

Скобки → ** → * / → + -. Без скобок deposit * 1 + rate / 100 ** years посчитало бы совсем другое число.

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

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

Задача 1.7.1

Хватит ли денег

★☆☆базовая

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

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

Пример 1
Ввод
5000
3200
Вывод
Можно купить: True
Останется: 1800
Пример 2
Ввод
1000
1000
Вывод
Можно купить: True
Останется: 0
Пример 3
Ввод
300
450
Вывод
Можно купить: False
Останется: -150
Подсказка

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

Задача 1.7.2

Проверка кода подтверждения

★☆☆базовая

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

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

Пример 1
Ввод
4821
4821
Вывод
Код верный: True
Код неверный: False
Пример 2
Ввод
4821
4812
Вывод
Код верный: False
Код неверный: True
Подсказка

Сравнение на равенство — два знака ==, на неравенство — !=.

Задача 1.7.3

Перепад температуры

★☆☆базовая

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

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

Пример 1
Ввод
12
19
Вывод
Изменение за день: 7
От вечера к утру: -7
Пример 2
Ввод
3
-4
Вывод
Изменение за день: -7
От вечера к утру: 7
Подсказка

Посчитайте изменение один раз, а второй результат получите минусом перед переменной.

Задача 1.7.4

Предупреждение о жаре

★☆☆базовая

Погодное приложение предупреждает о жаре, если температура не ниже 30 градусов. Вводится температура, выведите признак жары.

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

Пример 1
Ввод
31
Вывод
Жара: True
Пример 2
Ввод
30
Вывод
Жара: True
Пример 3
Ввод
25
Вывод
Жара: False
Подсказка

Граница включается.

Задача 1.7.5

Квадрат составным присваиванием

★☆☆базовая

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

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

Пример 1
Ввод
7
Вывод
После **= 2: 49
После //= 3: 16
После %= 10: 6
Пример 2
Ввод
12
Вывод
После **= 2: 144
После //= 3: 48
После %= 10: 8
Подсказка

В главе 1.7 есть составные формы для всех арифметических операций.

Задача 1.7.6

Индекс массы тела

★☆☆базовая

Вводятся вес в килограммах и рост в метрах. Выведите индекс массы тела (вес / рост²) с двумя знаками и признак, что он не меньше 25.

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

Пример 1
Ввод
70
1.75
Вывод
ИМТ: 22.86
Выше нормы: False
Пример 2
Ввод
95
1.8
Вывод
ИМТ: 29.32
Выше нормы: True
Подсказка

Степень выполняется раньше деления — скобки вокруг роста в квадрате не нужны.

Задача 1.7.7

Значение формулы

★★☆средняя

Инженер проверяет формулу y = 2x³ − 3x² + x − 5. Вводится целое x, выведите y.

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

Пример 1
Ввод
2
Вывод
y = 1
Пример 2
Ввод
-1
Вывод
y = -11
Пример 3
Ввод
0
Вывод
y = -5
Подсказка

Степень — **, и она выполняется раньше умножения. Скобки здесь не нужны, но проверьте ответ на x = 2 вручную.

Задача 1.7.8

Курьер и клиент

★★☆средняя

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

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

Пример 1
Ввод
0
0
3
4
Вывод
Расстояние: 5.00
Пример 2
Ввод
-2
1
4
-3
Вывод
Расстояние: 7.21
Подсказка

Расстояние = √((x₂ − x₁)² + (y₂ − y₁)²). Корень — это степень 0.5. Внимательно расставьте скобки.

Задача 1.7.9

Одинаковый забор

★★☆средняя

Есть прямоугольный участок со сторонами a и b и квадратный участок со стороной c. Выведите периметры обоих и признак, что для них нужен забор одной длины.

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

Пример 1
Ввод
6
4
5
Вывод
Прямоугольник: 20
Квадрат: 20
Одинаковый забор: True
Пример 2
Ввод
10
2
5
Вывод
Прямоугольник: 24
Квадрат: 20
Одинаковый забор: False
Подсказка

Периметры посчитайте в переменные, потом сравните.

Задача 1.7.10

Минус и степень

★★☆средняя

Вводится число n. Выведите значения -n ** 2 и (-n) ** 2 и объясните себе разницу.

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

Пример 1
Ввод
3
Вывод
-n ** 2 = -9
(-n) ** 2 = 9
Пример 2
Ввод
-4
Вывод
-n ** 2 = -16
(-n) ** 2 = 16
Подсказка

Степень выполняется раньше унарного минуса.

Задача 1.7.11

Успею ли на поезд

★★☆средняя

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

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

Пример 1
Ввод
12
30
25
Вывод
В пути: 24.00 мин
Успеваю: True
Пример 2
Ввод
20
40
30
Вывод
В пути: 30.00 мин
Успеваю: True
Пример 3
Ввод
15
45
15
Вывод
В пути: 20.00 мин
Успеваю: False
Подсказка

Время в часах = расстояние / скорость. В минутах — умножить на 60.

Задача 1.7.12

Есть ли корни у уравнения

★★☆средняя

Для квадратного уравнения ax² + bx + c = 0 вводятся коэффициенты a, b, c. Выведите дискриминант D = b² − 4ac и признак, что у уравнения есть действительные корни (D не меньше нуля).

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

Пример 1
Ввод
1
-3
2
Вывод
D = 1
Есть корни: True
Пример 2
Ввод
1
2
5
Вывод
D = -16
Есть корни: False
Пример 3
Ввод
1
2
1
Вывод
D = 0
Есть корни: True
Подсказка

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

Задача 1.7.13

Ночной тариф

★★☆средняя

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

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

Пример 1
Ввод
100
20
10
30
Вывод
Стоимость: 360.00 руб.
Пример 2
Ввод
100
20
10
0
Вывод
Стоимость: 300.00 руб.
Подсказка

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

Задача 1.7.14

Площадь треугольного участка

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

Геодезист измерил три стороны треугольного участка в метрах. Выведите площадь по формуле Герона с двумя знаками: p = (a + b + c) / 2, S = √(p · (p − a) · (p − b) · (p − c)).

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

Пример 1
Ввод
3
4
5
Вывод
Площадь: 6.00 кв. м
Пример 2
Ввод
5
5
6
Вывод
Площадь: 12.00 кв. м
Пример 3
Ввод
10.5
7.2
12
Вывод
Площадь: 37.53 кв. м
Подсказка

Полупериметр посчитайте отдельной переменной. Корень — степень 0.5, и всё подкоренное выражение должно быть в скобках.

Задача 1.7.15

Треугольник существует?

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

Треугольник со сторонами a, b, c существует, только если каждая сторона меньше суммы двух других. Вводятся три стороны. Выведите три проверки — по одной на строку.

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

Пример 1
Ввод
3
4
5
Вывод
a < b + c: True
b < a + c: True
c < a + b: True
Пример 2
Ввод
1
2
3
Вывод
a < b + c: True
b < a + c: True
c < a + b: False
Пример 3
Ввод
10
2
3
Вывод
a < b + c: False
b < a + c: True
c < a + b: True
Подсказка

Сложение выполняется раньше сравнения. Объединять проверки через «и» научимся в модуле 2 — пока выводим каждую отдельно.

Задача 1.7.16

Удвоится ли вклад

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

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

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

Пример 1
Ввод
100000
10
7
Вывод
Итог: 194871.71 руб.
Удвоился: False
Пример 2
Ввод
100000
10
8
Вывод
Итог: 214358.88 руб.
Удвоился: True
Подсказка

Формула из разбора про вклад плюс одно сравнение. Сравните два примера: разница всего в год.

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

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

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

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