Корень в Python: как извлечь квадратный, кубический и корень n-й степени

Квадратный корень в Python считает math.sqrt(x) после import math, а без импорта сработает x ** 0.5.

Разбираем целый корень через math.isqrt, кубический через math.cbrt, корень из отрицательного числа и ошибки ValueError и OverflowError.

В конце карта остальных функций модуля math: факториал, логарифмы, тригонометрия.

Статью написал:
Ваня Буявец, продюсер, основатель Checkroi
Ваня Буявец
Основатель Checkroi, продюсер, эксперт в выборе онлайн-курсов
Все 3119 статей автора Подписаться на Телеграм-канал
Одобрено экспертом:
Наташа Буявец, основатель Checkroi, эксперт по онлайн-курсам
Наташа Буявец
Основательница Checkroi, продюсер Youtube-каналов, эксперт по онлайн-курсам
Все 3773 экспертных мнения Подписаться на Телеграм-канал
Обложка: Корень в Python: как извлечь квадратный, кубический и корень n-й степени

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

Ниже все способы с выводом интерпретатора, ошибки, из-за которых расчёт падает или врёт, и остальные функции модуля math: факториал, логарифмы, тригонометрия и константы. Если вы только начинаете, сначала пригодится список основных команд Python.

CheckroiCheckroiПодборка курсов по Python569 курсов • 52 школыСравните цены, школы, программу и найдите выгодные предложения по обучениюСравнить→

Как извлечь квадратный корень через math.sqrt

Рой пишет на Python функцию для квадратного корня

Модуль math входит в стандартную библиотеку, ставить его не нужно. Порядок такой:

  1. В начале файла напишите import math.
  2. Вызовите math.sqrt() и передайте число или переменную.
  3. Результат сохраните в переменную или сразу выведите через 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 задаёт верхнюю границу перебора делителей, поэтому он стоит в коде решета Эратосфена.

Канал основателя Checkroi Вани Буявца3 700 человек читают мой Телеграм-канал про нейросетиСобрал промпты для Claude Code и ChatGPT, разборы ИИ-инструментов и лайфхаки по продвижению бизнеса в одном местеПрисоединиться

Кубический корень и корень 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
Ваня БуявецКанал основателя Checkroi Вани БуявцаЗабирайте промпты и обучение по нейросетям в моём Телеграм-каналеБольше 3 700 человек уже применяют Claude Code, ChatGPT и другие нейросети в работе, учёбе, бизнесе и жизниПерейти в канал

Частые ошибки и что с ними делать

Рой радуется, что нашёл ошибку в расчёте

Почти все проблемы с корнем в 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-разработчик»
Перейти на сайт курса
SkillboxSkillbox157 335 ₽5987 ₽/мес.10 месяцевОбзор курса
Fullstack-разработчик на Python
Перейти на сайт курса
НетологияНетология137 000 ₽7125 ₽/мес.21 месяцОбзор курса
ДО Профессия Python-разработчик
Перейти на сайт курса
GeekBrainsGeekBrains149 001 ₽3167 ₽/мес.10 месяцевОбзор курса
Автоматизированное тестирование на Python
Перейти на сайт курса
SkillboxSkillbox122 226 ₽4108 ₽/мес.9 месяцевОбзор курса
Профессия Python-разработчик
Перейти на сайт курса
SkillFactorySkillFactory140 040 ₽3890 ₽/мес.10 месяцевОбзор курса

Больше программ — в полном каталоге курсов по Python

Часто задаваемые вопросы

Как извлечь корень в питоне без импорта?

Возведите число в степень 0.5 оператором **: 25 ** 0.5 вернёт 5.0. Для корня n-й степени степень равна 1/n, например 81 ** (1/4) даёт 3.0.

Чем math.sqrt отличается от math.isqrt?

math.sqrt возвращает дробный результат типа float, math.isqrt принимает только целое неотрицательное число и возвращает целую часть корня: math.isqrt(26) даёт 5. На очень больших числах isqrt точнее, потому что не переводит число во float.

Как посчитать кубический корень в Python?

С Python 3.11 есть math.cbrt(x): math.cbrt(27) вернёт 3.0, а math.cbrt(-8) вернёт -2.0. Запись (-8) ** (1/3) для отрицательных чисел даёт комплексное число, поэтому для них лучше cbrt.

Почему math.sqrt выдаёт ValueError?

Функция не извлекает корень из отрицательного числа. Если нужен комплексный ответ, берите cmath.sqrt(-4), он вернёт 2j. Если нет, проверьте число перед вызовом или обработайте исключение через try/except.

Нужно ли скачивать модуль math?

Нет. Модуль math входит в стандартную библиотеку Python и подключается строкой import math в начале файла, без pip и отдельной установки.

Как посчитать факториал в питоне?

Вызовите math.factorial(n): math.factorial(5) вернёт 120. Функция принимает только целое неотрицательное число, с Python 3.10 дробное 5.0 она не принимает.

Читайте Checkroi первым в Google
Добавьте Checkroi в избранные источники — и наши разборы курсов и обзоры школ будут показываться выше в вашей выдаче Google.
Оставить комментарий
0 комментариев
Форма комментария

Оставьте комментарий

Напишите, что думаете. Нам важно ваше мнение!