Python присваивает переменной знак числа

У меня есть переменная типа int, это Python, поэтому она может быть положительной и отрицательной. Теперь я хочу, чтобы другая переменная имела тот же знак, что и первая переменная1. Это легко сделать, используя оператор if, а затем присвоив переменной -1 или +1 и умножив каждую переменную, которая должна иметь этот знак, на -1 или +1. Но потом я подумал, может быть, есть другой способ сделать это (например, встроенная функция). Есть ли что-то вроде «sign = getsignbit (value)»?

редактировать: Решено! math.copysign сделал то же самое, cmp (x, 0) тоже работает, но я хочу не только -1, 0 или 1, но и превратить 5 в -5.


person user2746752    schedule 01.11.2013    source источник
comment
sign = lambda x: math.copysign (1, x) выглядит хорошо   -  person yossi    schedule 02.11.2013


Ответы (2)


Нет встроенной функции sign (см. Этот ответ для объяснения: Почему не У Python есть знаковая функция?), но math.copysign может быть вам полезен. http://docs.python.org/2/library/math.html#math.copysign

person Peter DeGlopper    schedule 01.11.2013

Я не думаю, что есть встроенная функция, но вы можете легко накатить свою собственную:

def the_sign(num):
    return cmp(num, 0)
person John    schedule 01.11.2013
comment
Обратите внимание, что cmp был удален в Python3. - person Ashwini Chaudhary; 02.11.2013
comment
Я использую Python 2.7, работает и то, и другое, но мне больше нравится math.copysign. Я все же поставил +1;) - person user2746752; 02.11.2013