Урок 3 из 8 · 15 мин · обновлено
Числа и математика
Арифметика в Python: обычное и целочисленное деление, остаток, степень, округление и полезные функции модуля math.
Арифметические операторы
Python умеет считать как калькулятор:
| Оператор | Что делает | Пример | Результат |
|---|---|---|---|
+ |
сложение | 7 + 2 |
9 |
- |
вычитание | 7 - 2 |
5 |
* |
умножение | 7 * 2 |
14 |
/ |
деление | 7 / 2 |
3.5 |
// |
целочисленное деление | 7 // 2 |
3 |
% |
остаток от деления | 7 % 2 |
1 |
** |
возведение в степень | 7 ** 2 |
49 |
Обычное деление / всегда возвращает дробное число, даже если делится нацело: 6 / 2 даст 3.0.
Порядок действий — как в математике: сначала степень, потом умножение и деление, потом сложение и вычитание. Скобки меняют порядок:
print(2 + 3 * 4) # 14
print((2 + 3) * 4) # 20
Где пригождаются // и %
Эти два оператора выглядят непривычно, но встречаются постоянно.
Перевод единиц. Фильм идёт 135 минут — сколько это часов и минут?
minutes = 135
hours = minutes // 60 # 2
rest = minutes % 60 # 15
print(hours, "ч", rest, "мин")
Проверка чётности. Чётное число делится на 2 без остатка:
number = 14
if number % 2 == 0:
print("Чётное")
else:
print("Нечётное")
Встроенные функции
Для частых задач есть готовые функции — подключать ничего не нужно:
print(round(3.14159, 2)) # 3.14 — округлить до 2 знаков
print(abs(-8)) # 8 — модуль числа
print(min(4, 9, 1)) # 1 — наименьшее
print(max(4, 9, 1)) # 9 — наибольшее
Модуль math
Более редкие функции собраны в модуле math — наборе готового кода, который подключают одной строкой:
import math
print(math.sqrt(16)) # 4.0 — квадратный корень
print(math.ceil(4.1)) # 5 — округлить вверх
print(math.floor(4.9)) # 4 — округлить вниз
print(math.pi) # 3.141592653589793
math.ceil выручает в житейских задачах: если в коробку помещается 10 товаров, то для 41 товара нужно math.ceil(41 / 10), то есть 5 коробок, а не 4,1.
Особенность дробных чисел
Попробуйте:
print(0.1 + 0.2) # 0.30000000000000004
Это не ошибка Python: компьютер хранит дробные числа в двоичном виде, и некоторые из них нельзя записать точно. Погрешность крошечная, но для денег неприятная. Поэтому суммы удобнее хранить в копейках, целыми числами, а для вывода округлять через round().
Попробуйте сами. Доставка стоит 99 ₽ за каждые начатые 5 км. Напишите программу, которая по расстоянию distance = 12 считает стоимость доставки.
Решение
import math
distance = 12
parts = math.ceil(distance / 5) # 12 км — это 3 начатых отрезка по 5 км
price = parts * 99
print("Доставка:", price, "₽") # Доставка: 297 ₽
Ключевое слово в задаче — «начатые»: даже 1 лишний километр означает ещё один отрезок, поэтому округляем вверх.
Мини-тест: проверьте себя
Закрепите урок: несколько вопросов, разбор ответов — в конце.
-
Что выведет print(7 // 2)?
Оператор // делит нацело: в 7 помещаются три двойки, а остаток 1 отбрасывается.
-
Что выведет print(17 % 5)?
% возвращает остаток от деления: 17 = 5 × 3 + 2, значит остаток — 2.
-
Как проверить, что число n чётное?
Чётное число делится на 2 без остатка, поэтому остаток n % 2 равен нулю.
-
Что вернёт math.ceil(4.1)?
ceil округляет вверх до ближайшего целого. Пригодится, например, чтобы посчитать, сколько коробок нужно для 41 товара, если в коробку помещается 10.