Как найти разность чисел в python

В этом руководстве мы будем работать с двумя типами данных в Python – целыми числами (integer) и числами с плавающей точкой (floats):

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

В этой статье будут описаны операции с числовыми типами данных в Python.

  • Математические операторы Python 3
  • Сумма в питоне и разность в питоне
  • Унарные арифметические операции Python
  • Умножение и деление в питоне
  • Деление с остатком Python
  • Возведение в степень 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 x в степени y.

В Python операторы суммы и разности выполняют те же операции, что и в математике. Поэтому вы можете использовать этот язык программирования как калькулятор.

Рассмотрим некоторые примеры. Начнём с целых чисел:

Вывод

Вместо передачи целых чисел напрямую в функцию print мы можем инициализировать переменные для этих значений:

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

Вывод

Целые числа могут быть как положительными, так и отрицательными. Поэтому можно добавлять отрицательные числа к положительным:

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

Вывод

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

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

Вывод

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

g = 75.67
h = 32
print(g - h)

Вывод

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

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

Знак плюса означает тождественное значение. Мы можем использовать его с положительными значениями:

Вывод

Когда мы используем знак плюса с отрицательным значением, он также вернёт значение тождественное данному. В этом случае он вернёт отрицательное значение:

Вывод

При использовании с отрицательным значением знак плюса возвращает то же отрицательное значение.

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

Вывод

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

Вывод

Унарные арифметические операторы возвращают тождественное значение в случае с +i, или противоположное по знаку число в случае с -i.

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

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

Вывод

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

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

Вывод

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

В Python 2 оператор «/» выполняет целочисленное деление, где частное x, а возвращаемое число – это наибольшее целое число, меньшее или равное x. Если вы выполните пример, приведённый выше, в Python 2, то получите 16 без десятичной точки.

Целочисленное деление python 3 использует оператор «//». Выражение 100 // 40 вернёт значение 2.

Оператор % используется для деления по модулю, и возвращает остаток от деления, а не частное. Это полезно, например, для нахождения множителей числа.

Деление по модулю Python (с остатком) — пример:

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

Вывод

В этом примере 85 делится на 15. Результат – 5 с остатком 10. Значение 10 выводится, поскольку оператор возвращает остаток от деления.

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

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

Вывод

В приведенном выше примере 36.0 делится на 6.0 без остатка, поэтому возвращается значение 0.0.

Оператор «**» в Python используется для возведения числа, расположенного слева от оператора в степень, указанную справа. То есть, в выражении 5 ** 3,  число 5 возводится в третью степень.

В математике часто используется выражение 5³. То есть 5 умножается на себя три раза. В Python мы получим тот же результат (125) выполнив 5 ** 3 или 5 * 5 * 5.

Пример с переменными:

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

Возведение числа с плавающей точкой 52.25 в степень 7 с помощью оператора ** приводит к выводу большого числа с плавающей точкой.

 Операторы Python выполняются в порядке приоритета. Посмотрим на следующее выражение:

Умножение выполняется первым. Поэтому, если мы вызовем метод print(u), то получим следующее значение:

Вывод

Это потому, что 10 * 5 равно 50, а затем мы прибавляем 10, чтобы получить 60.

Если нужно было сложить 10 и 10, и умножить сумму на 5, то пришлось бы использовать скобки, как в математике:

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

Вывод

Оператор «=» присваивает значение, расположенное справа, переменной слева. Например, v = 23 присваивает значение числа 23 переменной v.

В программировании часто используют составные операторы присваивания. Они соединяют арифметический оператор с оператором «=». Поэтому для сложения мы используем оператор «+» с оператором «=», чтобы получить составной оператор «+=». Пример:

Вывод

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

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

for x in range (0, 7):
    x *= 2
    print(x)

Вывод

При помощи for можно автоматизировать процесс использования оператора «*=». Он умножает переменную w на число 2, а затем присваивает полученный результат переменной w для следующей итерации цикла.

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

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

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

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

