CodingBat练习中的计算错误

时间:2017-01-23 23:22:39

标签: python

我似乎在我的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))

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

没有明确地为你编写解决方案(我认为无论如何都会毫无意义,因为答案书中的那个看起来尽可能好),有两个值得指出的错误应该让你沿着正确的轨道前进:< / p>

  • 使用== =完成Python相等性检查;后者是赋值运算符,将在该上下文中生成SyntaxError
    • 此外,将布尔变量显式地与布尔常量进行比较并不是一个好方法。它就像有人问你&#34;是不是在下雨&#39; ?真&#34;而不只是&#34;下雨了吗?&#34;在我的大学,其中一位教授会为我们编写类似的代码(至少他说的那样)给我们留下了10,000分。
  • 您的实施中有某些路径会导致返回None而不是布尔值TrueFalse。这是不好的做法,因为它使您的功能不太直观,客户端可以使用它们并将其捕获。请考虑a > 0b > 0以及negativeTrue

对于它的价值,在条件表达式中使用多个andor个运算符并没有错,尽管你应该知道它们的{{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和编程的新手,因此乍一看很难掌握。