The Variance


#1
  1. The Variance

Oops, try again. grades_variance([5, 6, 9, 3, 6, 9, 6]) returned 5500.2669061708 instead of the expected: 3.9183673469

grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]

def print_grades(grades):
    for grade in grades:
        print grade

def grades_sum(grades):
    total = 0
    for grade in grades: 
        total += grade
    return total
    
def grades_average(grades):
    sum_of_grades = grades_sum(grades)
    average = sum_of_grades / float(len(grades))
    return average

def grades_variance(scores):
    average=grades_average(grades)
    print 'average:' + str(average)
    variance=0
    for score in scores:
        variance+=((average-score)**2)
    print 'variance: ' + str(variance)
    print 'len: ' + str(len(scores))
    return variance/float(len(scores))

print grades_variance(grades)

#2

@microsurfer73616 ,

Here, within your grades_variance function, you have accessed the global list, grades.

average=grades_average(grades)

Does the function perform correctly when a different list is passed to it via its scores parameter?


#3

yes, i've checked with excel.
80.4230769231


#4

What variance do you get from Excel with the list, [5, 6, 9, 3, 6, 9, 6]? For that one, Codecademy's submission correctness test (SCT) states that your function returned 5500.2669061708, which is not the correct result. That is because the first statement within your function accesses the global grades variable, when it should instead access the parameter, scores, which represents the list that is passed to the function when it is called.


#5

Thanks for your help.


#6