Como obter o sinal do número inteiro em Python


Melhor resposta

from math import copysign

sign = lambda x : copysign(1, x)

retornará -1 para sinal negativo e +1 para sinal positivo. você pode substituir 1 por 1. para obter uma saída de ponto flutuante

sign = lambda x : (x >> 63) +1

sign(10) # 1

sign(-32) #0

sign(o) #1

sign(10**15) #1L

se você tiver apenas números que podem ser representados como 32 ints, será suficiente fazer x >> 31, mas você obterá números maiores que um para números com mais de 32 bits (465662 para sinal (10 ** 15)). Você também pode fazer x >> 128 para ficar mais seguro

Resposta

Aqui estão algumas linhas! sign = lambda a: (a>0) - (a<0) OU sign = lambda a: (a>>127)|(not not a) OU sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [usando if-else, OP não pediu isso, mas para leitores]

Todas as soluções funcionam em Python2 e 3 casos de teste

print sign(12)

print sign(0)

print sign(-13)

print sign(-0)

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *