Как найти степень числа в python

Содержание:развернуть

  • История
  • Определение
  • Обратные операции
  • Извлечение корня

  • Логарифмирование

  • Степень
  • Целочисленная

  • Рациональная

  • Вещественная

  • Ноль в степени ноль

Когда я был студентом, мой преподаватель по методам программирования любил повторять: “В математике все идеи простые”. Чаще всего, фраза звучала в момент объяснения новой сложной темы, а потому вызывала определённые внутренние противоречия.

С возведением в степень всё не так — это действительно простая операция.

История

Возведение в степень — частный случай умножения, поэтому данную операцию изначально не рассматривали, как самостоятельную. Но уже в работах Диофанта Александрийского степени отведено особое место. В частности “Отец Алгебры” применял понятия кубов и квадратов числа.

Возведение в степень определяется как результат n-кратного умножения числа самого на себя.

Эта операция была известна ещё в древнем Вавилоне, однако современный её вид устоялся лишь в XVII веке.

Как умножение позволяет сократить количество символов сложения:

6 + 6 + 6 + 6 + 6 + 6 = 6 * 6

Так и степень сокращает запись умножения:

  • 6 — это основание;
  • 2 — показатель степени (это число говорит о том, сколько раз число в основании должно быть умножено само на себя).

До воцарения числового показателя, были и другие варианты его записи. Математики раннего Возрождения использовали буквы. Например, Q обозначала квадрат, а C — куб. Различные формы записи возведения в степень не обошли и языки программирования.

Для АЛГОЛа и некоторых диалектов Бейсика применяется значок ↑. В матлабе, R, Excel-е и Хаскеле используется “циркумфлекс” — ^ или “галочка”. Этот символ популярен и вне программирования.

Определение

В Python возведение в степень записывается при помощи двойной “звёздочки” — “**

a = 2 ** 4

print(a)
> 16

Вторая форма записи — встроенная функция pow():

# первый аргумент — основание, а второй — показатель
b = pow(2, 4)

print(b)
> 16

Обратные операции

Извлечение корня

У возведения в степень две обратные операции. Первая — извлечение корня. Подробнее о корнях в Python вы можете почитать в нашей статье. Отметим лишь, что корень в питоне вычисляется с помощью той же функции pow():

# корень четвёртой степени из 16
root = pow(16, (1/4))

print(root)
> 2.0

Либо с применением оператора “**“:

# корень кубический из 27
cub_root = 27 ** (1/3)

print(cub_root)
> 3.0

Для извлечения квадратного корня справедливы оба вышеуказанных способа, но существует и третий, специализированный. Для его применения требуется импортировать модуль math:

import math

# квадратный корень из 100
sqr_root = math.sqrt(100)

print(sqr_root)
> 10.0

Логарифмирование

Логарифмирование — вторая обратная операция.

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

Здесь x — логарифм. Пример из математики — найдем значение выражения:

Легче всего эта запись читается в формате вопроса: “В какую степень нужно возвести 2, чтобы получить 16?”. Очевидно, в 4-ю. Следовательно,

В питоне операция нахождения логарифма также заложена в функционал модуля math:

import math

# отыщем логарифм 100 по основанию 10
# 100 — основание логарифма, а 10 — аргумент
log = math.log(100, 10)

print(log)
> 2.0

Степень

Целочисленная

В целочисленную степень можно возводить положительные и отрицательные int и float числа:

# int
print(3 ** 9)
> 19683

print(pow(-2, 10))
> 1024

# float
print(3.14 ** 9)
> 29673.367320587102

print(pow(-1.1, 1001))
> -2.7169262098066285e+41

И функция pow() и оператор “**” умеют возводить комплексные числа:

# complex
a = complex(2, 1)
print(pow(a, 2))
> (3+4j)

print(a ** 2)
> (3+4j)

Показатель степени может быть положительным, отрицательным и нулевым:

# +
print(12 ** 4)
> 20736

