Как Python считает: арифметика, округление и модуль math

Pythonобновлено 07.10.20269 мин чтенияесть тренажёр

Математика в Python начинается с обычных знаков: +, -, * и /. К ним добавляются целочисленное деление //, остаток % и степень **, а модуль math даёт корень и число π. Квиз из 9 вопросов — сразу под заголовком, а ниже разобраны правила и ловушки новичков.

Загружаем…

Математика в Python: что умеет язык

Python — это калькулятор, который помнит промежуточные результаты: 7 арифметических операторов, функции round и abs и модуль math покрывают всю школьную арифметику. Пишите выражение внутри print(), и программа выведет ответ.

print(2 + 3)
print(10 - 4)
print(6 * 7)
print(7 / 2)
5
6
42
3.5

Для математики в Python важно понимать, что числа бывают двух главных типов. Целые — int: 5, −12, 1000. Дробные — float: 3.5, 0.25, −1.0. Дробная часть пишется через точку, а не через запятую: запятая в Python разделяет значения, и print(3,5) выведет два числа «3 5». У целых чисел нет предела по размеру: 2 ** 100 Python посчитает точно, все 31 цифру. Это удобно для задач на большие числа, где другие языки требуют особых приёмов.

Результат вычисления обычно сохраняют в переменную, чтобы использовать дальше. Так строится любая программа-расчёт: площадь комнаты, сдача в магазине, средняя оценка за четверть. Про переменные и правила их имён подробно рассказано в статье о переменных в Python.

Обычное деление всегда даёт дробь

Оператор / — это обычное деление, и в Python 3 его результат всегда имеет тип float, даже если числа делятся нацело. Поэтому 6 / 3 выводит 2.0, а не 2.

Для новичка это первый сюрприз, который преподносит математика в Python: в тетради 6 : 3 = 2, без всяких нулей после точки. Но Python рассуждает иначе: деление в общем случае даёт дробь, и тип результата не должен зависеть от того, повезло ли с делимостью. Если нужно целое, есть два пути: целочисленное деление // или преобразование int(6 / 3). В старом Python 2 правило было другим, и 7 / 2 давало 3. Эта версия больше не поддерживается с 1 января 2020 года, поэтому школьникам нужно учить только поведение Python 3.

Дробные числа хранятся в памяти компьютера в двоичном виде, и некоторые десятичные дроби в нём записываются неточно. Поэтому 0.1 + 0.2 даёт не 0.3, а число с хвостом из цифр:

0.30000000000000004

Это не ошибка Python, а свойство всех языков, которые работают с такими числами. Для вывода красивого ответа используют округление, а сравнивать дробные числа через == не стоит — лучше проверять, что разница меньше маленького числа.

Целочисленное деление // и остаток %

Целочисленное деление // — это сколько раз одно число помещается в другом целиком, а остаток % — сколько осталось. Например, 17 // 5 = 3 и 17 % 5 = 2, потому что 17 = 5 × 3 + 2.

konfety = 17
deti = 5
print("Каждому:", konfety // deti)
print("Осталось:", konfety % deti)
Каждому: 3
Осталось: 2

Эти два оператора — главные инструменты школьных задач, и без них математика в Python почти не обходится. Остаток от деления на 2 показывает чётность: если n % 2 == 0, число чётное. Последняя цифра числа — n % 10, а число без последней цифры — n // 10. Повторяя эти два действия в цикле, разбирают число по цифрам. Так же переводят единицы: 135 минут — это 135 // 60 = 2 часа и 135 % 60 = 15 минут.

С отрицательными числами нужно быть внимательным. Деление // округляет вниз, к меньшему числу, поэтому -7 // 2 равно −4, а не −3. Остаток при этом всегда того же знака, что и делитель: -7 % 2 даёт 1. Так описано в официальной документации Python[1], и это отличает Python от некоторых других языков, где результат будет −3 и −1.

Степень и порядок действий

Возведение в степень записывается двумя звёздочками: 2 ** 10 = 1024. Значок ^ для степени не подходит — в Python он означает совсем другую, побитовую операцию.

Порядок действий в Python такой же, как в математике: сначала скобки, потом степень, затем умножение и деление, в конце сложение и вычитание. Одинаковые по старшинству операции выполняются слева направо, кроме степени: 2 ** 3 ** 2 считается справа налево и даёт 512.

ОператорЧто делаетПримерРезультат
**степень3 ** 29
*умножение4 * 2.510.0
/деление9 / 42.25
//целая часть от деления9 // 42
%остаток9 % 41
+, -сложение и вычитание9 - 4 + 16

Операции в таблице расположены по старшинству: верхние выполняются раньше. Есть ловушка с минусом: -2 ** 2 равно −4, потому что степень старше знака минус. Если нужен квадрат отрицательного числа, ставьте скобки: (-2) ** 2 = 4. Квадратный корень можно получить степенью 0.5: 9 ** 0.5 = 3.0.

Округление и модуль числа: round и abs

Функция round(x, n) округляет число до n знаков после точки, а abs(x) возвращает модуль — число без знака минус. Обе функции встроены в язык, импорт не нужен.

print(round(3.14159, 2))
print(round(7 / 3, 1))
print(abs(-15))
print(int(3.9))
3.14
2.3
15
3

Обратите внимание на последнюю строку: int не округляет, а просто отбрасывает дробную часть, поэтому 3.9 превращается в 3. Если нужно округление по правилам, используйте round. С ним тоже есть тонкость: числа, которые оканчиваются ровно на 5, Python округляет к ближайшему чётному, и round(2.5) даёт 2. Поэтому в задачах на «половинки» лучше выводить ответ с запасом знаков или уточнять условие. Модуль числа нужен, когда важна разница без знака: например, насколько два ответа отличаются друг от друга.

Модуль math: корень, π и округление вверх

Модуль math — это набор математических функций, которые подключают строкой import math. В нём есть квадратный корень sqrt, число pi, округление вниз floor и вверх ceil.

import math

r = 5
print(math.sqrt(16))
print(round(math.pi * r ** 2, 2))
print(math.ceil(2.1), math.floor(2.9))
4.0
78.54
3 2

Вторая строка считает площадь круга радиусом 5 по формуле πr². Функция ceil полезна в задачах вида «сколько нужно автобусов на 130 человек, если в каждом 40 мест»: math.ceil(130 / 40) = 4, ведь трёх не хватит. Модуль math работает и в редакторе на нашем сайте, вместе с random и turtle. Полный список функций есть в документации Python; школьнику на первых порах достаточно этих четырёх.

Деление на ноль и другие ошибки в расчётах

Делить на ноль нельзя и в Python: выражения 10 / 0, 10 // 0 и 10 % 0 останавливают программу с ошибкой ZeroDivisionError. Чтобы этого избежать, делитель проверяют заранее.

a = 10
b = 0
if b != 0:
    print(a / b)
else:
    print("На ноль делить нельзя")

Особенно часто ошибка возникает при подсчёте среднего, когда список чисел оказался пустым: сумма 0, количество 0. Разбор всех вариантов — на странице об ошибке ZeroDivisionError. Вторая частая беда — сложить число со строкой. Функция input() всегда возвращает строку, и "5" + 3 вызовет TypeError. Перед расчётами введённое значение превращают в число: int(input()) или float(input()).

Где пригодится математика в Python школьнику

Если ученик выбрал Python для экзамена, арифметика понадобится ему в 9 классе на ОГЭ: в задании 16, по материалам ФИПИ, программу пишут на универсальном языке, и Python есть в списке разрешённых[2].

В таких задачах почти всегда нужны операторы % и //: найти числа, кратные 3, посчитать сумму цифр, определить, оканчивается ли число на 4. По федеральной образовательной программе основного общего образования в 8 классе изучают целые и вещественные переменные, присваивание и составные условия[3] — ровно то, на чём держится математика в Python. Кроме экзаменов, расчёты пригодятся и в собственных проектах: счёт очков в игре, таймер, перевод валюты для поездки. Потренироваться можно на подборке задач на числа с автопроверкой.

Когда расчёт на Python не поможет

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

  • Домашняя работа по алгебре в 7 классе. Программа выдаст ответ, но учитель ждёт решение по шагам, а навык решения так не появится.
  • Точные деньги с копейками. Дробные числа хранятся неточно, поэтому суммы считают в целых копейках: 1999 вместо 19.99.
  • Сравнение двух дробей через ==. 0.1 + 0.2 == 0.3 даёт False — нужна проверка с допуском.
  • Символьная алгебра с иксами. Встроенные 7 операторов работают с числами, а не упрощают выражения с буквами.

Миф: «Python неправильно считает, раз 0.1 + 0.2 не равно 0.3». Ошибки в языке не существует: так ведут себя дробные числа с плавающей точкой в любом языке, и документация Python объясняет причину отдельным разделом.

Миф: «чтобы программировать, нужно быть отличником по математике». Это не подтверждается: для первых программ хватает четырёх действий и пары операторов. Метаанализ Scherer и соавторов показал скорее обратную связь — занятия программированием в среднем положительно связаны с математическими навыками[4].

Чего делать нельзя

Нельзя писать дробные числа через запятую — это самая частая ошибка первых расчётов. Запомните ещё несколько правил.

  • Нельзя писать 3,5 вместо 3.5: запятая создаст два отдельных значения.
  • Не следует использовать ^ для степени — это побитовая операция, ответ будет неожиданным.
  • Не стоит ждать целого результата от /: для целой части нужен оператор //.
  • Нельзя делить, не проверив делитель, если он вводится пользователем или считается в программе.
  • Не стоит сравнивать дробные числа через == — используйте округление или допуск.
  • Не следует путать int() и round(): первая отбрасывает дробную часть, вторая округляет.

Проверьте себя в квизе в начале страницы: прочитайте код, решите в уме и только потом выбирайте ответ.

Источники

[1] The Python Tutorial (официальная документация Python 3). Python Software Foundation.

[2] ФИПИ. Методические рекомендации для обучающихся по организации индивидуальной подготовки к ОГЭ 2026 года. Информатика. М., 2026.

[3] Приказ Минпросвещения России от 18.05.2023 № 370 «Об утверждении федеральной образовательной программы основного общего образования».

[4] Scherer R., Siddiq F., Sánchez Viveros B. The cognitive benefits of learning computer programming: A meta-analysis of transfer effects // Journal of Educational Psychology. 2019. Vol. 111, № 5. P. 764–792.

Вопросы и ответы

Как вывести ответ с двумя знаками после точки?

Используйте round(x, 2) или f-строку f"{x:.2f}". Второй способ всегда показывает ровно два знака, даже если на конце нули.

Как получить квадратный корень без модуля?

Возведите число в степень 0.5: 25 ** 0.5 даёт 5.0. Результат будет дробным, как и у math.sqrt.

Почему 10 // 3 * 3 не равно 10?

Потому что 10 // 3 = 3, а 3 × 3 = 9: операция // потеряла единицу. Её хранит оператор %: 10 % 3 = 1.

Как проверить, что одно число делится на другое?

Если a % b равно нулю, делится: if a % b == 0:. Этот приём встречается почти в каждой задаче на числа.

Есть ли в Python дроби вида 1/3?

Есть модуль fractions для точных дробей, но в редакторе на сайте доступны только random, math, turtle и time. Для школьных задач обычно хватает float и округления.

Как найти максимум из нескольких чисел?

Встроенная функция max(3, 8, 5) вернёт 8, а min — наименьшее. Обе работают и со списками.