# 7. The variance

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.

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)
``````

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.