-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 )

ideone 工作样本

另请参阅 E 先生写的关于整数的文章(我的版本可能会让你对整数列表感到惊讶)。

于 2013-07-16T11:58:35.260 回答