Как умножить в питоне
Перейти к содержимому

Как умножить в питоне

  • автор:

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

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

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

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

  • целыми числами (бывают положительными, отрицательными или равными нулю (…, -1, 0, 1, …)).
  • и числами с плавающей точкой (числа с десятичными знаками (например, 9.0 или -2.25)).

Операторы 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

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

c = -36
d = 25
print(c + d)
-11

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

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

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

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

g = 75.67
h = 32
print(g — h)
43.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

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

  1. Выражение в скобках;
  2. Экспоненты;
  3. Умножение;
  4. Деление;
  5. Сложение;
  6. Вычитание.

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

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

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

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

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

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

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

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

y += 1 # сложение и присваивание
y -= 1 # вычитание и присваивание
y *= 2 # умножение и присваивание
y /= 3 # деление и присваивание
y // = 5 # деление floor и присваивание
y **= 2 # возведение в степень и присваивание
y %= 3 # вывод остатка и присваивание

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

Как умножить в питоне

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

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

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

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

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

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

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

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

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

В данном случае ближайшее число к 7, которое делится на 2 без остатка, это 6. Поэтому остаток от деления равен 7 — 6 = 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Округление и функция round

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

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

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

В функцию round() передается число, которое надо округлить. Если в функцию передается одно число, как в примере выше, то оно округляется до целого.

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

В данном случае число third_number округляется до 4 знаков после запятой.

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

Однако если округляемая часть равна одинаково удалена от двух целых чисел, то округление идет к ближайшему четному:

Округление производится до ближайшего кратного 10 в степени минус округляемая часть:

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

Целочисленная арифметика¶

Специальный символ, выполняющий арифметические вычисления. В выражении a * b символ * — оператор умножения, a и b — его операнды.

Оператор, принимающий два операнда, называется бинарным. Унарный оператор принимает один операнд. Пример унарного оператора: -1 .

Последовательность операторов и операндов, результат вычисления которой сводится к единственному значению. Простейшие выражения состоят из одного значения и не содержат операторов: 42 , "Hello, World!" . Пример более сложного выражения: 2 ** 32 — 1 .

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

Например, результат выражения 2 + 2 * 2 — 6, поскольку приоритет операции умножения выше, чем приоритет операции сложения. Изменить порядок вычислений в выражении можно с помощью скобок:

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

Различают правую (справа налево) и левую (слева направо) ассоциативность. Пример оператора с левой ассоциативностью — оператор деления / . Так, выражение 8 // 4 // 2 эквивалентно (8 // 4) // 2 и его результат равен 1.

Пример оператора с правой ассоциативностью — оператор возведения в степень:

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

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

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

Унарные плюс и минус

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

Целочисленное деление и взятие остатка от деления¶

Рассмотрим выражение \(7 / 2\) . Частное можно записать в виде десятичной дроби: \(3.5\) . Однако в ряде задач нам нужны отдельно целая часть и остаток от деления. Очевино, целая часть результата равна \(3\) . Тогда для вычисления остатка от \(7\) нужно отнять произведение целой части на делимое, т.е. остаток равен \(7 — 3 \cdot 2\) .

Такие операции поддерживаются в Python напрямую. Так, для целочисленного деления используется оператор // , а для получения остатка от деления оператор % :

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

