-2

Pythonでのプログラミング初心者です。codeacademyのこの質問では、次のことを行う必要があります。

数値だけで埋められたリストの平均値を返す関数 average を書いてください。

リストは次のとおりです。

lloyd = {
"name": "Lloyd", 
"homework": [90.0, 97.0, 75.0, 92.0], 
"quizzes": [88.0, 40.0, 94.0], 
"tests": [75.0, 90.0]
}

alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
} 

tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}

以下は私の試みです:

 students = [lloyd, alice, tyler]
 def average(k):
     k = a(students)
     for x[k] in k:
         if x[k] == int:
        return average(k) = sum(x[k]) / len(x[k])

x[k]うまくいかない理由はわかっていますが、解決策も思いつきません。

4

1 に答える 1

1

質問は、引数が数字のみのリストでない場合に何を返すかを指定していませんでした。その基準を満たさない場合に渡された引数を返す寛大なバージョンが必要だと思います。

微調整

import numbers, operator
def average( what ):
    if not isinstance( what, list ):
        return what
    if not all( isinstance(item, numbers.Number) for item in what ):
        return what
    if len(what) == 0:
        return None
    else:
        return operator.truediv( sum( what ), len( what ) )

古いもの:

def average( what ):
    if not isinstance( what, list ):
        return what
    if len(what) == 0:
        return None
    if not all( isinstance(item, (int, long, float, complex)) for item in what ):
        return what
    else:
        return sum( what ) / len( what )

イデオン作業サンプル

また、E 氏が整数について書いたものも参照してください (私のバージョンでは、int のリストに驚かれるかもしれません)。

于 2013-07-16T11:58:35.260 に答える