python - 寻找简单条件的指导

标签 python

我正在寻找一些指导,以了解我在回答这个问题时逻辑哪里出了问题:

'给定 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/

相关文章:

python - 在字典中创建一个集合

Python 等效于 setInterval()?

python - 在 Pandas 中创建 NaN 值(而不是 Numpy)

python - 循环python的多个变量

python - 将 python 列表传递给 C/C++ 作为 'float*' 或 'int*'

python - pygame加载更改文件名的图像

python - 更新 Python 以用于 AWS CLI

python - 是否有适用于 Python 的 erf() 的简单实现?

python - Siamese 网络的 Keras 模型不学习并且总是预测相同的输出

python - 使用另一个dict python在嵌套Json中插入元素