Как сделать степень в питоне

Степень в Python — как возвести?

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

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

История

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

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

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

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

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

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

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

Определение

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

a = 2 ** 4 print(a) > 16

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

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

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

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

# корень четвёртой степени из 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 числа:

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

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

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

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

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

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

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

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

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

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

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

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:

Источник

Математические вычисления в Python 3

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

Потому умение выполнять математические операции очень важно для программирования. Конечно, чем выше у вас навык математических вычислений, тем лучше для вас; однако совсем не обязательно уметь выполнять сложнейшие вычисления, чтобы быть хорошим программистом. Если у вас нет опыта работы в области математики, старайтесь представлять математику как инструмент или как способ улучшить ваше логическое мышление.

Данное руководство научит вас работать с двумя наиболее распространёнными числовыми типами данных Python:

Операторы Python

Оператор – это символ или функция, которая выполняет то или иное действие над данными. К примеру, символ + – это оператор сложения.

В Python присутствуют как общие, так и специальные математические операторы.

Ниже приведена таблица наиболее распространённых математических операторов Python.

ОперацияРезультат
x + yСложение (сумма x и y)
x – yВычитание (разница между x и y)
-xСмена знака x
+xТождественность x
x * yУмножение x на y
x / yДеление x на y
x // yПолучение целой части от деления x на y
x % yОстаток от деления x / y
x ** yВозведение в степень

Также руководство охватывает использование операторов присваивания.

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

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

Также вы можете объявить переменные и указать их в функции print:

a = 88
b = 103
print(a + b)
191

Целые числа бывают положительными и отрицательными. Попробуйте сложить следующие числа:

Числа с плавающей точкой складываются аналогичным образом:

e = 5.5
f = 2.5
print(e + f)
8.0

В результате сложения чисел с плавающей точкой также получается число с плавающей точкой, потому Python выводит 8.0, а не 8.

Синтаксис вычитания отличается от сложения только оператором. Попробуйте отнять 32 из 75.67:

Примечание: Если в операции присутствует хотя бы одно число с плавающей точкой, в результате Python также выведет число с плавающей точкой.

Унарные арифметические операции

Унарное математическое выражение состоит только из одного компонента или элемента. В Python плюс и минус вместе со значением могут быть использованы в качестве одного элемента, это позволяет показать тождественность значения (+) или изменить его знак (-).

Тождественность используется нечасто. Плюс можно использовать с положительными числами:

Если вы используете плюс с отрицательным числом, он также вернёт тождественное (в этом случае – отрицательное) число.

Минус позволяет изменить знак. Если вы добавите минус к положительному значению, в результате будет отображено отрицательное значение:

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

Умножение и деление

Операции умножения и деления, как сложение и вычитание, выполняются в Python так же, как в обычной математике. Для умножения Python использует *, для деления – /.

k = 100.1
l = 10.1
print(k * l)
1011.0099999999999

При делении в Python 3 частное всегда возвращается в виде числа с плавающей точкой, даже если вы делите целые числа:

m = 80
n = 5
print(m / n)
16.0

Это одно из главных различий между Python 2 и Python 3. Python 3 возвращает дробный результат, потому при делении 11 на 2 вы получите 5.5. В Python 2 деление привязано к типам данных, потому при делении целого числа невозможно получить число с плавающей точкой; поэтому при делении 11 на 2 Python 2 возвращает 5.

Читайте также: Python 2 vs Python 3

Когда числа по обе стороны символа деления являются целыми, выполняется деление floor, то есть, для фактора х Python 2 возвращает наибольшее целое число меньше или равное х. К примеру, при делении 5 / 2 таким числом будет 2.

Чтобы выполнить деление floor и получить только целую часть числа, Python 3 использует оператор //. К примеру, разделив 100//40, вы получите 2.

Деление по модулю

Оператор % – это модуль, который возвращает остаток от деления. К примеру, это позволяет найти числа, кратные одному и тому же числу.

o = 85
p = 15
print(o % p)
10

При делении 85 на 15 получается 5 и 10 в остатке.

Попробуйте разделить числа с плавающей точкой:

q = 36.0
r = 6.0
print(o % p)
0.0

Число 36.0 делится на 6.0 без остатка, потому в результате получился 0.0.

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

