如何使用Python找到平均值?

时间:2014-07-08 21:25:48

标签: python python-3.x return return-value average

我必须找到一类学生的平均分数。我想通过找到每个学生的平均值并找到这些平均值的平均值来做到这一点。我让程序中的其他所有内容都能正常运行,除了这个块:

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)

1 个答案:

答案 0 :(得分:2)

在不了解您的功能的情况下,调试有点困难。我也想知道为什么你有一个函数get_average和一个函数average。无论如何,我打赌错误是你在第一个代码示例中返回average(b)而不是average(results)。此外,此声明需要较少级别的缩进,否则您的for循环将永远不会超出x中的第一个students。目前,您只是返回average(get_average(x)),其中xstudents中的第一项。

你的第二个函数更接近,最后的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