I was wondering if there was a function built into Python that can determine the distance between two rational numbers but without me telling it which number is larger.
e.g.

>>>distance(6,3)
3
>>>distance(3,6)
3

Obviously I could write a simple definition to calculate which is larger and then just do a simple subtraction:

def distance(x, y):
    if x >= y:
        result = x - y
    else:
        result = y - x
    return result

but I’d rather not have to call a custom function like this.
From my limited experience I’ve often found Python has a built in function or a module that does exactly what you want and quicker than your code does it. Hopefully someone can tell me there is a built in function that can do this.

Increasingly Idiotic's user avatar

asked Nov 28, 2012 at 9:47

Rapid's user avatar

abs(x-y) will do exactly what you’re looking for:

In [1]: abs(1-2)
Out[1]: 1

In [2]: abs(2-1)
Out[2]: 1

answered Nov 28, 2012 at 9:49

NPE's user avatar

NPENPE

483k108 gold badges944 silver badges1009 bronze badges

1

Although abs(x - y) and equivalently abs(y - x) work, the following one-liners also work:

  • math.dist((x,), (y,)) (available in Python ≥3.8)

  • math.fabs(x - y)

  • max(x - y, y - x)

  • -min(x - y, y - x)

  • max(x, y) - min(x, y)

  • (x - y) * math.copysign(1, x - y), or equivalently (d := x - y) * math.copysign(1, d) in Python ≥3.8

  • functools.reduce(operator.sub, sorted([x, y], reverse=True))

All of these return the euclidean distance(x, y).

answered Oct 16, 2016 at 20:23

Asclepius's user avatar

AsclepiusAsclepius

56.4k17 gold badges164 silver badges142 bronze badges

1

Just use abs(x - y). This’ll return the net difference between the two as a positive value, regardless of which value is larger.

answered Nov 28, 2012 at 9:49

Chris Heald's user avatar

Chris HealdChris Heald

61.1k10 gold badges122 silver badges137 bronze badges

0

If you have an array, you can also use numpy.diff:

import numpy as np
a = [1,5,6,8]
np.diff(a)
Out: array([4, 1, 2])

Asclepius's user avatar

Asclepius

56.4k17 gold badges164 silver badges142 bronze badges

answered Nov 15, 2016 at 9:09

G M's user avatar

G MG M

20.3k10 gold badges81 silver badges83 bronze badges

So simple just use abs((a) — (b)).

will work seamless without any additional care in signs(positive , negative)

def get_distance(p1,p2):
     return abs((p1) - (p2))

get_distance(0,2)
2

get_distance(0,2)
2

get_distance(-2,0)
2

get_distance(2,-1)
3

get_distance(-2,-1)
1

answered Nov 11, 2019 at 16:13

Siva S's user avatar

Siva SSiva S

7426 silver badges12 bronze badges

use this function.

its the same convention you wanted.
using the simple abs feature of python.

also — sometimes the answers are so simple we miss them, its okay :)

>>> def distance(x,y):
    return abs(x-y)

answered Nov 28, 2012 at 9:49

Inbar Rose's user avatar

Inbar RoseInbar Rose

41.3k24 gold badges83 silver badges130 bronze badges

0

This does not address the original question, but I thought I would expand on the answer zinturs gave. If you would like to determine the appropriately-signed distance between any two numbers, you could use a custom function like this:

import math

def distance(a, b):
    if (a == b):
        return 0
    elif (a < 0) and (b < 0) or (a > 0) and (b > 0):
        if (a < b):
            return (abs(abs(a) - abs(b)))
        else:
            return -(abs(abs(a) - abs(b)))
    else:
        return math.copysign((abs(a) + abs(b)),b)

print(distance(3,-5))  # -8

print(distance(-3,5))  #  8

print(distance(-3,-5)) #  2

print(distance(5,3))   # -2

print(distance(5,5))   #  0

print(distance(-5,3))  #  8

print(distance(5,-3))  # -8

Please share simpler or more pythonic approaches, if you have one.