Оператор ** в Python возводит число в степень. Например, выражение 5 ** 3 значит, что 5 нужно возвести в третью степень. В математике это выглядит так: 5³. В Python можно получить тот же результат (125), умножив 5*5*5.

s = 52.25
t = 7
print(s ** t)
1063173305051.292

Приоритет операций

Как и в математике, в Python нужно помнить о том, что операции выполняются в порядке их приоритета, а не по порядку справа налево.

Сначала выполняется умножение (10*5=50), а затем сложение (10+50). Потому результат будет такой:

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

u = (10 + 10) * 5
print(u)
100

Математические операции имеют такой приоритет:

Операторы присваивания

Наиболее распространённым оператором присваивания является знак равенства (=). Он присваивает переменной слева значение справа. К примеру, в выражении v = 23 переменной v было присвоено значение 23.

В программировании часто используются составные операторы присваивания, которые выполняют операцию со значением переменной, а затем присваивают этой переменной полученное новое значение. Составные операторы объединяют арифметический оператор с оператором =. Например:

Составной оператор += выполнил сложение, а затем присвоил переменной w, значение, полученное в результате сложения.

Составные операторы часто используются в циклах.

for x in range (0, 7):
x *= 2
print(x)
0
2
4
6
8
10
12

Это позволяет автоматизировать процесс умножения чисел в заданном диапазоне.

В Python есть составные операторы присваивания для каждой математической операции:

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

Заключение

Теперь вы умеете выполнять вычисления в Python. Читайте также:

Источник

Как сделать степень в питоне

Python поддерживает все распространенные арифметические операции:

Сложение двух чисел:

Вычитание двух чисел:

Умножение двух чисел:

Деление двух чисел:

Целочисленное деление двух чисел:

Данная операция возвращает целочисленный результат деления, отбрасывая дробную часть

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

Получение остатка от деления:

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

Пусть у нас выполняется следующее выражение:

Здесь начале выполняется возведение в степень (5 ** 2) как операция с большим приоритетом, далее результат умножается на 4 (25 * 4), затем происходит сложение (3 + 100) и далее опять идет сложение (103 + 7).

Чтобы переопределить порядок операций, можно использовать скобки:

Следует отметить, что в арифметических операциях могут принимать участие как целые, так и дробные числа. Если в одной операции участвует целое число (int) и число с плавающей точкой (float), то целое число приводится к типу float.

Арифметические операции с присвоением

Ряд специальных операций позволяют использовать присвоить результат операции первому операнду:

Присвоение результата сложения

Присвоение результата вычитания

Присвоение результата умножения

Присвоение результата от деления

Присвоение результата целочисленного деления

Присвоение степени числа

Присвоение остатка от деления

Функции преобразования чисел

Ряд встроенных функций в Python позволяют работать с числами. В частности, функции int() и float() позволяют привести значение к типу int и float соответственно.

Например, пусть у нас будет следующий код:

Мы ожидаем, что «2» + 3 будет равно 5. Однако этот код сгенерирует исключение, так как первое число на самом деле представляет строку. И чтобы все заработало как надо, необходимо привести строку к числу с помощью функции int():

Аналогичным образом действует функция float(), которая преобразует в число с плавающей точкой. Но вообще с дробными числами надо учитывать, что результат операций с ними может быть не совсем точным. Например:

В данном случае мы ожидаем получить число 0.40002, однако в конце через ряд нулей появляется еще какая-то четверка. Или еще одно выражение:

В этот случае для округления результата мы можем использовать функцию round() :

Представление числа

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

Для определения числа в двоичной системе перед его значением ставится 0 и префикс b :

Для определения числа в восьмеричной системе перед его значением ставится 0 и префикс o :

Для определения числа в шестнадцатеричной системе перед его значением ставится 0 и префикс x :

И с числами в других системах измерения также можно проводить арифметические операции:

Источник

Встроенные функции Python 3 для работы с числами

Python 3 предоставляет большое количество встроенных функций, которые вы можете использовать в программах. Некоторые из них позволяют преобразовывать типы данных, другие предназначены только для одного типа данных (например, строк).

Данное руководство ознакомит с некоторыми встроенными функциями для работы с числовыми типами данных в Python 3:

Все эти методы делают разработку программы более гибкой.

Абсолютная величина

Абсолютная величина – важный аспект вычислений и анализа.

