Чтобы извлечь корень в Python, подключите модуль math и вызовите math.sqrt(x): math.sqrt(25) вернёт 5.0. Без импорта сработает возведение в степень: 25 ** 0.5 даст тот же результат. Для целых чисел есть math.isqrt(), который возвращает целую часть корня без погрешности, а кубический корень с Python 3.11 считает math.cbrt().
Ниже все способы с выводом интерпретатора, ошибки, из-за которых расчёт падает или врёт, и остальные функции модуля math: факториал, логарифмы, тригонометрия и константы. Если вы только начинаете, сначала пригодится список основных команд Python.
Как извлечь квадратный корень через math.sqrt

Модуль math входит в стандартную библиотеку, ставить его не нужно. Порядок такой:
- В начале файла напишите
import math. - Вызовите
math.sqrt()и передайте число или переменную. - Результат сохраните в переменную или сразу выведите через
print().
import math
print(math.sqrt(25)) # 5.0
print(math.sqrt(2)) # 1.4142135623730951
print(type(math.sqrt(16))) # <class 'float'>
print(int(math.sqrt(16))) # 4
math.sqrt всегда возвращает float, даже когда корень целый: из 16 получится 4.0, а не 4. Нужно целое для индекса или счётчика, оберните результат в int() или берите math.isqrt(), о нём ниже. Как устроен сам тип, подробно разобрано в статье про целые числа и int().
Если корень нужен в нескольких местах, функцию можно импортировать по имени и писать короче:
from math import sqrt
print(sqrt(49)) # 7.0
Пять способов извлечь корень и когда какой брать
Один и тот же квадратный корень в питоне считается пятью путями. Разница в типе результата, в том, что происходит с отрицательным числом, и в том, нужен ли импорт.
| Способ | Пример | Результат | Когда брать |
|---|---|---|---|
math.sqrt(x) |
math.sqrt(25) |
5.0 |
обычный расчёт, понятное намерение в коде |
оператор ** |
25 ** 0.5 |
5.0 |
без импорта, корень любой степени |
встроенная pow() |
pow(25, 0.5) |
5.0 |
то же, что **, в виде функции |
math.isqrt(n) |
math.isqrt(26) |
5 |
целые числа любой длины, проверка на полный квадрат |
cmath.sqrt(x) |
cmath.sqrt(-4) |
2j |
корень из отрицательного числа |
Как работают ** и другие знаки арифметики, есть в разборе операторов Python. Для массивов в NumPy есть своя numpy.sqrt(): она считает корень поэлементно, сразу для всего массива.
import numpy as np
print(np.sqrt([4, 9, 16])) # [2. 3. 4.]
Целый корень через math.isqrt
Функция появилась в Python 3.8 и работает только с целыми неотрицательными числами. Она возвращает целую часть корня: из 26 получится 5, потому что 5² = 25, а 6² уже 36.
Главная польза в точности на больших числах. math.sqrt сначала переводит число во float, у которого 15–17 значащих цифр, и на длинных числах ошибается или падает. isqrt считает в целых и не теряет ни одной цифры:
import math
big = 10**30 + 1
print(math.isqrt(big * big) == big) # True
print(int(math.sqrt(big * big)) == big) # False
Отсюда короткая проверка, является ли число полным квадратом. Её удобно оформить функцией через def:
import math
def is_square(n):
r = math.isqrt(n)
return r * r == n
print(is_square(144)) # True
print(is_square(145)) # False
Тот же isqrt задаёт верхнюю границу перебора делителей, поэтому он стоит в коде решета Эратосфена.
Кубический корень и корень n-й степени