answered Nov 19, 2017 at 16:17

phi's user avatar

phiphi

2933 silver badges4 bronze badges

4

If you plan to use the signed distance calculation snippet posted by phi (like I did) and your b might have value 0, you probably want to fix the code as described below:

import math

def distance(a, b):
    if (a == b):
        return 0
    elif (a < 0) and (b < 0) or (a > 0) and (b >= 0): # fix: b >= 0 to cover case b == 0
        if (a < b):
            return (abs(abs(a) - abs(b)))
        else:
            return -(abs(abs(a) - abs(b)))
    else:
        return math.copysign((abs(a) + abs(b)),b)

The original snippet does not work correctly regarding sign when a > 0 and b == 0.

answered May 23, 2018 at 16:40

adp's user avatar

abs function is definitely not what you need as it is not calculating the distance. Try abs (-25+15) to see that it’s not working. A distance between the numbers is 40 but the output will be 10. Because it’s doing the math and then removing «minus» in front. I am using this custom function:


def distance(a, b):
    if (a < 0) and (b < 0) or (a > 0) and (b > 0):
        return abs( abs(a) - abs(b) )
    if (a < 0) and (b > 0) or (a > 0) and (b < 0):
        return abs( abs(a) + abs(b) )

print distance(-25, -15) print distance(25, -15) print distance(-25, 15) print distance(25, 15)

answered Nov 15, 2016 at 14:36

zinturis's user avatar

3

You can try:
a=[0,1,2,3,4,5,6,7,8,9];

[abs(x[1]-x[0]) for x in zip(a[1:],a[:-1])]

answered Apr 8, 2014 at 19:35

Yoram A's user avatar

Время чтения 2 мин.

Чтобы вычесть из одного числа другое в Python, вы можете использовать оператор subtraction(-). Оператор вычитания(-) принимает два операнда, первый операнд слева и второй операнд справа, и возвращает разницу между вторым операндом и первым операндом.

Содержание

  1. Синтаксис
  2. Аргументы
  3. Возвращаемое значение
  4. Пример
  5. Вычитание чисел с использованием пользовательского ввода в Python
  6. Как вычесть несколько операндов с использованием цепочки
  7. Вычитание между двумя числами с плавающей запятой в Python
  8. Вычитание комплексных чисел в Python

Синтаксис

output = first_operand second_operand

Аргументы

first_operand и second_operand являются числами.

Возвращаемое значение

Результатом является разница между second_operand и first_operand.

Пример

first_operand = 19

second_operand = 21

output = second_operand first_operand

print(output)

Выход

Это простой пример того, как выполнить вычитание между двумя числами в Python.

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

first_operand = int(input(«Enter the first_operand: «))

second_operand = int(input(«Enter the second_operand: «))

output = second_operand first_operand

print(output)

Выход

Enter the first_operand: 18

Enter the second_operand: 19

1

Как вычесть несколько операндов с использованием цепочки

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

first_operand = int(input(«Enter the first_operand: «))

second_operand = int(input(«Enter the second_operand: «))

third_operand = int(input(«Enter the third_operand: «))

output = third_operand second_operand first_operand

print(output)

Выход

Enter the first_operand: 11

Enter the second_operand: 19

Enter the third_operand: 46

16

Вычитание между двумя числами с плавающей запятой в Python

Чтобы вычесть числа с плавающей запятой в Python, используйте оператор вычитания(-). Float — один из наиболее часто используемых числовых типов данных в Python.

first_operand = float(input(«Enter the first_operand: «))

second_operand = float(input(«Enter the second_operand: «))

third_operand = float(input(«Enter the third_operand: «))

output = third_operand second_operand first_operand

print(output)

Выход

Enter the first_operand: 11.9

Enter the second_operand: 22.9

Enter the third_operand: 44.9

10.1

Вычитание комплексных чисел в Python

Чтобы вычесть комплексные числа в Python, вы можете использовать оператор вычитания(-).

first_operand = 11 + 2j

