在Python中找到三个数的中位数

-7 投票
1 回答
3164 浏览
提问于 2025-04-18 09:18

我正在尝试打印三个数字的中位数,但当测试用例是数字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'

你根本没有处理这种情况!

你程序的分支结构看起来很复杂,读起来也不太顺畅(显然!)容易出错。想想你到底想要实现什么,其实有更简单的方法。

撰写回答