📖 Теория: Арифметические операторы, выражения

← К оглавлению урока

⚡ Кратко

Для чисел доступны сложение, вычитание, умножение, деление, целочисленное деление, остаток и степень. Выражения считаются по математическому приоритету, а скобки явно меняют порядок. Операция сама по себе не меняет число в переменной: результат нужно присвоить. Ввод через input() — строка, поэтому для расчётов нужны int() или float().

Числа

В этом уроке используются два числовых типа: int для целых чисел и float для чисел с дробной частью. Арифметические операции работают с литералами и с переменными, в которых лежат числа.

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

# arithmetic.py
print("Сложение:", 3 + 5)
print("Вычитание:", 7 - 2)
print("Умножение:", 4 * 6.0)
print("Деление:", 8 / 2)
print("Целочисленное деление:", 7 // 2.0)
print("Остаток от деления:", 7 % 3)
print("Степень:", 2 ** 3)
  • / всегда возвращает дробный результат: 8 / 24.0.
  • Если хотя бы одна часть выражения float, результат обычно тоже float.
  • // возвращает целую часть результата с округлением вниз.

ZeroDivisionError

ZeroDivisionError возникает при делении на ноль, целочисленном делении на ноль и остатке от деления на ноль.

# zero_division.py
a = 10
b = 0
result = a / b  # ZeroDivisionError

Приоритет операций

Python считает выражения по приоритету: скобки, степень, умножение/деление////%, затем сложение и вычитание.

# precedence.py
print(5 + 3 * 2)      # 11
print((2 + 3) * 4)    # 20
print(2 * 3 ** 2)     # 18
print(10 / 2 * 3)     # 15.0

Неизменяемые типы данных

Числа относятся к неизменяемым типам. Выражение num + 2 создаёт результат, но не меняет num, если результат не присвоен.

# immutable_numbers.py
num = 5
num + 2
print(num)  # 5

num = num + 2
print(num)  # 7

Операторы приращения

Составное присваивание записывает «взять текущее значение, выполнить операцию и сохранить результат обратно».

# augmented_assignment.py
a = 5
a += 1
print(a)  # 6

a *= 2
print(a)  # 12

Множественное присваивание

# multiple_assignment.py
a, b, c = 1, 2, 3
print(a, b, c)

x = y = z = 0
print(x, y, z)

a, b = 5, 10
a, b = b, a
print(a, b)  # 10 5

Преобразование типов

input() возвращает строку. Для арифметики её нужно явно привести к числу: int() или float(). Python иногда делает неявное преобразование сам, например intfloat в смешанном числовом выражении.

# conversion.py
num1 = "10"
num2 = "5.0"
result = int(num1) / float(num2)
print(result)  # 2.0

value = 5
value += 3.14
print(type(value))  # <class 'float'>

ValueError

ValueError возникает, когда тип аргумента подходит, но значение не может быть обработано. Например, строка "abc" является строкой, но не числом.

# value_error.py
number = float("abc")  # ValueError