Kuinka saada kokonaisluvun merkki Pythonissa


Paras vastaus

from math import copysign

sign = lambda x : copysign(1, x)

palauttaa -1 negatiiviselle merkille ja +1 positiiviselle merkille. voit korvata 1: llä 1. saada liukulukuulostus

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

sign(10) # 1

sign(-32) #0

sign(o) #1

sign(10**15) #1L

jos sinulla on vain numeroita, jotka voidaan edustaa 32 tuumana, riittää, että tehdään x >> 31, mutta sitten saat numeroita, jotka ovat suurempia kuin yksi, jos numero on yli 32 bittiä (465662 merkille (10 ** 15)). Voit myös tehdä x >> 128 turvallisemmaksi.

Vastaa

Tässä on yksi vuoraus! sign = lambda a: (a>0) - (a<0) TAI sign = lambda a: (a>>127)|(not not a) TAI sign = lambda a: 1 if a>0 else -1 if a<0 else 0 [if-else: n avulla, OP ei pyytänyt tämä mutta lukijoille]

Kaikki ratkaisut toimivat sekä Python2- että 3 -tapauksessa

print sign(12)

print sign(0)

print sign(-13)

print sign(-0)

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *