Как возвести число в степень в Python?
Возведение в степень — популярная операция в программировании. Кажется, что она довольно простая и получить результат можно быстро. Это действительно так, если знать тонкости работы с функциями. В статье расскажем об основных способах возведения числа в степень в Python — каждый из них имеет свои особенности.
Степень числа отражает то, сколько раз оно умножается само на себя. Мы знакомы с этим понятием со школы — степень использовалась в различных уравнениях, задачах и примерах. Оказывается, никуда без этой операции и в программировании. В Питоне есть разные методы для возведения числа в квадрат или куб — рассмотрим каждый из них по порядку, начиная с самого простого.
Оператор **
В Python оператор** создан специально для возведения в степень — его ставят между основанием и числом степени. Функционал ** расширяет возможности привычного оператора умножения * — вот только второй знак указывает на то, сколько раз первый оператор должен быть умножен сам на себя.
# Переменная «a» равна двум в четвёртой степени
a = 2**4
print(a)
# Вывод: 16
Станьте Python-разработчиком, пройдя курсы по специальности. Собрали лучшие варианты с сайта tutortop:
- «Python-разработчик с нуля» от Skypro
- «Разработчик на Python» от Eduson Academy
- «Бэкенд-разработчик на Python» от SF Education
- «Python-разработчик с нуля» от Нетологии
Функция 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(). Самым простым и понятным, а к тому же быстрым оказался метод использования оператора **. Но не стоит забывать, что необходимо учитывать устройство и платформу, на которой вы пишете код. Не забывайте про читаемость и возможность дальнейшей поддержки.
В Excel можно легко создавать графики и диаграммы, которые помогают наглядно и понятно визуализировать информацию. В этой статье рассказываем, как быстро построить разные графики в Excel. Простейший график изменений Сначала откройте...
В камере хранения есть отсеки, которые наполняются содержимым. Мы складываем вещи в шкаф на полки или заливаем воду в формочки для льда. Всё это схоже с работой массивов в Java. В них содержится сразу несколько значений. Это удобно, ведь каждый раз...
Сводные таблицы — удобный инструмент для анализа большого количества вводных данных. Их часто используют для финансовой отчётности в компаниях, где много различной продукции. Так можно быстро узнать о количестве продаж одного наименования, посмотрет...
Фотостоки наполнены фотографиями различной тематики — пейзажи, портреты, спорт, красота и здоровье. На таких сайтах легко найти фото на любой вкус. Там можно не только покупать снимки, но и продавать их, получать неплохой пассивный доход. Загружать...
Китайский язык — является главным трендом лингвистики начиная с 2020 года. Он стал популярным благодаря активной международной политике, древнему происхождению и невероятной сложности. Согласитесь, обилие китайских иероглифов немного пугает, как и р...
Сегодня рассказываем, что такое глитч эффект, как создать эффект помех на фотографии с помощью Adobe Photoshop, и приводим пошаговый урок по обработке в фотошопе. Если вы хотите научиться создавать такой эффект или другие интересные эффекты...