# -
print(100 ** -2)
> 0.0001

# 0
print(1231 ** 0)
> 1

Результат не определён, когда 0 возводят в отрицательную степень:

print(0 ** -4)
> ZeroDivisionError: 0.0 cannot be raised to a negative power

Ошибка деления на ноль возникает из-за следующего свойства степени:

Рациональная

Возведение числа в рациональную степень напрямую связано с извлечением корня из этого числа отношением:

Если рациональный показатель отрицательный, а основание равно нулю, то Питон все ещё будет выдавать ошибку:

print(0 ** -(5/4))
> ZeroDivisionError: 0.0 cannot be raised to a negative power

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

print(pow(-5, (5/4)))
> (-5.286856317202822-5.286856317202821j)

print(type(pow(-5, (5/4))))
> <class 'complex'>

В остальном возведение в рациональную степень работает, как и для целочисленной:

print(0 ** (3/2))
> 0.0

print(pow(1, (23/24)))
> 1.0

print(10 ** (6/7))
> 7.196856730011519

Вещественная

В начале автор объявил, что возведение в степень — штука несложная. Так вот, для вещественных степеней это уже не совсем так. Идеи, заложенные в эту операцию, хоть и просты, но их много, и каждая из них достойна собственной статьи. Описать вкратце разложение в ряд Тейлора и численное интегрирование не получится. Это будет не справедливо, как по отношению к вам, так и к математике. Поэтому, выделим главное:

Python умеет возводить в вещественную степень даже вещественные числа (пусть и псевдо)

Сделать такое инструментами математики ой как непросто:

# возведём число Пи в степень e
print(pow(math.pi, math.e))
> 22.45915771836104

Ноль в степени ноль

Дискуссии по поводу значения 0 в степени 0 продолжаются уже больше двух веков. Обычно значение нуля в нулевой степени принято считать неопределённым, но символическое соглашение о том, что “0 в степени 0 равно 1” помогает в записи формул и алгоритмов. Ровно поэтому так сделано и в Python:

print(pow(0, 0))
> 1

print(0 ** 0)
> 1

В этом руководстве разберем процесс возведения в степень в Python.

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

Оператор ** для возведения в степень

Многие разработчики считают, что символ карет (^) — это оператор возведения числа в степень, ведь именно он обозначает эту операцию в математике. Однако в большинстве языков программирования этот знак выступает в качестве побитового xor.

В Python оператор возведения в степень обозначается двумя символами звездочки ** между основанием и числом степени.

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

print(5**6)

Чтобы умножить число 5 само на себя 6 раз, используется ** между основанием 5 и операндом степени 6. Вывод:

15625

Проверим оператор с другими значениями.

Инициализируем целое число, отрицательное целое, ноль, два числа с плавающей точкой float, одно больше нуля, а второе — меньше. Степеням же присвоим случайные значения.

num1 = 2
num2 = -5
num3 = 0
num4 = 1.025
num5 = 0.5

print(num1, '^12 =', num1**12)
print(num2, '^4 =', num2**4)
print(num3, '^9999 =', num3**9999)
print(num4, '^-3 =', num4**-3)
print(num5, '^8 =', num5**8)

Вывод:

2 ^12 = 4096
-5 ^4 = 625
0 ^9999 = 0
1.025 ^-3 = 0.928599410919749
0.5 ^8 = 0.00390625

pow() или math.power() для возведения в степень

Также возводить в степень в Python можно с помощью функции pow() или модуля math, в котором есть своя реализация этого же модуля.

В обе функции нужно передать два аргумента: основание и саму степень. Попробуем вызвать обе функции и посмотрим на результат.

import math

print(pow(-8, 7))
print(math.pow(-8, 7))

print(pow(2, 1.5))
print(math.pow(2, 1.5))

print(pow(4, 3))
print(math.pow(4,3))

print(pow(2.0, 5))
print(math.pow(2.0, 5))

