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
本身无效。
答案 0 :(得分:7)
.sort()
就位并返回None
。
更改此行:
new = L.sort()
就这样:
L.sort()
并使用new
替换L
的所有实例。您还需要return
这些函数调用的结果:
if a % 2 == 0:
return medianeven(new)
else:
return medianodd(new)
另外,Python的切片支持负索引,所以这段代码:
L[1:(len(L)-1)]
可以简化为
L[1:-1]
答案 1 :(得分:0)
您在行中的sort()方法调用:
new = L.sort();
不会返回任何内容。因此,'new'保持'None',它没有长度。我相信做L.sort()会对列表进行排序。不需要将其存储在“新”中。