second_operand = 22 + 3j

third_operand = 44 + 4j

output = third_operand second_operand first_operand

print(output)

Выход

Для ввода значений с клавиатуры используем функцию input(«…») с соответствующей подсказкой

Для для нахождения остатка от деления используется оператор

Для обработки целых значений делимого и делителя (x и y) подойдёт следующая программа:

x=int(input(«Умень­шаемое X=»))

y=int(input(«Вычит­аемое Y=»))

print(f’Разность X-Y={x-y}’)

Результат выполнения:

Уменьшаемое X=25

Вычитаемое Y=8

Разность X-Y=17

Если x и y могут быть десятичными числами, то код программы будет таким:

x=float(input(«Уме­ньшаемое X=»))

y=float(input(«Выч­итаемое Y=»))

print(f’Разность X-Y={x-y}’)

Пример выполнения

Уменьшаемое X=25.5

Вычитаемое Y=8.3

Разность X-Y=17.2

Автор оригинала: Chris.

Python предоставляет оператор вычитания - вычесть один объект из другого. Семантика вычитания зависит от типов данных операндов. Например, вычитание двух целых чисел выполняет Арифметическая разница Операция, тогда как вычитание двух наборов выполняет Установить разницу операция. Конкретное возвращаемое значение оператора минус определяется в типах данных « __sub __ () магический метод.

Посмотрите на следующие примеры!

Примеры

Оператор на целочисленных операндах дает еще одно целое – математическое Разница обоих операндов:

>>> 2 - 2
0
>>> 2 - 3
-1
>>> -99 - (-1)
-98

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

>>> 2.0 - 1
1.0
>>> 1 - 2.2
-1.2000000000000002
>>> 44.0 - 2.0
42.0

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

Вот пример:

>>> {1, 2, 3} - {1, 2}
{3}
>>> {'Alice', 'Bob'} - {1, 'Bob'}
{'Alice'}
>>> {1, 2, 3} - {1, 2, 3, 4, 5}
set()

Что если два операнда имеют несовместимый тип данных? Например, если вы попытаетесь вычесть набор из строки?

>>> 'hello' - {1, 2, 3}
Traceback (most recent call last):
  File "", line 1, in 
    'hello' - {1, 2, 3}
TypeError: unsupported operand type(s) for -: 'str' and 'set'

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

Можете ли вы использовать оператор вычитания на пользовательских объектах? Да!

Чтобы использовать оператор вычитания на пользовательских объектах, определите __sub __ () Дундер Метод, который занимает два аргумента: Я и Другое и возвращает результат Я - другие Отказ Вы можете определить конкретное поведение, используя атрибуты (данные), поддерживаемые в этом объекте.

В следующем коде вы создаете корзину из {«Кофе», «Банан», «Хлеб»} Но затем вы удалите содержимое в другой корзине {«CRED»} Из него – например, чтобы предотвратить двойную покупку:

class Basket:
    def __init__(self, goods):
        self.goods = goods

    def __sub__(self, other):
        return Basket(self.goods - other.goods)

my_basket = Basket({'coffee', 'banana', 'bred'})
to_remove = Basket({'bred'})

updated_basket = my_basket - to_remove
print(updated_basket.goods)

Выход этого фрагмента кода является новой корзиной:

Код состоит из следующих шагов:

  • Создать класс Корзина Это содержит содержимое списка для хранения некоторых товаров.
  • Определите магический метод __sub__ Это создает новую корзину, сочетая наборы товаров от корзин двух операндов. Обратите внимание, что мы полагаемся на уже реализованный оператор вычитания на множествах, то есть Установить разницу , чтобы на самом деле реализовать оператор вычитания для корзин.
  • Мы создаем две корзины My_Basket и to_remove и рассчитайте разницу между ними к новой корзине updated_basket Отказ

Вы можете вычесть списки в Python?

