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ますLreturnこれらの関数呼び出しの結果も必要です。

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() を実行すると、リストがその場でソートされると思います。「new」に保存する必要はありません。

于 2013-03-25T03:58:16.113 に答える