Урок 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.

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

Python
print(2 + 3 * 4)     # 14
print((2 + 3) * 4)   # 20

Где пригождаются // и %

Эти два оператора выглядят непривычно, но встречаются постоянно.

Перевод единиц. Фильм идёт 135 минут — сколько это часов и минут?

Python
minutes = 135
hours = minutes // 60     # 2
rest = minutes % 60       # 15
print(hours, "ч", rest, "мин")

Проверка чётности. Чётное число делится на 2 без остатка:

Python
number = 14
if number % 2 == 0:
    print("Чётное")
else:
    print("Нечётное")

Встроенные функции

Для частых задач есть готовые функции — подключать ничего не нужно:

Python
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 — наборе готового кода, который подключают одной строкой:

Python
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.

Особенность дробных чисел

Попробуйте:

Python
print(0.1 + 0.2)   # 0.30000000000000004

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

Попробуйте сами. Доставка стоит 99 ₽ за каждые начатые 5 км. Напишите программу, которая по расстоянию distance = 12 считает стоимость доставки.

Решение
Python
import math

distance = 12
parts = math.ceil(distance / 5)   # 12 км — это 3 начатых отрезка по 5 км
price = parts * 99
print("Доставка:", price, "₽")    # Доставка: 297 ₽

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

Мини-тест: проверьте себя

Закрепите урок: несколько вопросов, разбор ответов — в конце.

  1. Что выведет print(7 // 2)?

  2. Что выведет print(17 % 5)?

  3. Как проверить, что число n чётное?

  4. Что вернёт math.ceil(4.1)?