我正在处理CodingBat问题,以便更好,更有效地学习,而我所面临的问题是:
Given 2 int values, return True if one is negative and one is positive. Except if the parameter "negative" is True, then return True only if both are negative.
pos_neg(1, -1, False) → True
pos_neg(-1, 1, False) → True
pos_neg(-4, -5, True) → True
我编写了该代码以运行所需的过程
def pos_neg(a, b, negative):
if (a<0 and b>0) or (a>0 and b<0):
return True
elif negative and (a<0 and b<0)
return True
else:
return False
但我知道
Compile problems:
invalid syntax (line 4)
为错误。 CondaBat提供的解决方案是:
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))
我看到与我的示例代码相比,给出的示例代码更快,更高效,但是我不明白为什么我的elif语句返回错误。
答案 0 :(得分:1)
在省略号后您缺少一个冒号
def pos_neg(a, b, negative):
if (a<0 and b>0) or (a>0 and b<0):
return True
elif negative and (a<0 and b<0): # <- was here
return True
else:
return False