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