首页 > 解决方案 > if、elif、else 条件

问题描述

我正在处理 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 语句返回错误。

标签: pythonif-statementboolean

解决方案


你在 elif 之后缺少一个冒号

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

推荐阅读