Вывод:

-2097152
-2097152.0
2.8284271247461903
2.8284271247461903
64
64.0
32.0
32.0

Отличие лишь в том, что math.pow() всегда возвращает значение числа с плавающей точкой, даже если передать целые числа. А вот pow() вернет число с плавающей точкой, если таким же был хотя бы один из аргументов.

numpy.np() для возведения в степень

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

Выведем те же результаты.

print(np.power(-8, 7))
print(np.power(2, 1.5))
print(np.power(4, 3))
print(np.power(2.0, 5))

-2097152
2.8284271247461903
64
32.0

Как получить квадрат числа в Python?
Для возведения числа в квадрат, нужно указать 2 в качестве степени. Встроенной функции для получения квадрата в Python нет.
Например, квадрат числа 6 — 6**2 —> 36.

Сравнение времени работы разных решений

Теперь сравним, сколько занимает выполнение каждой из трех функций и оператора **. Для этого используем модуль timeit.

Основанием будет 2, а значением степени — 9999999.

import numpy as np
import math
import time

start = time.process_time()
val = 2**9999999
print('** за', time.process_time() - start, 'ms')

start = time.process_time()
val = pow(2, 9999999)
print('pow() за', time.process_time() - start, 'ms')

start = time.process_time()
val = np.power(2, 9999999)
print('np.power() за', time.process_time() - start, 'ms')

start = time.process_time()
val = math.pow(2, 9999999)
print('math.pow() за', time.process_time() - start, 'ms')

** за 0.078125 ms
pow() за 0.0625 ms
np.power() за 0.0 ms
Traceback (most recent call last):
  File "C:ProgramsPythonPython38test.py", line 18, in 
    val = math.pow(2, 9999999)
OverflowError: math range error

В первую очередь можно обратить внимание на то, что math.pow() вернула ошибку OverflowError. Это значит, что функция не поддерживает крупные значения степени.

Различия между остальными достаточно простые, но можно увидеть, что np.power() — самая быстрая.

In this article, we will show you how to find the power of a number in python. Below are the various methods to accomplish this task −

  • Using for loop

  • Using Recursion

  • Using pow() function

  • Using ** operator

Using for loop

Algorithm (Steps)

Following are the Algorithm/steps to be followed to perform the desired task –.

  • Create a function findPower() that returns the power of a Number. The function accepts number, and exponent value as parameters.

  • Take a variable that stores the result and initialize its value with 1.

  • To obtain the power, multiply the given number by the result exponent. We use the below loop to multiply the exponent number of times

  • Use the for loop, to traverse in the range 1 to given exponent+1.

  • Inside the loop, Multiply the result by the given number

  • Use the return keyword to return the resultant power.

  • Create 2 separate variables for storing input number and exponent values.

  • Call the above-defined findPower() function by passing the input number, and exponent values as arguments to it and print the returned result of function.

  • In the same way, calculating for other numbers

Example

The following program returns the power of a number using the for loop–

def findPower(number, exponent): resultPower =1 for i in range(1, exponent+1): resultPower=resultPower*number return resultPower number = 5 exponent = 3 print("Value of",number,"raised to the power",exponent,"(",number,"^",exponent,") =", findPower(number,exponent)) number = 4 exponent = 0 print("Value of",number,"raised to the power",exponent,"(",number,"^",exponent,") =", findPower(number,exponent))

Output

On executing, the above program will generate the following output −

Value of 5 raised to the power 3 ( 5 ^ 3 ) = 125
Value of 4 raised to the power 0 ( 4 ^ 0 ) = 1

Using Recursion

Algorithm (Steps)

Following are the Algorithm/steps to be followed to perform the desired task –.

  • Create a function findPower() that returns the power of a Number. The function accepts number, power/exponent value as parameters

  • Use the if conditional statement, to check whether the exponent value passed is equal to 0.

  • Return 1 if the condition is true i,e, exponent value is 0.

  • Subtract the exponent value by 1 and return the resultant power using recursive logic.

  • Call the above-defined findPower() function by passing the input number, and exponent values as arguments to it and print the returned result of function.

