7/9 Program runs, but is not returning the correct answer


#1

The program runs but is not returning the correct answer for 'variance'.

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

#2

Hi Joseph, I had the same problem as you, but then I realised it said "Divide the total variance by the number of scores."
So the variance division shouldn't be part for the loop:

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

print grades_variance(grades)

I hope this helps.


#3

I have the same problem - program runs, but is not returning the correct answer.
Have struggles debugging it, without much success. Can somebody suggest a solution, please?

def grades_variance(scores):
average = grades_average(scores)
variance = 0

for score in scores: 
    variance += ((average - score) ** 2) 
return variance / float(len(scores)) 

print grades_variance(grades)

#4

This works:

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

#5
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(scores)
    variance=0
    for score in scores:
        variance += (average - score) ** 2
    variance = variance /float(len(scores))    
    return variance
print grades_variance(grades)