7. The variance


#1

Here is my code:

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(x):
    average = grades_average(x)
    variance = 0
    for i in x:
        variance += (average - x) ** 2
    variance / len(x)
    return variance
print grades_variance(grades)

My error:
Traceback (most recent call last):
File "python", line 25, in
File "python", line 22, in grades_variance
TypeError: unsupported operand type(s) for -: 'float' and 'list'

Thanks.


#2

Hi kqlyvacban,

I noticed a couple things about your grades_variance(x) function.

This line:
variance += (average - x) ** 2

Should read:
variance += (average - i) ** 2
The variance measures how far each number in the list is from the average.

And this:
variance / len(x)
return variance

Should read:
result = variance / len(x)
return result

You have to assign a variable

So your function should look like this:

def grades_variance(x):
    average = grades_average(x)
    variance = 0
    for i in x:
        variance += (average - i) ** 2
    result = variance / len(x)
    return result
print grades_variance(grades)

#3

hey I think we are making a mistake hereā€¦

for score in scores:
variance += (score -average) ** 2 #instead of (average - score)

please let me know if I am wrong.:sunglasses::sunglasses: