Основы арифметики в языке Python
Основные арифметические операторы
В Python доступны все базовые арифметические действия: сложение, вычитание, умножение, деление, целочисленное деление, взятие остатка и возведение в степень. Ниже приведено основное решение – использование встроенных операторов.
Самый прямой способ выполнить арифметическую операцию – применить соответствующий оператор к двум операндам. Примеры:
# Сложение
print(10 + 3) # 13
# Вычитание
print(10 - 3) # 7
# Умножение
print(10 * 3) # 30
# Деление (результат всегда float)
print(10 / 3) # 3.3333333333333335
# Целочисленное деление
print(10 // 3) # 3
# Остаток от деления
print(10 % 3) # 1
# Возведение в степень
print(10 ** 3) # 1000
найти сумму введенных чисел python (нахождение суммы введенных чисел в python)
Обратите внимание: оператор / всегда возвращает число с плавающей точкой, даже если деление нацело. Для получения целой части частного используйте //, а для остатка – %.
Типичные ошибки:
- Деление на ноль (
ZeroDivisionError). Всегда проверяйте делитель перед выполнением операции. - Неявное преобразование типов: при смешивании целых и дробных чисел Python возвращает
float, что может привести к потере точности. Для контроля используйте модульdecimal. - Приоритет операций: по умолчанию
**имеет наивысший приоритет, затем*,/,//,%, и потом+,-. Для явного указания порядка используйте скобки.
Как получить одновременно целую часть и остаток от деления?
Функция divmod(a, b) возвращает кортеж (a // b, a % b). Это удобно, когда оба значения нужны сразу. Пример:
result = divmod(10, 3)
print(result) # (3, 1)
print('Целая часть:', result[0], 'Остаток:', result[1])
факториал числа n python (вычисление факториала числа n в python)
Проблема: функция работает только с числами, поддерживающими деление и остаток (int, float). Для отрицательных чисел результат может отличаться от ожидаемого, так как Python округляет частное вниз. Всегда проверяйте поведение для отрицательных операндов.
Как выполнить арифметические действия с высокой точностью?
Модуль decimal позволяет задавать точность вычислений и избегать ошибок округления, характерных для float. Пример:
from decimal import Decimal, getcontext
getcontext().prec = 40 # устанавливаем точность до 40 знаков
a = Decimal('0.1')
b = Decimal('0.2')
print(a + b) # 0.3, а не 0.30000000000000004
арифметические действия python (арифметические действия в python)
Важно: создавать Decimal лучше из строк, чтобы избежать неточности при передаче float. Также операции с Decimal медленнее, чем с встроенными типами.
Как использовать функции из модуля operator для арифметики?
Модуль operator предоставляет функциональные аналоги операторов: add, sub, mul, truediv, floordiv, mod, pow. Это пригодится при передаче операции как аргумента функции (например, в reduce). Пример:
from operator import add, mul
print(add(5, 3)) # 8
print(mul(5, 3)) # 15
Использование operator избыточно для простых выражений, но удобно в функциональном программировании. Ошибки те же, что и у обычных операторов (деление на ноль и т.д.).
Расширенные примеры арифметических действий и их комбинаций.
Комбинированные операции с приоритетом
# Пример, демонстрирующий приоритет операций
x = 2 + 3 * 4 ** 2 // 5 - 6 % 3
print(x) # 2 + 3 * 16 // 5 - 0 = 2 + 48 // 5 - 0 = 2 + 9 - 0 = 11
11
Используйте скобки, чтобы сделать порядок вычислений явным:
x = (2 + 3) * (4 ** 2) // (5 - 6) % 3
print(x) # (5 * 16) // (-1) % 3 = 80 // (-1) % 3 = (-80) % 3 = 1 (в Python остаток всегда неотрицательный)
1
Работа с отрицательными числами в делении
print(-10 // 3) # -4 (округляет вниз)
print(-10 % 3) # 2 (остаток всегда неотрицательный 0 <= r < делителя)
print(10 // -3) # -4
print(10 % -3) # -2 (остаток сохраняет знак делителя? На самом деле r = a - b*(a//b), для -3 это -2)
-4 2 -4 -2
Использование math.fsum для точного суммирования float
import math
nums = [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
print(sum(nums)) # 0.9999999999999999
print(math.fsum(nums)) # 1.0
0.9999999999999999 1.0
Возведение в степень с помощью pow и math.pow
# Встроенная функция pow с тремя аргументами (модуль)
print(pow(2, 10)) # 1024
print(pow(2, 10, 1000)) # 24 (2^10 % 1000)
# math.pow всегда возвращает float
import math
print(math.pow(2, 10)) # 1024.0
1024 24 1024.0
Арифметика с комплексными числами
a = 3 + 4j
b = 1 - 2j
print(a + b) # (4+2j)
print(a * b) # (11-2j)
print(abs(a)) # 5.0 (модуль комплексного числа)
(4+2j) (11-2j) 5.0
Округление после арифметических операций
value = 10 / 3
print(round(value, 2)) # 3.33
print(round(value, 4)) # 3.3333
print(round(2.5)) # 2 (банковское округление – к чётному)
print(round(3.5)) # 4
3.33 3.3333 2 4
Обратите внимание: функция round использует банковское округление (round half to even), что может быть неожиданным.