在python中传递三个数字的中位数

时间:2014-06-10 16:34:08

标签: 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 :(得分: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'

你根本就不处理那个案子!

您的程序的分支结构很难阅读,并且(显然!)容易出错。更仔细地考虑你想要实现的目标 - 这是一种更简单的方法。