python - 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 语句返回错误。
解决方案
你在 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
推荐阅读
- ruby-on-rails - 如何编写 CanCanCan 用户只能读取其数据的能力?
- amazon-cloudformation - 如何使用 CloudFormation 定义 ECR 生命周期策略
- python - 即使使用 usecols,熊猫也会读取整个文件吗?
- anylogic - 如果机架系统已满,如何停止源块
- node.js - 通过electron的主进程访问renderer process cookies
- java - 如何在 WebLogic Server 12c 中配置错误页面
- node.js - 在嵌套查询 mongodb 中查找文档
- docker - Docker image with Sanic over alpine:latest(3.9) uses python json instead of ujson
- flutter - 如何为图标调用图标主题
- office365 - 通过 EWS 更新位置字段删除房间资源