Variance


#1


https://www.codecademy.com/courses/python-intermediate-en-7mgOa/2/1?curriculum_id=4f89dab3d788890003000096


Getting a general error message from my code:
Oops, try again. You did not print the correct variance. Double-check your code and make sure you print the variance!


It should print out the variance calculation. I think there may be an error with floating numbers, but I'm not clear why. Thanks.


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)
    aver = sum_of_grades / float(len(grades))
    return aver

print grades_average(grades)

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


#2

This line needs to be unindented.

Aside

Concerning floats, consider that floats are preserved from start to finish so the place to declare them would be the first function in the chain, grades_sum.

total = float(0)

or implicitly,

total = 0.0

Now the total that is returned will be a float. grades_average preserves it, as does grades_variance.

As for converting an integer counting number to a float, I would never do that. It only confuses the situation. Convert the numerator in these instances so your code make sense to other readers.


#3

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.