Рассмотрим такой пример: вам нужно проехать 58 км, вместо этого вы проехали 93 км. Чтобы узнать, сколько км осталось, нужно вычесть из расстояния (58 км) количество километров, которое вы проехали (93 км). В данном случае в результате будет отрицательное число. Но проехать отрицательное количество километров невозможно. Попробуйте решить эту задачу с помощью abs():

Функция abs() используется в тех ситуациях, когда результат не может быть отрицательным числом.

Частное и остаток от деления

Деление floor (возвращает частное), и деление по модулю (возвращает остаток), тесно связаны между собой, потому функция, которая сочетает в себе обе эти операции, будет очень полезна.

Для этого Python предоставляет встроенную функцию divmod().

Функция divmod() работает с двумя значениями:

Она выполняет такие операции:

Предположим, вы написали книгу, которая состоит из 80000 слов. На одной странице можно разместить либо 300, либо 250 слов. Нужно посчитать, сколько страниц получится в первом и во втором варианте. Попробуйте сделать это с divmod():

words = 80000 # количество слов в книге
per_page_A = 300 # вариант А, 300 слов на странице
per_page_B = 250 # вариант B, 250 слов на странице
print(divmod(words,per_page_A))
print(divmod(words,per_page_B))
(266, 200)
(320, 0)

Если на каждой странице будет по 300 слов, в книге будет 266 страниц, и ещё одна страница будет заполнена на две трети (итого 267 страниц). Если на каждой странице будет по 250 слов, в книге будет ровно 320 страниц.

Функция divmod() может работать с целыми числами и с числами с плавающей точкой. Например:

a = 985.5
b = 115.25
print(divmod(a,b))
(8.0, 63.5)

Где 8.0 – частное, 63.5 – остаток.

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

В Python существует оператор ** для возведения числа в степень. Но также вы можете использовать встроенную функцию pow().

К примеру, вы исследуете бактерии, и вам нужно подсчитать, сколько бактерий будет в конце дня, если утром была одна бактерия, а количество бактерий в час увеличивается вдвое.

hours = 24
total_bacteria = pow(2,hours)
print(total_bacteria)
16777216

К примеру, в обычной математике 3 в кубе записывается так:

Это равно 3 x 3 x 3 (27).

Чтобы вычислить 3³ в Python, нужно записать это так:

Округление десятичного числа

При работе с десятичными числами важно иметь возможность быстро округлить его до N знаков после запятой. Строенная функция round() выполняет эту задачу. При этом ей необходимо два числа: A – число, которое нужно округлить, B – количество знаков после запятой.

i = 17.34989436516001
print(round(i,4))
17.3499

bill = 87.93 # общая сумма счёта
tip = 0.2 # 20% чаевых
split = 3 # количество человек
total = bill + (bill * tip)
each_pay = total / split # посчитает, сколько должен заплатить каждый
print(each_pay) # сумма без округления
print(round(each_pay,2)) # округлённая сумма
35.172000000000004
35.17

В результате получилось число с большим количеством десятичных знаков. Функция round() округлила его до двух знаков после запятой.

Чтобы округлить десятичное число до целого числа, задайте 0 в качестве второго параметра (в данном случае тип данных не преобразуется, после запятой будет 0):

Функция round() может работать и с целыми числами. Если в качестве первого параметра задано целое число, в результате функция также вернёт целое число.

Сумма членов

Функция sum() позволяет вычислить сумму членов составных числовых типов данных: списков, кортежей и словарей.

some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9] print(sum(some_floats))
49.5

Точно так же это работает с кортежами и словарями:

Функции sum() можно задать два аргумента. Второй аргумент – это число, которое нужно прибавить к сумме членов списка/кортежа/словаря. Например:

Источник

Базовые математические операции в Python

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

Но не всё так страшно. Да, понимание математики на высоком уровне помогает стать высококвалифицированным программистом, но оно не является для этого обязательным условием. Тем не менее базовые вещи знать придётся. А в основе всех мощных математических инструментов лежат простые и понятные операции.

Сложение (+)

И самая простая и понятная из них — сложение. Никаких «подводных камней»: берём два или более чисел, пишем между ними знак » + » и присваиваем результат выражения переменной (или сразу выводим сумму на экран):

x = 5 y = 3 z = x + y print(z) > 8

Сложим несколько вещественных чисел и выведем их на экран без предварительной инициализации результирующей переменной:

