Python三整数取最大值函数返回None的原因排查
问题原因与解决方法
你的函数返回None的核心原因是第三个条件的逻辑错误,导致当c是三个数中的最大值时,没有任何分支触发return语句——Python函数在没有显式return的情况下,会默认返回None。
看你的测试用例max_tres_num(1,2,3),此时c=3,第三个条件c>=a and c<=b等价于3>=1 and 3<=2,显然不成立,三个if都没命中,函数自然返回None。
修正后的代码
把第三个条件改成判断c是否大于等于另外两个数,或者更简洁的直接返回c(因为走到这一步时,a和b已经被排除是最大值的可能):
def max_tres_num(a,b,c): if a>=b and a>=c: return a if b>=a and b>=c: return b # 走到这里说明a和b都不是最大值,直接返回c即可 return c print(max_tres_num(1, 2, 3)) # 输出3
也可以用elif简化逻辑:
def max_tres_num(a,b,c): if a>=b and a>=c: return a elif b>=c: return b else: return c
其他实现方式
- 直接用Python内置的
max()函数,一行搞定:def max_tres_num(a,b,c): return max(a,b,c) - 分步比较:先找前两个数的最大值,再和第三个数对比:
def max_tres_num(a,b,c): temp_max = a if a>b else b return temp_max if temp_max>c else c
内容的提问来源于stack exchange,提问作者artem
相关产品推荐
相关产品推荐

