1
def medianeven (L):
    while len(L) > 2:
        L = L[1:(len(L)-1)]
    return average (L)

def medianodd (L):
    while len(L) > 1:
        L = L[1:(len(L)-1)]
    return L[0]

def median (L):
    new = L.sort()
    a = len(new)
    if a % 2 == 0:
        medianeven(new)
    else:
        medianodd(new)

它说TypeError: object of type 'NoneType' has no len()。两者都medianeven可以medianodd工作,但median本身不能正常工作。

4

2 回答 2

7

.sort()就地并返回None

更改此行:

new = L.sort()

仅此:

L.sort()

new并用 just替换您的所有实例L。您还需要return这些函数调用的结果:

if a % 2 == 0:
    return medianeven(new)
else:
    return medianodd(new)

此外,Python 的切片支持负索引,所以这段代码:

L[1:(len(L)-1)]

可以简化为

L[1:-1]
于 2013-03-25T03:56:52.907 回答
0

您在该行中调用的 sort() 方法:

new = L.sort();

不返回任何东西。因此'new' 持有'None',它没有长度。我相信做 L.sort() 将对列表进行适当的排序。不需要将其存储在“新”中。

于 2013-03-25T03:58:16.113 回答