q = 4.5 w = 2.5 e = 2.5 r = 0.5 print(q + w + e + r) > 10.0

Вообще говоря, если хотя бы одно из слагаемых — число вещественное, то вещественным будет и весь результат.

num1 = 10 num2 = 15 num3 = 10.0 sum = num1 + num2 + num3 print(sum) > 35.0 print(type(sum)) >

Вычитание (-)

Вычитание – это обратная операция сложению. Оператором выступает знак «-«:

Умножение (*)

Как и две предыдущие операции, умножение в Python не таит в себе никаких скрытых или неочевидных особенностей. Умножаем два или более чисел при помощи оператора «звёздочка» ( * ):

Деление (/)

Сложение, вычитание и умножение тривиальны, а вот с делением не всё так просто. В Python существует три вида деления и столько же разных операторов. Начнём с истинного деления, за которое отвечает оператор » / «. Его главным отличием является то, что, вне зависимости от типов операндов, будет возвращен вещественный результат ( float ).

print(8/2) > 4.0 # делимое и делитель — int числа, а частое — float print(type(8/2)) > print(8/3) > 2.6666666666666665

Этот вид деления наиболее близок к обычному и знакомому нам математическому. И здесь тоже нельзя делить на ноль:

print(8/0) > ZeroDivisionError: division by zero

💁 Немного истории. В старых версиях Питон оператор «/» выполнял операцию классического деления: т.е. он делил целочисленно и усекал дробную часть в том случае, когда делимое и делитель были целыми. Если же операнды принадлежали к множеству вещественных чисел, то проводилось деление с сохранением дробной части, и результат был float.

Разработчики отказались от классического деления в Python 3.0 и вместо него добавили истинное деление. Архитекторы языка пошли на такой шаг по той причине, что в предыдущей модели классического деления результаты напрямую зависели от типов операндов. Из-за этого возникали трудности с их предварительной идентификацией и оценкой, что было особенно критично для Питона, как для языка с динамической типизацией.

Целочисленное деление (//)

print(15//2) # видно, что результат округлился в меньшую сторону > 7 # и остался целочисленным, поскольку и делимое, и делитель — int числа print(type(15//2)) >

При изменении любого из операндов на вещественное число, результат также изменится и станет float :

print(15//3.1) > 4.0 print(type(15//3.1)) >

Об округлении вниз важно помнить, когда работа идёт с отрицательными числами:

На ноль всё ещё нельзя делить:

print(15//0) > ZeroDivisionError: integer division or modulo by zero

Остаток от деления (%)

Остаток от деления ещё называют делением по модулю. Оператор » % » сначала делит, а затем возвращает остаток.

print(21 % 3) > 0 print(21 % 5) > 1 print(21 % 0) > ZeroDivisionError: integer division or modulo by zero

Остаток может не быть целочисленным:

print(21.3 % 3) > 0.3000000000000007

Но вся прелесть данного оператора заключается не в возвращаемом им значении остатка.

Главная фишка деления по модулю в том, что с его помощью легко проверяется факт делимости одного числа на другое

А отсюда вытекают и проверки на чётность/нечётность:

import random def parity_check(num): «»» функция, проверяющая четность числа. Любое четное число делится на 2 без остатка. «»» if num % 2 == 0: return ‘Число чётное’ else: return ‘Число нечётное’ # сгенерируем случайное число и проверим работу функции rnum = random.randint(0, 100) print(rnum) print(parity_check(rnum)) > 62 > Число чётное

💭 Проверка числа на чётность/нечётность будет часто встречаться в вашей работе.

Возведение в степень (**)

Нетипичный оператор для большинства других языков программирования. Тем он и удобен. Парная «звёздочка» ( ** ) выполняет классическое математическое возведение числа «a» в степень «b»:

a = 2 b = 10 print(a ** b) > 1024

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

# степень 0.5 аналогична квадратному корню a = 100 b = 0.5 print(a ** b) > 10.0 a = 0.5 b = 2 print(a ** b) > 0.25

Операндов у возведения в степень также может быть несколько. В таком случае, оператор » ** » работает, как право-ассоциативный (т.е. операции выполняются справа-налево):

print(2 ** 2 ** 3) # Сначала выполняется 2 ** 3, а затем уже 2 ** 8. > 256

В завершении — про приоритет операций. Если в выражении используются разные операторы, то порядок их выполнения будет следующим:

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *