Числа
В этом уроке используются два числовых типа: 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 / 2→4.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 иногда делает неявное преобразование сам, например int → float в смешанном числовом выражении.
# 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