Пусть дано число \(8192\) , и нам необходимо получить его третий разряд, т.е. единицу. \(8192 // 10^2 \% 10 = 8192 // 100 \% 10 = 81 \% 10 = 1\) .

Функции перевода чисел в различные системы счисления¶

Функции принимают целое число и возвращают его строковое представление в двоичной, восьмеричной и шестнадцатеричной системах счисления соответственно.

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

Задачи¶

Дано целое десятичное число. Выведите его последнюю цифру.

Дано целое десятичное число. Найдите число десятков в его десятичной записи.

Дано трехзначное число. Найдите сумму его цифр.

Пирожок в столовой стоит \(a\) рублей и \(b\) копеек. Определите, сколько рублей и копеек нужно заплатить за \(n\) пирожков.

Приложение запрашивает у пользователя стоимость одного пирожка и количество пирожков. Пример:

Приложение должно вычислить стоимость запрошенного количества пирожков. Пример вывода:

Дано число \(n\) . С начала суток прошло n минут. Определите, сколько часов и минут будут показывать электронные часы в этот момент. Программа должна вывести два числа: количество часов (от 0 до 23) и количество минут (от 0 до 59). Учтите, что число \(n\) может быть больше, чем количество минут в сутках.

Дополнительные задачи¶

В школе решили набрать три новых математических класса. Так как занятия по математике у них проходят в одно и то же время, было решено выделить кабинет для каждого класса и купить в них новые парты. За каждой партой может сидеть не больше двух учеников. Известно количество учащихся в каждом из трёх классов. Сколько всего нужно закупить парт чтобы их хватило на всех учеников? Программа получает на вход три целых десятичных числа: количество учащихся в каждом из трех классов.

Обувная фабрика собирается начать выпуск элитной модели ботинок. Дырочки для шнуровки будут расположены в два ряда, расстояние между рядами равно \(a\) , а расстояние между дырочками в ряду \(b\) . Количество дырочек в каждом ряду равно \(N\) . Шнуровка должна происходить элитным способом «наверх, по горизонтали в другой ряд, наверх, по горизонтали и т.д.» (см. рисунок). Кроме того, чтобы шнурки можно было завязать элитным бантиком, длина свободного конца шнурка должна быть \(l\) . Какова должна быть длина шнурка для этих ботинок?

Программа получает на вход четыре натуральных числа \(a\) , \(b\) , \(l\) и \(N\) и должна вывести одно число — искомую длину шнурка.

3. Занятия в школе начинаются в 9:00. Продолжительность урока — 45 минут, перемены — 10 минут. На вход принимается номер урока, а выводится время, в которое он заканчивается (часы и минуты отдельно). Пример вывода:

4. Доработайте код задачи № 3 таким образом, чтобы он запрашивал время начала занятий (минуты и часы отдельно) и номер урока, а далее также рассчитывал время окончания уроков.

5. Пользователь вводит число и систему счисления этого числа. Программа переводит число в десятичную, двоичную, восьмеричную и шестнадцетеричную системы счисления с использованием стандартных функций. Пример вывода:

Домашнее задание¶

Дано трехзначное число. Найти произведение его цифр.

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

Числа и математические функции в Python

Говоря о числах, мы пройдемся по наиболее часто используемым математическим операторам, которые нужны для выполнения простых арифметических операций с числами в Python. А в разделе «Математические функции» познакомимся с функциями, которые будут очень полезны при вычислении сложных математических выражений: возведение в степень, синус/косинус, факториалы и т. д. Приступим.

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

Числа

Python есть 6 основных «математических» операторов:

  1. сложение;
  2. вычитание;
  3. умножение;
  4. деление;
  5. возведение в степень.
  6. остаток от деления (mod);
  7. целочисленное деление (div).

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

Сложение

Несложно догадаться, что делает этот оператор: он просто складывает числа. Чтобы проверить, как это работает, просто перейдите в IDLE и введите число, затем знак сложения + (плюс), а затем еще одно число, которое нужно добавить к первому числу. Нажмите Enter. Это должно выглядеть так, как показано ниже.

Пример: сложим 8 и 19.

После нажатия клавиши Enter чуть ниже строки кода появится ответ. Вывод так и будет отображаться каждый раз — чуть ниже кода. Нажимаете Enter — получаете результат.

Не останавливайтесь на этом примере, попробуйте использовать оператор сложения с другими числами. Например, попробуйте сложить числа с плавающей точкой: 4.5 + 5.5 и т. д.

У вычитания такой же синтаксис, как и у сложения. Просто измените оператор на знак вычитания — (минус). Так же выберите случайные числа и попробуйте вычесть одно из другого.

Пример: вычтем из 89.33 число 23.67. Ответ 65.55.

Умножение

Опять то же самое! Просто измените оператор на * (звездочку). Вы ведь знаете, что он используется для умножения, верно? Попробуйте использовать оператор в IDLE.

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

Деление

На этот раз нам понадобится знак / (слэш). Попробуйте использовать оператор со случайными числами.

Если вы новичок, то можете столкнуться с некоторыми трудностями. Какими? Сейчас узнаем. Для начала возьмем целые числа (числа без десятичной дроби), например 16 и 2, и разделим одно на другое.

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

Этого математического оператора обычно в языках программирования нет. Честно говоря, языков со встроенным возведением в степень, кроме Python, и не припомнить. В других языках для возведения в степень используют другие операторы. В Python же для этого достаточно поставить между двумя числами ** (две звездочки). Правое число возведется в степень, равную левому числу. Например, чтобы найти 10 степень числа 2, нужно написать:

Теперь мы знаем обо всех часто используемых математических операторах Python. Попробуйте объединить несколько операторов и использовать их в одном выражении. Например, введите ((2**5)*10)/3 . Python должен вывести 106.66666666666667 .

Взятие остатка от деления

Оператор взятия остатка от деления в Python обозначается % (знак процента). Если вам знакомы другие языки программирования, скорее всего, вы знаете, что такое взятие остатка от деления. В других языках этот оператор часто называют mod. Если вы с ним еще не знакомы, ничего страшного.

Вы ведь знаете оператор деления, так? Тогда вы знаете, каков будет остаток от этого деления, верно? Этот оператор как раз и возвращает этот остаток в качестве ответа. Целая часть как бы откидывается. Вот несколько примеров.

  • 12%2 = 0 , так как 12 полностью делится на 2.
  • 13%2 = 1 , так как остаток от деления 13 на 2 равен 1.
  • 19%5 = 4 , так как, опять же, остаток от деления 19 на 5 равен 4.

В IDLE все так же:

Целочисленное деление

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

  • 13//2 = 6 , так как 13/2 = 6.5
  • 19//5 = 3 , так как 19/5 = 3.8

Попробуйте использовать целочисленное деление со случайными числами в своей IDLE.

Математические функции

Когда вы узнаете о Python побольше, возможно, вам захочется создать «научный калькулятор» в качестве проекта. Для этого кроме простых математических операций вам придется реализовать математические функций: тригонометрические, логарифмические и так далее. Но даже если мы забудем о создании продвинутого калькулятора, в жизни программиста достаточно ситуаций, когда вам могут понадобиться эти функции.

Например, если вы создаете ПО для инженеров-строителей — им математические функции нужны для расчета различных параметров в конструкции, которую они строят. Или, например, аэрокосмическое ПО для расчетов траектории спутника и так далее. Короче говоря, сложные математические функции используются в совершенно различных реальных программах, так что знать о них нужно.

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

Подробнее о функциях в Python мы поговорим в другой статье. Здесь мы лишь немного коснемся этого вопроса.

Функция — это фрагмент кода, который принимает (или не принимает) в качестве входных данных некоторые значения, обрабатывает их, а затем возвращает (или не возвращает) некое значение в качестве выходных данных.

Как вы можете увидеть на рисунке выше, на вход функции подается x , а на выходе функция f выводит значение f(x) . В целом, функции не обязательно принимать что-то на вход или выводить что-то. Но для математической функции важно и то, и другое. Например, чтобы вычислить sin(x) обязательно нужно значение x .

В Python есть два типа функций.

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

Пришло время протестировать математические функции. Начнем со степенных функций!

Возведение в степень — pow(x, y)

Я знаю, о чем вы думаете. Мы же только что возводили числа в степень, так? Так. Но тогда мы возводили число в степень при помощи оператора, а это — встроенная функция. Это альтернативный способ возведения в степень.

Поскольку это встроенная функция, импортировать никаких библиотек не нужно. На вход функция pow(x, y) принимает два числа — основание и показатель степени.

Откройте IDLE и напишите:

Теперь проанализируем, что мы написали и что сделает Python. Сначала мы ввели pow — это просто имя функции, которую мы пытаемся вызвать. Это укажет компилятору Python найти встроенную функцию с именем pow и определить, что она может делать. Далее в скобках мы написали два числа через запятую: 3 и 2. Первое число — 3 — основание, а второе — 2 — показатель степень. Иначе говоря, мы пытаемся возвести 3 во вторую степень.

Как только компилятор Python убедится, что синтаксис верен, он начнет искать реализацию функции pow и выведет ответ: 9.

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

Значения в скобках, разделенные запятыми, называются аргументами. В функции pow(x, y) в примере выше аргументами являлись 3 и 2. В функции может быть любое количество аргументов. У математических функций, как правило, есть как минимум один аргумент. Давайте рассмотрим другие встроенные математические функции.

Модуль — abs(x)

Функция модуля возвращает неотрицательное значение аргумента. Иначе говоря, она не меняет неотрицательные значения, а отрицательные значения делает положительными.

Пример: модуль -3 равен 3, модуль -8.74 равен 8.74 и так далее.

Синтаксис

Так как -99.99 — отрицательное число, выводом будет положительное число — 99.99.

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

Синус — sin(x)

Синус — тригонометрическая функция, она принимает только одно значение в качестве аргумента — x . Аргумент должен быть выражен в радианах, не путайте со степенью. Как мы уже сказали, эту функцию не получится использовать напрямую. Если вы попытаетесь вызвать функцию sin(x), получите сообщение об ошибке.

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

То, что мы сейчас сделаем, называется импортом модуля. Для этого потребуется написать такую строку:

Жмем Enter, и готово! Теперь, чтобы использовать функцию sin(), перейдите в новую строку и введите:

Поскольку 3.14159 это приблизительно π , ответ будет близок к нулю.

Как вы можете видеть, ответ такой — 2.653589335273e-6 . Он может показаться немного пугающим, но на самом деле, это всего лишь значит следующее: 2.653589335273 × 10^-6 , что равно 0.000002653589335273 . Действительно близко к нулю.

В математическом модуле есть еще ряд полезных математических функций: floor() , exp() , log() , sqrt() и многие другие. Их полный список и количество аргументов, которые они принимают на вход, можно найти на официальном сайте Python в разделе Mathematical Functions.

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

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