Урок 8 Операции над числами

+, -, *, /, //, %, **, abs(), round(), divmod(), sqrt(), pow() — арифметика и приоритет операций

⏱ ~10 мин чтения· 🚀 Начальный

Арифметические операции

Базовые операции с числами:

a = 10
b = 3

print(a + b)   # 13  — сложение
print(a - b)   # 7   — вычитание
print(a * b)   # 30  — умножение
print(a / b)   # 3.333... — деление (всегда float)
print(a // b)  # 3   — целочисленное деление
print(a % b)   # 1   — остаток от деления
print(a ** b)  # 1000 — возведение в степень

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

Полезны для проверки чётности, разбиения чисел:

num = 17
print(num // 10)  # 1 — количество десятков
print(num % 10)   # 7 — единицы

# Проверка на чётность
if num % 2 == 0:
    print("Чётное")
else:
    print("Нечётное")

Полезные функции

Встроенные функции для работы с числами:

print(abs(-5))        # 5 — модуль числа
print(round(3.14159, 2))  # 3.14 — округление до 2 знаков
print(round(3.5))     # 4 — округление до целого
print(divmod(17, 5))  # (3, 2) — (17 // 5, 17 % 5)

# Сравнения
print(min(3, 7, 1))   # 1
print(max(3, 7, 1))   # 7

Математический модуль (import math)

Для более сложных математических операций в Python есть модуль math. Чтобы использовать его функции, нужно в начале программы написать import math — это подключает модуль, открывая доступ к sqrt, pi, ceil и другим возможностям. Детально работа с модулями и командой import разбирается в уроке 30.

Пока просто запомните: строка import math пишется в самом верху файла, после неё все функции модуля вызываются через точку — math.имя_функции().

import math

print(math.sqrt(25))    # 5.0 — квадратный корень
print(math.sqrt(2))     # 1.4142135623730951

print(math.pow(2, 10))  # 1024.0 — возведение в степень (всегда float)
print(math.pow(9, 0.5)) # 3.0 — корень через степень 0.5

print(math.pi)          # 3.141592653589793 — число ?
print(math.e)           # 2.718281828459045 — число e

print(math.ceil(3.1))   # 4 — округление вверх
print(math.floor(3.9))  # 3 — округление вниз

print(math.fabs(-10.5)) # 10.5 — модуль для float

# Практический пример: расстояние между двумя точками (x1, y1) и (x2, y2)
x1, y1 = 0, 0
x2, y2 = 3, 4
distance = math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)
print(f"Расстояние: {distance:.3f}")   # Расстояние: 5.000

# Практический пример: дискриминант квадратного уравнения
a, b, c = 1, -5, 6   # уравнение x? - 5x + 6 = 0
D = b ** 2 - 4 * a * c     # дискриминант
sqrt_D = math.sqrt(D)       # квадратный корень из дискриминанта
print(f"Дискриминант: {D}")               # Дискриминант: 1
print(f"Корень из D: {sqrt_D:.3f}")       # Корень из D: 1.000

Совет. Для возведения в дробную степень не обязательно использовать math.pow() — можно применить оператор **, например 16 ** 0.5 даст 4.0. Но math.sqrt() лучше читается и наглядно показывает намерение извлечь корень.

Для контестов. В задачах, где ответ — вещественное число, почти всегда требуется выводить результат с фиксированным количеством знаков после запятой (например, 3 знака). Используйте f-строку с форматом :.3f: print(f"{result:.3f}"). Подробнее о форматировании чисел — в уроке 5 (Ввод и вывод).

Таблица приоритетов (от высшего к низшему)

Операции с более высоким приоритетом выполняются раньше:

# 1.  () — скобки
# 2.  ** — возведение в степень
# 3.  +x, -x — унарные плюс и минус
# 4.  *, /, //, % — умножение, деление
# 5.  +, — — сложение, вычитание
# 6.  <, <=, >, >= — сравнения
# 7.  ==, != — проверка равенства
# 8.  not — логическое НЕ
# 9.  and — логическое И
# 10. or — логическое ИЛИ
# 11. = — присваивание

Примеры

Как Python вычисляет выражения:

# Умножение выполняется раньше сложения
result = 2 + 3 * 4      # 2 + 12 = 14

# Скобки меняют порядок
result = (2 + 3) * 4    # 5 * 4 = 20

# Степень — самый высокий приоритет
result = 2 * 3 ** 2     # 2 * 9 = 18

# Цепочка сравнений
result = 1 < 2 < 3      # True (1 < 2 and 2 < 3)

# Логические операции
result = not True and False  # False (not True = False, False and False = False)

Совет: используйте скобки

Даже если знаете приоритет, скобки делают код понятнее:

# Плохо (нужно помнить приоритет)
x = a + b * c ** d // e

# Хорошо (понятно без таблицы)
x = a + (b * ((c ** d) // e))