满足条件的解只有两个:
a<0 and b>0 或者 a>0 and b<0
所以推算一下,只要满足a*b<0这唯一条件便足够了。
if (a*b)<0:
return True
如果要练习and or方法的话可以参照一楼大神的
(a>0 or b>0) and not (a>0 and b>0)
或者
(a>0 or b>0) and a*b<=0
示例代码:
def ab(a,b):
if (a>0 or b>0) and a*b<=0:
return True
else:
return False
for a,b in [(1.5,-1.0),(2,0),(-3,0),(-2.1,-3),(2,2)]:
print "a=%.1f,b=%.1f:"%(a,b),ab(a,b)
你可以这样写
if (a>0 or b>0) and not (a>0 and b>0):
if a > 0 or b > 0:
do something
我没理解错的话是LZ的逻辑问题?