Корень степени n равен возведению в степень 1/n. Для кубического в Python 3.11 добавили отдельную функцию, по документации math.cbrt она возвращает кубический корень из x. В версиях до 3.11 вызов падает с AttributeError.
import math
print(math.cbrt(27)) # 3.0
print(math.cbrt(-8)) # -2.0
print(81 ** (1/4)) # 3.0
print(32 ** (1/5)) # 2.0
Почему 64 ** (1/3) не равно 4
Дробь 1/3 в двоичной записи бесконечна, float хранит её приближённо, и погрешность доходит до ответа:
print(64 ** (1/3)) # 3.9999999999999996
print(round(64 ** (1/3), 10)) # 4.0
Решение: для кубического корня берите math.cbrt(), а для корней других степеней округляйте результат через round() до нужного числа знаков. Почему float хранит большинство дробей приближённо, объясняет раздел Floating-Point Arithmetic официального учебника.
Кубический корень из отрицательного числа
Здесь оператор ** ведёт себя неожиданно. Отрицательное число в дробной степени Python возводит по правилам комплексных чисел и возвращает не −2, а комплексный корень:
import math
print((-8) ** (1/3)) # (1.0000000000000002+1.7320508075688772j)
print(math.cbrt(-8)) # -2.0
Если cbrt недоступен из-за старой версии, вынесите знак отдельно: -(8 ** (1/3)).
Корень в задачах: квадратное уравнение и расстояние
Чаще всего корень нужен в двух школьных формулах. Первая считает корни квадратного уравнения через дискриминант:
import math
def solve(a, b, c):
d = b * b - 4 * a * c
if d < 0:
return ()
root = math.sqrt(d)
return ((-b - root) / (2 * a), (-b + root) / (2 * a))
print(solve(1, -5, 6)) # (2.0, 3.0)
print(solve(1, 2, 1)) # (-1.0, -1.0)
print(solve(1, 0, 4)) # ()
Проверка d < 0 стоит до вызова sqrt, иначе на уравнении без действительных корней программа упадёт с ValueError. Коэффициенты обычно приходят от пользователя, и как их правильно прочитать, разобрано в статье про ввод числа через int(input()).
Вторая формула даёт расстояние между двумя точками по теореме Пифагора. Её можно записать вручную, а можно доверить math.dist(), которая появилась в Python 3.8:
import math
a = (1, 2)
b = (4, 6)
print(math.sqrt((b[0] - a[0]) ** 2 + (b[1] - a[1]) ** 2)) # 5.0
print(math.dist(a, b)) # 5.0
Результат один, но dist короче и работает с точками в любом числе измерений, если у обеих точек оно одинаковое.
Как подключить модуль math
Модуль встроен в интерпретатор, поэтому скачивать math или ставить его через pip не нужно: import math работает в любой установке Python. Вариантов импорта три:
| Запись | Как вызывать | Плюсы и минусы |
|---|---|---|
import math |
math.sqrt(9) |
сразу видно, откуда функция; самый частый вариант |
from math import sqrt, pi |
sqrt(9) |
короче, но имя легко перекрыть своей переменной |
from math import * |
sqrt(9) |
тянет все имена модуля, в учебном коде терпимо, в рабочем лучше не надо |
С Python 3.15 целочисленные функции isqrt, factorial, gcd, lcm, comb и perm живут в модуле math.integer. В math они остались псевдонимами для обратной совместимости, так что старый код не сломается. Остальные стандартные модули подключаются так же, например random для случайных чисел.
Какие ещё функции есть в модуле math
В модуле больше пятидесяти функций, но в учебных и рабочих задачах чаще всего встречаются эти:
| Задача | Функции | Пример и результат |
|---|---|---|
| округление | ceil, floor, trunc |
math.ceil(2.1) → 3 |
| степени и экспонента | pow, exp |
math.exp(1) → 2.718281828459045 |
| логарифмы | log, log2, log10 |
math.log(8, 2) → 3.0 |
| факториал и комбинаторика | factorial, comb, perm |
math.comb(5, 2) → 10 |
| делители | gcd, lcm |
math.gcd(12, 18) → 6 |
| тригонометрия | sin, cos, tan, radians, degrees |
math.sin(math.radians(30)) → 0.49999999999999994 |
| геометрия | hypot, dist |
math.hypot(3, 4) → 5.0 |
| константы | pi, e, tau, inf, nan |
math.pi → 3.141592653589793 |
Округление вверх подробно разобрано в статье про math.ceil, а остаток от деления дробных чисел через math.fmod() разобран в материале про оператор %. Полный список с описанием каждой функции лежит в документации модуля math.
Факториал в питоне
math.factorial(n) принимает только целое неотрицательное число. С Python 3.10 дробное 5.0 больше не принимается, даже если оно равно целому.
import math
print(math.factorial(5)) # 120
print(math.factorial(20)) # 2432902008176640000
Факториал часто дают как учебную задачу на рекурсию, но в рабочем коде быстрее и надёжнее готовая функция.
Число e и логарифмы
Константа math.e равна 2.718281828459045. Для степеней e удобнее math.exp(x): документация пишет, что она обычно точнее, чем math.e ** x. С логарифмами то же самое, log2 и log10 обычно точнее общего log(x, base).
import math
print(math.log(math.e)) # 1.0
print(math.log2(8)) # 3.0
print(math.log10(1000)) # 3.0
Частые ошибки и что с ними делать

Почти все проблемы с корнем в Python сводятся к шести ситуациям.
ValueError при отрицательном числе
math.sqrt(-4) падает с ValueError. До Python 3.14 сообщение звучит как math domain error, в 3.14 оно подробнее: expected a nonnegative input, got -4.0.
Решение: если комплексный ответ и нужен, берите модуль cmath. Если нет, проверьте число до вызова или поймайте исключение:
import math, cmath
print(cmath.sqrt(-4)) # 2j
try:
math.sqrt(-4)
except ValueError:
print("Корень из отрицательного числа не извлекается")
Та же ошибка бывает у math.log(0) и у логарифма отрицательного числа.
Комплексное число вместо ошибки
(-4) ** 0.5 не падает, а молча возвращает (1.2246467991473532e-16+2j). Дальше такое значение ломает сравнения и форматирование. Если в коде возможны отрицательные числа, math.sqrt безопаснее: он хотя бы сообщит об ошибке сразу.
NameError: name ‘math’ is not defined
Забыли import math или импортировали только sqrt, а вызываете math.sqrt. Импорт ставят в начало файла, до первого вызова.
TypeError: must be real number, not str
Так бывает, когда число пришло из input(): функция всегда возвращает строку, а корень из строки math.sqrt не считает.
Решение: переведите ввод в число до вызова.
import math
x = float("16") # так же сработает float(input())
print(math.sqrt(x)) # 4.0
Если пользователь может ввести буквы, оберните перевод в try/except ValueError, иначе программа упадёт уже на float().
OverflowError на огромных числах
math.sqrt(10 ** 400) падает с OverflowError: int too large to convert to float, потому что такое число не помещается во float. Для целых любой длины берите math.isqrt(): он отработает без потери точности.
sqrt(2) ** 2 не равно 2
Корень из 2 бесконечная дробь, и float хранит его приближённо:
import math
print(math.sqrt(2) ** 2) # 2.0000000000000004
print(math.sqrt(2) ** 2 == 2) # False
print(math.isclose(math.sqrt(2) ** 2, 2)) # True
Дробные результаты сравнивайте через math.isclose(), а не через ==. Для вывода пользователю округлите число в f-строке: f"{math.sqrt(2):.3f}" даст 1.414. Если нужна точность в десятки знаков, у модуля decimal есть свой метод Decimal.sqrt().
Где освоить Python системно
Корень и модуль math решают одну узкую задачу. Чтобы уверенно писать программы, нужны типы данных, циклы, функции, работа с файлами и библиотеками. Всё это удобнее проходить по программе с практикой и проверкой кода.
Потренироваться на простых упражнениях можно в подборке задач по Python для начинающих, а ниже курсы, где язык учат с нуля до проектов. Все программы собраны на странице курсов по Python.
| Курс | Школа | Стоимость со скидкой | В рассрочку | Длительность | Обзор курса от Checkroi |
|---|---|---|---|---|---|
| Профессия «Python-разработчик» Перейти на сайт курса | 157 335 ₽ | 5987 ₽/мес. | 10 месяцев | Обзор курса | |
| Fullstack-разработчик на Python Перейти на сайт курса | 137 000 ₽ | 7125 ₽/мес. | 21 месяц | Обзор курса | |
| ДО Профессия Python-разработчик Перейти на сайт курса | 149 001 ₽ | 3167 ₽/мес. | 10 месяцев | Обзор курса | |
| Автоматизированное тестирование на Python Перейти на сайт курса | 122 226 ₽ | 4108 ₽/мес. | 9 месяцев | Обзор курса | |
| Профессия Python-разработчик Перейти на сайт курса | 140 040 ₽ | 3890 ₽/мес. | 10 месяцев | Обзор курса |
Больше программ — в полном каталоге курсов по Python