Example

The following program returns the power of a number using the recursive logic –

def findPower(number, exponent): if exponent == 0: return 1 return number * findPower(number, exponent-1) number = 5 exponent = 3 print("Value of",number,"raised to the power",exponent,"(",number,"^",exponent,") =", findPower(number,exponent))

Output

On executing, the above program will generate the following output −

Value of 5 raised to the power 3 ( 5 ^ 3 ) = 125

Using pow() function

In Python, the pow() function calculates the power of any positive integer.

It returns the value of x to the power of y (x^y).

Syntax

pow(x,y)

Parameters

  • x – It is the numerical value (base value)

  • y – It is the power of numerical value (exponent value)

Algorithm (Steps)

Following are the Algorithm/steps to be followed to perform the desired task –.

  • Create a variable to store the input number.

  • Create another variable to store the exponent/power value.

  • Use the pow() function to print the resultant power of a number i.e, inputNumber ^ inputPower by passing the number, and exponent values as arguments to it and print the resultant power.

Example

The following program returns the power of a number using the pow() function –

inputNumber = 5 inputPower = 3 print("Value of 5 raised to the power 3(5^3)=", pow(inputNumber, inputPower))

Output

On executing, the above program will generate the following output −

Value of 5 raised to the power 3(5^3)= 125

Using ** operator

The exponential operator(**) can be used to calculate the power of a number.

Since importing a module or calling a function is not necessary, this is the most convenient to use.

Algorithm (Steps)

Following are the Algorithm/steps to be followed to perform the desired task –.

  • Create a variable to store the input number.

  • Create a variable to store the exponent/power value.

  • Use the exponential operator(**) to print the resultant power of a number i.e, inputNumber ^ inputPower.

Example

The following program returns the power of a number using the ** operator –

inputNumber = 6 inputPower = 2 print("Value of 6 raised to the power 2(6^2)=", inputNumber**inputPower)

Output

On executing, the above program will generate the following output –

Value of 6 raised to the power 2(6^2)= 36

Conclusion

In this article, we learned four different Python methods for calculating the power of a given number and exponent. We also learned how to calculate power without the use of built-in functions.

Любые более-менее серьёзные программы делают какие-то вычисления. Поэтому без математики никак. И поэтому во всех языках программирования имеется довольно много математических функций.

Одна из самых востребованных – это функция возведения в степень. Можно, конечно, обойтись и без функций. Например, возвести число в квадрат можно так:

x = x * x

Можно и в куб возвести:

x = x * x * x

А вот дальше уже утомительно. Особенно если возводить в степень надо не переменную, а выражение, или степень является не целым числом, а вещественным.

Поэтому и есть в языках программирования специальные функции. Например, в Паскале это функция Power.

А вот в Python сделали более хитро – вызов какой-то функции здесь не требуется. Возведение в степень выполняется с помощью оператора **. Вот так:

2 ** 4

Здесь мы возвели число 2 в степень 4.

Так же можно, и, например, извлечь квадратный корень:

25 ** (1/2)

Но! Будьте внимательны! Здесь можно допустить труднонаходимую ошибку!

Если вы напишите так:

25 ** 1/2

То получите неожиданный результат – 12,5 вместо 5. Потому что возведение в степень – это операция с более высоким приоритетом, чем деление, поэтому фактически этот код будет таким:

(25 ** 1) / 2

То есть сначала число 25 будет возведено в степень 1, а результат будет разделён на 2.

Ну и убедиться в том, что всё это работает, вы можете в интерпретаторе:

Возведение в степень в Python

На этом пока всё. Подписывайтесь на канал, чтобы не пропустить новые статьи и видео.

Числа очень часто применяются в программирование для ведения счета в играх, представления данных в визуализации, хранение информации и т.д.

