Дата обновления: 13 Июня 2024
18.07.2023
6667
5 мин
author-avatar
Анна Уженкова

Как возвести число в степень в Python?

Возведение в степень — популярная операция в программировании. Кажется, что она довольно простая и получить результат можно быстро. Это действительно так, если знать тонкости работы с функциями. В статье расскажем об основных способах возведения числа в степень в Python — каждый из них имеет свои особенности. 

Степень числа отражает то, сколько раз оно умножается само на себя. Мы знакомы с этим понятием со школы — степень использовалась в различных уравнениях, задачах и примерах. Оказывается, никуда без этой операции и в программировании. В Питоне есть разные методы для возведения числа в квадрат или куб — рассмотрим каждый из них по порядку, начиная с самого простого.

Парень в очках сидит за столом с ноутбуком и смотрит в сторону

Оператор **

В Python оператор** создан специально для возведения в степень — его ставят между основанием и числом степени. Функционал ** расширяет возможности привычного оператора умножения * — вот только второй знак указывает на то, сколько раз первый оператор должен быть умножен сам на себя.

# Переменная «a» равна двум в четвёртой степени

a = 2**4

print(a)

# Вывод: 16

Станьте Python-разработчиком, пройдя курсы по специальности. Собрали лучшие варианты с сайта tutortop:

Функция pow()

В Python есть не только оператор **, но и функция pow(). Вам нужно передать в неё два аргумента — первый из них будет числом для возведения в степень, а второй — число степени:

# Переменная «a» равна пяти в третьей степени

a = pow(5, 3)

print(a)

# Вывод: 125

Есть похожая функция math.power() — принцип работы одинаковый, но она возвращает результат в типе данных float. Это значит, что значение числа всегда будет с плавающей точкой, даже если вы передадите целые числа. Pow() же может вернуть число с плавающей точкой в том случае, если идентичным был хотя бы один из аргументов. Пример:

# Переменная «a» равна пяти в третьей степени

a = math.pow(5, 3)

print(a)

# Вывод: 125.0

К этому модулю относится и логарифмирование. Логарифмом числа «b» по основанию «a» зовётся такой показатель степени, в который следует возвести «a», чтобы получить «b»:

import math

# найдём логарифм 625 по основанию 25

# 625 — основание логарифма, а 25 — аргумент

log = math.log(625, 25)

print(log)

> 2.0

Модуль numpy

В этом варианте будем использовать библиотеку под названием numpy. Этот модуль не входит в стандартную библиотеку Python — его дополнительно нужно установить. Перейдите в терминал или командную строку, пропишите pip install numpy, нажмите Enter и ждите инсталляции.

В numpy есть функция power() — именно она позволяет возводить числа в степень. С аргументами здесь всё схоже с pow(), первый — это основание, а второй — значение степени. Вместо numpy.power пишут numpy as np:

import numpy as np

# Вывод результата 2 в 5 степени

print(np.power(2, 5))

# Вывод: 32

Руки на ноутбуке

Скорость работы с большими числами

Интересно сравнить скорость работы разных методов возведения числа в степень, чтобы выбрать оптимальный для выполнения различных задач. Допустим, нам нужно возвести число 2 в степень 134890678:

start = time.process_time()

val = 2**134890678

print(‘** за’, time.process_time() — start, ‘ms’)

start = time.process_time()

val = pow(2, 134890678)

print(‘pow() за’, time.process_time() — start, ‘ms’)

start = time.process_time()

val = math.pow(2, 134890678)

print(‘math.pow() за’, time.process_time() — start, ‘ms’)

start = time.process_time()

val = np.power(2, 134890678)

print(‘np.power() за’, time.process_time() — start, ‘ms’)

оператор ** за 0.0009847609999837914 ms 

pow() за 0.013787384000011116 ms 

np.power() за 0.09736091600001373 ms

OverflowError: math range error

Сложнее всего оказалось функции math.pow() — она вернула ошибку OverflowError. При работе с ней стоит помнить, что она не всегда справляется с большими значениями степени. Помните,  что результаты во многом зависят от устройства и платформы, на которой проводится тестирование. Здесь оператор ** справился с задачей быстрее всех, но часто бывает так, что numpy не оставляет другими шанса на победу. 

В блоге читайте о функциях append() и extend() в Python и онлайн-играх, которые помогут освоить программирование на Python.

Главные мысли 

Возведение в степень — операция, которую часто используют в программировании. Мы рассмотрели три основных способа возведения в степень в Python — это оператор **, функции pow(), math.pow() и numpy.power(). Самым простым и понятным, а к тому же быстрым оказался метод использования оператора **. Но не стоит забывать, что необходимо учитывать устройство и платформу, на которой вы пишете код. Не забывайте про читаемость и возможность дальнейшей поддержки. 

Хочу стать Python-разработчиком!
Специально для вас мы собрали отдельную подборку лучших онлайн-курсов по Python на рынке и сравнили их по цене, продолжительности и отзывам студентов.
Посмотреть подборку