def logical_xor(a, b): # for example, -1 and 1
print (a < 0) # evaluates to True
print (b < 0) # evaluates to False
print (a < 0 != b < 0) # EVALUATES TO FALSE! why??? it's True != False
return (a < 0 != b < 0) # returns False when it should return True
print (logical_xor(-1, 1)) # returns FALSE!
# now for clarification
print (True != False) # PRINTS TRUE!
Может ли кто-нибудь объяснить, что происходит? Я пытаюсь сделать один лайнер:Учитывая 2 значения int, return True, если один отрицательный, а другой положительный
lambda a, b: (a < 0 != b < 0)
Здесь есть урок: используйте круглые скобки. Или, альтернативно, используйте 'print (a * b <0)'. –
'return math.copysign (1, a)! = Math.copysign (1, b)' –
'print (True! = False) # PRINTS TRUE!' Почему вы так удивлены этим? Это _is_ true, что true не равно false. – MikeTheLiar