Содержание страницы:                                      
1. Типы чисел 
2. Арифметические операторы 
2.1. Сложение и  вычитание 
2.2. Умножение 
2.3. Возведение в степень 
2.4. Деление 
2.5. Деление с округлением 
2.6. Оператор вычисления остатка от деления
3. Исключения и трассировка

1. Типы чисел в Python.

В Python числа делятся на несколько категорий в соответствии со способом их использования. Основные это целые числа (int) и вещественные (float) или числа с плавающей точкой. Чтобы узнать к какому типу относится число или переменная, можно воспользоваться встроенной функцией type(). Запустите командную строку и активируйте Python. В скобках введите число или переменную, чтобы узнать ее тип.

>>> type(5)                                                                  
<class ‘int’>

>>> type(12.5)
<class ‘float’>

>>> x = 10
>>> type(x)
<class ‘int’>

Значение 12,5 является числом с плавающей точкой, поэтому Python выводит строку float. Переменная x содержит целое число 10, поэтому Python выводит тип int (сокращение от integer). 

2. Арифметические операторы Python.

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

Арифметические операторы Python

Операции Python  Арифметический оператор Алгебраическое выражение Выражение Python
Сложение + a + b a + b
Вычитание a – b a – b
Умножение * a · b a * b
Возведение в степень ** xy a ** b
Деление / x / y x / y
Целочисленное деление // [ x / y ] x // y
Остаток от деления % r mod s  r % s

2.1. Сложение и  вычитание в Python.

Сложение и  вычитание в целом выполняется и записывается, как и обычно в алгебре. 

>>> 5 + 2
7
>>> 5 2
3

2.2. Умножение в Python* )

В Python в качестве оператора умножения используется знак * (звездочка)

>>> 5 * 5
25

2.3. Возведение в степень в Python** )

В Python для возведения в степень используются два знака **

>>> 5 ** 6
15625
>>> 81 **(1/2)
9.0

Для вычисления квадратного корня можно воспользоваться показателем степени 1/2. Корень 81 = 9.

2.4. Деление в Python/ )

Оператор деления ( / ) делит числитель на знаменатель

>>> 10 / 2
5.0
>>> 10 / 8
1.25

 Важно, при делении двух любых чисел – даже если это целые числа, частным от деления которых является целое число, вы всегда получаете вещественное число. 

2.5. Деление с округлением в Python// )

Операция целочисленное деление ( // ) делит числитель на знаменатель, в результате получается наибольшее целое число, не превышающее результат. В Python дробная часть отсекается. 

>>> 10 // 8
1
>>> 20 // 8
2
>>> – 17 // 4
-5

При обычном деление 10 на 8, получается результат 1,25. Python отсекает дробную часть и в итоге получаем 1.

2.6. Оператор вычисления остатка от деления ( % )

Для вычисления остатка от  деления в Python используется оператор вычисления остатка от деления %

>>> 21 % 5
1
>>> 18 % 4
2

>>> 9.5 % 4.5
0.5

В данных примерах при делении 21 на 5, получается частное 4 и остаток 1. Во втором случае при делении 18 на 4, получается 4 и остаток 2. Этот оператор чаще работает с целыми числами, но также может использоваться и с другими типами. 

3. Исключения и трассировка.

В Python также как и в алгебре деление на 0 запрещено.  При попытке выполнения такой операции  происходит исключение. Сообщая об исключение, Python выдает трассировку стека. В трассировке указано, что произошло исключение типа ZeroDivisionError, большая часть исключений заканчивается суффиксом Error. Ошибка division by zero – деление на ноль.

>>> 5 / 0
Traceback (most recent call last):
  File “<stdin>”, line 1, in <module>
ZeroDivisionError: division by zero

Далее: Строки и функция print в  Python

Назад: Запуск  программ Python  в командной строке

>>> 5 -? 

Добавить комментарий