在Python中找到三个数的中位数
我正在尝试打印三个数字的中位数,但当测试用例是数字2、1、2时,它没有返回任何结果;而当我用2、2、1时,它给出了正确的答案2。那么我该如何修复这个代码呢?
def median(a,b,c):
if a>b:
if a>c:
if b>c:
return b
else:
return c
elif c>a:
if a>b:
return a
else:
return b
elif b>a:
if b>c:
if a>c:
return a
else:
return c
elif c>b:
if a>b:
return a
else:
return b
elif a==c:
return a
elif a==b:
return a
elif b==c:
return b
print(median(2,1,2))
1 个回答
0
在你的函数中跟踪这些值:
def median(2, 1, 2):
if 2 > 1: # yes
if 2 > 2: # no
...
elif 2 > 2: # also no
...
# no 'else' here, and
... # other 'elif' choices never run
# fall out of function - implicit 'return None'
你根本没有处理这种情况!
你程序的分支结构看起来很复杂,读起来也不太顺畅(显然!)容易出错。想想你到底想要实现什么,其实有更简单的方法。