[英]How can I find the average of averages using Python?
我必须找到一班学生的平均分数。 我想通过找到每个学生的平均值并找到这些平均值的平均值来做到这一点。 除了以下代码块,我在程序中的所有其他内容均正常运行:
def get_class_average(class_list):班级列表中学生的总数= 0:student =学生[“名称”] get_average(学生)total_class + = get_average(学生)
如果有人询问,我可以为您提供其余的代码,但是我知道这可能就是该段。 这是我的错误:
get_class_average([lloyd])返回85.85而不是预期的80.55
所以我在做数学上不正确的事情。 我相信问题是我正在尝试使用for循环来做到这一点。 您如何找到整个班级的正确平均值?
编辑:
这是我在代码中拥有的另一个功能。 它不是唯一的一个,但是我的错误表明这是:
# Add your function below!
def average(numbers):
total = sum(numbers)
total = float(total)
total /= len(numbers)
return total
我认为该功能存在错误。
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]
}
results = []
# Add your function below!
def get_average(numbers):
for total in numbers:
total += total
total *= 1.0
total /= len(numbers)
return total
def get_letter_grade(score):
if score >= 90:
return "A"
elif score >= 80:
return "B"
elif score >= 70:
return "C"
elif score >= 60:
return "D"
else:
return "F"
def get_class_average(class_list):class_list中学生的总数= 0:student = student [“ name”] get_average(学生)total_class + = get_average(学生)
return average(class)
在不了解您的功能的情况下,调试起来有些困难。 我也想知道为什么你有一个函数get_average
和一个average
函数。 无论如何,我敢打赌,错误是您在第一个代码示例中返回了average(b)
而不是average(results)
。 同样,此语句将需要较少的缩进级别,否则您的for
循环将永远不会超出students
的第一个x
。 当前,您只是返回average(get_average(x))
,其中x
是students
的第一项。
您的第二个函数更接近,最终的return
语句只需要缩进一级,就需要初始化results
。 尝试这个:
def get_class_average(students):
results = [] # initialize results
for result in students:
result = get_average(result)
results.append(result)
return average(results) # not part of the for looop
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.