正负-简单的Python练习

正负-简单的Python练习,python,Python,给定2个int值,如果一个为负,一个为正,则返回True。除非参数negative为True,否则仅当两者都为负值时才返回True 我终于明白了 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) 但是。。。为什么我要返回这两行而不是True?在类似的

给定2个int值,如果一个为负,一个为正,则返回True。除非参数negative为True,否则仅当两者都为负值时才返回True

我终于明白了

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)

但是。。。为什么我要返回这两行而不是True?在类似的情况下,我如何知道如何执行此操作?

您没有返回这两行。您将返回这两行计算结果的值。在您的例子中,这些是布尔表达式,其计算结果将为true或false。最后一个布尔值就是函数返回的值。

Python计算return语句后面的任何表达式,计算结果就是返回的值。您使用了两个布尔表达式:

(a < 0 and b < 0)
如果a<0和b<0,则该值为真;否则它的计算结果为False

(a > 0 and b < 0) or (a < 0 and b > 0)
如果其中一个括号的值为True,则该值为True;否则它的计算结果为False

(a > 0 and b < 0) or (a < 0 and b > 0)
这就是你想要的。因此,pos_neg会根据指定的输入自动返回True或False


也许您正在考虑测试每个条件的True/False,然后使用if语句在条件为True时返回True,在条件为False时返回False。这会起作用,但不必要地冗长和复杂。在这里,您只是返回每个表达式的布尔值,不管它是真是假。

为什么我返回这两行而不是真是什么意思?你不应该返回True,你应该返回条件是否满足。如果函数只返回True,那么它有什么意义呢?就像我不能认为a<0和b<0为True一样。从逻辑上讲,这不是我首先想到的。谢谢!在这种情况下是否总是这样,所以我不应该使用True或False?这样做更好。您总是可以将表达式放入if语句中并返回literal true或literal false,但这样做更麻烦。函数不是说如果这是真的,返回真的,否则返回假的,而是说,返回这是否是真的。啊……好的。我有点明白。这是不合适的,因为你从来没有能力返回false,这会导致潜在的失败。根据这两个条件,返回True和false会更容易。如if negative==True且两个数字都为正,则返回True,或者如果一个数字为负,而另一个为正,则返回false。