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

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

Для ввода значений с клавиатуры используем функцию 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

В этом руководстве мы будем работать с двумя типами данных в 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          # вернуть остаток от деления и присвоить результат

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

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

Время чтения 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)

Выход

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

Оператор вычитания Python принимает два операнда, сначала по левой и второй справа, и возвращает разницу второго операнда с первого операнда.

Символ, используемый для оператора вычитания Python, это - Отказ

Синтаксис

Ниже приведен синтаксис арифметического оператора вычитания Python с двумя операндами.

result = operand_1 - operand_2

где Operand_1 и Operand_2 номера и результат – это разница Operand_2 от Operand_1 Отказ

Пример 1: вычитание чисел

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

Python Program

a = 20
b = 12

result = a - b

print(result)

Выход

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

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

Python Program

a = 63
b = 12
c = 5
d = 10

result = a - b - c - d

print(result)

Выход

Пример 2: вычитание чисел плавающих точек

FLOAT – один из числовых данных. Вы можете вычислить разницу количества плавающих точек с использованием оператора вычитания Python.

Python Program

a = 12.5
b = 10.2

result = a - b

print(result)

Выход

Пример 3: Вычитание сложных чисел

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

Python Program

a = 1 + 8j
b = 3 + 5j

result = a - b

print(result)

Выход

Резюме

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



  • Метки



    python, subtraction

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