Глава 5 · Давайте поиграем с числами!

Степени и корни

Возведение в степень и извлечение корня — одна и та же геометрическая картинка, прочитанная в двух направлениях.

Теперь — операция, у которой самая красивая геометрическая картинка из всех: возведение в степень.

Квадрат числа — это площадь квадрата

x ** 2 — площадь квадрата со стороной x:

16сторона = 4
4 ** 2 = 16 — площадь квадрата со стороной 4
kvadrat.py
print(4 ** 2)    # 16
print(4 ** 3)    # 64 — куб: та же идея, но в трёх измерениях (объём)

Квадратный корень — обратная операция: от площади к стороне

Если известна площадь квадрата, можно найти длину его стороны — это и есть квадратный корень. Та же картинка, только читаем её в обратную сторону: у нас есть число 16 внутри квадрата, и мы ищем сторону.

16сторона = 4
√16 = 4 — обратная задача: дана площадь, ищем сторону
koren.py
print(16 ** 0.5)     # 4.0 — степень 0.5 и есть квадратный корень
import math
print(math.sqrt(16))  # 4.0 — то же самое, но явно и понятно для читателя
math.sqrt() читается лучше, чем ** 0.5
Оба варианта работают одинаково правильно, но math.sqrt(16) сразу говорит читателю кода: «здесь ищут корень». 16 ** 0.5 заставляет вспоминать, что 0.5 — это корень.

Три способа возвести в степень — и в чём разница

СпособЧто возвращаетПример
**int, если оба операнда int; иначе float2 ** 101024
pow(a, b)то же самое, что a ** bpow(2, 10)1024
math.pow(a, b)всегда float, даже для целых чиселmath.pow(2, 10)1024.0
У pow() есть и третий, необязательный аргумент
pow(a, b, m) считает (a ** b) % m, но намного быстрее — для больших чисел это ускоряет работу в тысячи раз. Используется, например, в криптографии. Пока достаточно знать, что такая возможность существует.
Практика: степени и корни
Тот же ноутбук, что закрепляет //, % и ** вместе — самое время попрактиковать все специальные операторы разом
Открыть практику →