Python函数trunc_max(x,y)排错:至少一个正数返回较大值否则返回0
问题分析
- 你的代码存在两个逻辑漏洞:
- 内层判断分支逻辑错误:当两个入参相等且均为正数时,会命中内层
if y>x对应的else分支,返回0,不符合「至少一个为正则返回较大值」的要求。比如传入x=5, y=5时,预期返回5,你的代码会返回0。 - 缺少非正场景的返回逻辑:当两个入参都小于等于0时,不会进入第一个if分支,函数没有显式返回值,会默认返回
None,不符合「否则返回0」的要求。
- 内层判断分支逻辑错误:当两个入参相等且均为正数时,会命中内层
修正方案
你可以直接简化逻辑,符合需求的代码如下:
def trunc_max(x,y): if x > 0 or y > 0: return max(x, y) return 0
如果你希望保留原有的多层判断写法,也可以调整分支条件:
def trunc_max(x,y): if x>0 or y>0: # 相等时直接返回任意一个即可,因为二者大小一致 if x >= y: return x else: return y # 两个都非正的场景统一返回0 return 0
内容的提问来源于stack exchange,提问作者152151
相关产品推荐
相关产品推荐