Python не позволяет встроенную поддержку для Разница в списке Операция , то есть, создавая новый список с элементами из первого списка операнда Но без элементов из второго списка операнда. Вместо этого, чтобы вычесть lst_2 из списка lst_1 Используйте оператор понимания списка как фильтр [x для x в lst_1, если x не в lst_2] Отказ

Вот пример кода:

lst_1 = [1, 2, 3, 4, 5, 6]
lst_2 = [1, 2, 3]
difference = [x for x in lst_1 if not x in lst_2]

Вывод:

print(difference)
# Output: [4, 5, 6]

Этот код использует понимание списка, который является компактным способом создания списков. Простая формула – [Выражение + контекст] Отказ

  • Выражение: Что делать с каждым элементом списка?
  • Контекст: Какие элементы для выбора? Контекст состоит из произвольного количества для и Если заявления.

Вы можете узнать больше о понимании списка в этом углубленном уроке с видео:

*** Список понимания – Ultimate Guide ***

Но прежде чем мы будем двигаться дальше, я рад представить вам мою новую книгу Python Python One-listers (Amazon Link).

Если вам нравятся одноклассники, вы будете любить книгу. Это научит вам все, что нужно знать о Одно строка кода Python. Но это тоже Введение в компьютерную науку , наука о данных, машин обучения и алгоритмы. Вселенная в одной строке Python!

Книга была выпущена в 2020 году с помощью книги по программированию мирового класса Nostarch Press (San Francisco).

Ссылка: https://nostarch.com/pythononeliners.

Программа вычитания Python с пользовательским входом

Чтобы создать простую программу вычитания в Python, принимая ввод пользователя и вычитание предоставленных номеров, вы можете использовать следующие четыре шага:

  1. Получите ввод пользователя в виде строки с помощью встроенного вход () Функция и хранить результат в переменных num_1 и num_2 Отказ
  2. Преобразовать входы пользователей строки к численным типам, используя, например, int () или поплавок () конструкторы.
  3. Вычте численные значения с использованием оператора вычитания num_1 - num_2 Отказ
  4. Распечатайте результат к оболочке Python.

Вот эти четыре шага в Python код:

# Python subtraction program with user input

# 1. Get string user inputs representing integers
num_1 = input('First number: ')
num_2 = input('Second number: ')

# 2. Converting strings to ints
num_1 = int(num_1)
num_2 = int(num_2)

# 3. Subtracting numbers
result = num_1 - num_2

# 4. Display the result
print(num_1, '-', num_2, '=', result)

Вот пример выполнения кода, где я помещаю в целые числа 44 и 2, и рассчитал разницу с использованием оператора вычитания:

First number: 44
Second number: 2
44 - 2 = 42

Сторирование оператора вычитания Python

Вы можете объединить два оператора вычитания. Например, выражение X – Y – Z сначала рассчитал разницу между х и y а затем вычесть z из полученного объекта. Таким образом, это семантически идентично ( (X – Y) – Z) Отказ

Вот минимальный пример:

>>> x = 10
>>> y = 5
>>> z = 2
>>> x - y - z
3
>>> ((x - y) - z)
3

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

Арифметические операторы – синтаксические ярлыки для выполнения основных математических операций по номерам.

Оператор Имя Описание Пример
+ Добавление Расчет суммы двух операндов 3 + 4
Вычитание Вычитание второго операнда с первого операнда 4 – 3
* Умножение Умножить первый со вторым операндом 3 * 4
/ Разделение Разделение первого на второй операнд 3 / 4.75
% Модуль Расчет остатка при делите первого на второй операнд 7 % 4
// Целочисленное разделение, напольное разделение Разделение первого операнда на второй операнд и закругление результата до следующего целого числа 8 // 3
** Экспонент Поднимая первый операнд на силу второго операнда 2 ** 3

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

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

Понравилась статья? Поделить с друзьями:
  • Как это исправит ошибка отказано в доступе
  • Как найти телефон в алма ате
  • Как найти тангенс угла брюстера
  • Как найти родственника умершего в блокаду
  • Как найти сумму последовательных нечетных чисел