Jak zamienić liczbę ujemną na dodatnią?


99

Jak przekonwertować liczbę ujemną na dodatnią w Pythonie? (I zachowaj pozytywne.)


Czytając oryginalne pytanie (lub powrót do oryginalnego sformułowania, jeśli zmiana zostanie zatwierdzona), nie jest jasne, co miało oznaczać zdanie w nawiasach. Czy chodziło Ci o to, że chciałeś zachować kopię oryginału, czy może chodziło Ci o to, że nie chcesz modyfikować wartości dodatnich?
jpmc26

Odpowiedzi:


206
>>> n = -42
>>> -n       # if you know n is negative
42
>>> abs(n)   # for any n
42

Nie zapomnij sprawdzić dokumentacji .


7
Jest też max(n, -n)(tylko inna alternatywa :)
tzot

8
maxto fajna sztuczka, ale szczególnie w Pythonie wiąże się z tym narzut, który będzie o 30% wolniejszy niż abs. Więc zdecydowanie powinieneś preferować więcej absniżmax
user1767754

57

zwykłe pomnożenie przez -1 działa w obie strony ...

>>> -10 * -1
10
>>> 10 * -1
-10

1
To chyba najprostsze rozwiązanie. To rozwiązanie zamieniłoby liczbę ujemną na dodatnią i dodatnią na ujemną.
Naveen Raju

Klasyczna matematyka.
Macintosh Fan

21

Jeśli „zachowanie dodatniej liczby oznacza, że ​​chcesz, aby liczba dodatnia pozostała dodatnia, ale jednocześnie chcesz zamienić liczbę ujemną na dodatnią, użyj abs():

>>> abs(-1)
1
>>> abs(1)
1

8

Wbudowana funkcja abs () załatwiłaby sprawę.

positivenum = abs(negativenum)

4
In [6]: x = -2
In [7]: x
Out[7]: -2

In [8]: abs(x)
Out[8]: 2

Właściwie abszwróci absolute valuedowolną liczbę. Wartość bezwzględna jest zawsze liczbą nieujemną.


2
Czy abs (0) zwraca liczbę dodatnią? :)

2

Jeśli pracujesz z numpy, możesz użyć

import numpy as np
np.abs(-1.23)
>> 1.23

Zapewni wartości bezwzględne.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.