我正在寻找一些指导,以了解我在回答这个问题时逻辑哪里出了问题:
'给定 2 个 int 值,如果一个为负,一个为正,则返回 True。除非参数“negative”为 True,否则仅当两者均为负时才返回 True。'
这是我的尝试。我以为我在正确的轨道上,我哪里错了?
def pos_neg(a, b, negative):
if negative:
if a < 0 and b < 0:
return True
elif ((a < 0 or b > 0) or (a > 0 or b < 0)):
return True
else:
return False
这是解决方案:
def pos_neg(a, b, negative):
if negative:
return (a < 0 and b < 0)
else:
return ((a < 0 and b > 0) or (a > 0 and b < 0))
最佳答案
让我们从 negative
开始分支:
if negative:
if a < 0 and b < 0:
return True
如果 if a < 0 and b < 0
不是 True 你不返回任何东西,但你应该返回 False
:
if negative:
if a < 0 and b < 0:
return True
else:
return False
这也可以简化,因为 a < 0 and b < 0
已经是应该返回的结果,所以你也可以使用不那么冗长的:
if negative:
return a < 0 and b < 0
那么第二种情况逻辑错误:
elif ((a < 0 or b > 0) or (a > 0 or b < 0)):
如果 (a < 0)
应该触发和 (b > 0)
是 True 并且对于第二个 parens 也是如此。所以应该是:
elif ((a < 0 and b > 0) or (a > 0 and b < 0)):
return True
else:
return False
同样你可以在这里使用不太冗长的:
else:
return ((a < 0 and b > 0) or (a > 0 and b < 0))
关于python - 寻找简单条件的指导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066223/