Python含return语句的条件逻辑问题及return用法疑问
CodingBat 整数正负判断问题排查与语法解析
问题需求
给定两个整数,返回规则如下:
- 若参数
negative为False,当两个数一正一负时返回True - 若参数
negative为True,仅当两个数均为负数时返回True
你的代码
def pos_neg(a, b, negative): if (negative and (a < 0 and b < 0)): return True if (a < 0 and b > 0) or (a > 0 and b < 0): return True else: return False
正确代码
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))
逻辑漏洞分析
你的代码核心问题是逻辑分支覆盖错误:当negative为True但两个数不都是负数时,第一个if不触发,会进入第二个if的一正一负判断,此时会错误返回True。但题目明确要求negative=True时,只有两数均负才返回True,其他情况(包括一正一负)都要返回False。
举个测试用例:pos_neg(-1, 2, True),你的代码会执行第二个if返回True,但正确结果应该是False。
return后直接放逻辑条件的适用场景
- 当你需要返回的结果就是某个逻辑表达式的布尔值时,直接返回表达式比写冗余的
if-else更简洁 - 比如判断两个数是否相等,直接写
return a == b,比if a == b: return True else: return False更高效可读 - 当函数核心逻辑就是计算一个布尔表达式的结果时,这种写法能让代码更紧凑,逻辑一目了然
内容的提问来源于stack exchange,提问作者Guilherme RB
相关产品推荐
相关产品推荐

