我是python编程的初学者。在this question in codeacademy中,我需要:
写一个函数平均值,返回仅用数字填充的列表的平均值。
以下是清单:
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]
不起作用,但我也想不出解决办法。
答案 0 :(得分: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先生写的有关整数的内容(我的版本可能会让您对整数列表感到惊讶)。