我似乎在我的Python代码中出现了计算错误,但我不确定是什么导致了它。我想这可能是因为有两个'和'我的if语句中的运算符,但我想问Stack Overflow是否确定。
以下是问题:
给定2个int值,如果一个为负数且一个为正数,则返回True。除非参数"否定"如果两者都是负数,则返回True。
这是我的代码:
def pos_neg(a, b, negative):
if a < 0 and b > 0 and negative = False:
return True
elif a > 0 and b < 0 and negative = False:
return True
elif a < 0 and b < 0 and negative = True:
return 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))
感谢您的时间。
答案 0 :(得分:2)
没有明确地为你编写解决方案(我认为无论如何都会毫无意义,因为答案书中的那个看起来尽可能好),有两个值得指出的错误应该让你沿着正确的轨道前进:< / p>
==
,不 =
完成Python相等性检查;后者是赋值运算符,将在该上下文中生成SyntaxError
。
None
而不是布尔值True
或False
。这是不好的做法,因为它使您的功能不太直观,客户端可以使用它们并将其捕获。请考虑a > 0
和b > 0
以及negative
是True
。对于它的价值,在条件表达式中使用多个and
或or
个运算符并没有错,尽管你应该知道它们的{{3} }。
答案 1 :(得分:0)
将'='更改为'=='并添加else语句后,我能够得到正确的答案。这是我的新代码:
def pos_neg(a, b, negative):
if a < 0 and b > 0 and negative == False:
return True
elif a > 0 and b < 0 and negative == False:
return True
elif a < 0 and b < 0 and negative == True:
return True
else:
return False
但是,我对你对布尔常量和变量的解释有点困惑。您是否有可能简化您的解释?我仍然是Python和编程的新手,因此乍一看很难掌握。