Числовые операции в Python: арифметика и не только

Раздел: Операторы Python -> Арифметические операторы

Арифметические операторы для чисел в Python

В Python существует несколько операторов для выполнения арифметических операций с числовыми типами данных. Ниже рассмотрены основные операторы, их применение, альтернативные подходы и типичные ошибки.

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

Операторы +, -, * используются для сложения, вычитания и умножения соответственно. Они работают с целыми (int) и дробными (float) числами.

a = 10
b = 3
print(a + b)   # 13
print(a - b)   # 7
print(a * b)   # 30

операторы чисел python (операторы для чисел в python)

Пояснение:

В приведенном примере переменные a и b содержат целые числа. Результат каждой операции выводится на экран.

Для сложения последовательности чисел применяется функция sum(), для умножения - math.prod() из модуля math.

numbers = [10, 3, 5]
print(sum(numbers))          # 18
import math
print(math.prod(numbers))    # 150

Функция sum() принимает итерабельный объект (список, кортеж) и возвращает сумму его элементов. math.prod() - произведение элементов.

Типичная ошибка:

Попытка сложить число и строку приводит к ошибке TypeError. Перед операцией необходимо преобразовать тип с помощью int() или float().

x = 10
y = '5'
# print(x + y)   # TypeError
print(x + int(y))  # 15

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

Оператор / выполняет деление с плавающей точкой и всегда возвращает число с плавающей точкой (float).

a = 7
b = 2
result = a / b
print(result)   # 3.5

Пояснение:

Даже если числа целые, результат будет дробным.

Для получения целой части от деления используется оператор // (целочисленное деление). Он возвращает наибольшее целое число, не превышающее результат деления.

a = 7
b = 2
print(a // b)   # 3

Для отрицательных чисел результат округляется вниз: -7 // 2 даст -4.

Типичная ошибка:

Деление на ноль вызывает ZeroDivisionError. Перед делением стоит проверять делитель.

a = 5
b = 0
# print(a / b)   # ZeroDivisionError
if b != 0:
    print(a / b)
else:
    print('Деление на ноль недопустимо')

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

Для одновременного получения целой части и остатка от деления применяется функция divmod(). Она возвращает кортеж из двух значений: (частное, остаток).

a = 17
b = 5
quotient, remainder = divmod(a, b)
print(quotient, remainder)   # 3 2

Пояснение:

divmod(a, b) эквивалентна (a // b, a % b).

Отдельно можно использовать операторы // (целая часть) и % (остаток).

a = 17
b = 5
print(a // b)   # 3
print(a % b)    # 2

Остаток от деления часто применяется для проверки четности числа: a % 2 == 0 - число четное.

Типичная ошибка:

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

print(-17 % 5)   # 3 (а не -2)
print(17 % -5)   # -3

Следует учитывать эту особенность при написании кода, зависящего от знака.

Как возвести число в степень?

Оператор ** возводит левый операнд в степень правого.

base = 2
exp = 3
print(base ** exp)   # 8

Пояснение:

Оператор работает с целыми и дробными показателями: 2 ** 0.5 вернет квадратный корень.

Функция pow() выполняет ту же операцию, но позволяет указать третий аргумент для модульного возведения (возведение в степень по модулю).

print(pow(2, 3))      # 8
print(pow(2, 3, 5))   # 8 % 5 = 3

Модульное возведение используется в криптографии для эффективного вычисления больших степеней.

Типичная ошибка:

Возведение в очень большую степень может привести к огромному числу, что замедлит выполнение. Функция pow() с модулем решает эту проблему.

Как совместить арифметическую операцию с присваиванием?

Комбинированные операторы (+=, -=, *=, /=, //=, %=, **=) изменяют значение переменной на месте.

x = 10
x += 5   # x = x + 5 -> 15
x *= 2   # 30
print(x) # 30

Пояснение:

Такой подход делает код более кратким и понятным. Оператор выполняет вычисление и присваивание за один шаг.

Тот же результат можно получить без комбинированного оператора: x = x + 5.

x = 10
x = x + 5
print(x) # 15

Однако использование += предпочтительнее для читаемости.

Типичная ошибка:

Путаница с порядком операций: x += 2 * 3 эквивалентно x = x + (2*3), а не (x+2)*3.

Расширенные примеры использования числовых операторов

Рассмотрим более сложные сценарии, включая работу с отрицательными числами, большими целыми и комплексными числами.

Пример 1: Целочисленное деление и остаток с отрицательными числами

Пример
a = -7
b = 3
print(a // b)   # -3
print(a % b)    # 2
-3
2

Оператор // округляет результат вниз, поэтому -7 // 3 равно -3 (так как -2.333... округляется до -3). Остаток % подбирается так, чтобы выполнялось равенство (a // b)*b + (a % b) == a. В данном случае (-3)*3 + 2 = -7.

Пример 2: Использование pow с тремя аргументами для модульного возведения

Пример
base = 5
exp = 3
mod = 13
result = pow(base, exp, mod)
print(result)   # 5^3 = 125, 125 % 13 = 8
8

Функция pow(base, exp, mod) вычисляет (base ** exp) % mod более эффективно, особенно при больших числах, так как не создает промежуточное огромное значение.

Пример 3: Комплексные числа и арифметика

Пример
c1 = 2 + 3j
c2 = 1 - 2j
print(c1 + c2)   # (3+1j)
print(c1 * c2)   # (8-1j)
print(abs(c1))   # sqrt(2^2+3^2) = 3.60555127546
(3+1j)
(8-1j)
3.605551275463989

Комплексные числа поддерживают те же арифметические операторы. abs() возвращает модуль комплексного числа.

Пример 4: Приоритет операторов и скобки

Пример
print(2 + 3 * 4)   # 14
print((2 + 3) * 4) # 20
14
20

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

Пример 5: Работа с большими числами (int неограничен)

Пример
big = 10**100
print(big * 2)   # 2*10^100
20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Целые числа в Python имеют произвольную точность, что позволяет выполнять арифметику с очень большими значениями без переполнения.

Пример 6: Округление и преобразование

Пример
a = 7.5
print(round(a))      # 8
print(int(a))        # 7 (отсечение дробной части)
print(abs(-5))       # 5
print(float(3))      # 3.0
8
7
5
3.0

round() округляет до ближайшего целого (банковское округление при .5), int() отбрасывает дробную часть, abs() возвращает абсолютное значение, float() преобразует целое в дробное.

Операторы для чисел в Python - comments

En
операторы чисел python (python)