我必须找到一类学生的平均分数。我想通过找到每个学生的平均值并找到这些平均值的平均值来做到这一点。我让程序中的其他所有内容都能正常运行,除了这个块:
def get_class_average(class_list): 总数= 0 对于class_list中的学生: 学生=学生["名称"] 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): 总数= 0 对于class_list中的学生: 学生=学生["名称"] get_average(学生) total_class + = get_average(学生)
return average(class)
答案 0 :(得分:2)
在不了解您的功能的情况下,调试有点困难。我也想知道为什么你有一个函数get_average
和一个函数average
。无论如何,我打赌错误是你在第一个代码示例中返回average(b)
而不是average(results)
。此外,此声明需要较少级别的缩进,否则您的for
循环将永远不会超出x
中的第一个students
。目前,您只是返回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