Standard deviation


#1



My code gives me the following error message: "grades_std_deviation(10.5714285714) returned 18.2776094147 instead of the expected: 3.2513733362"


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)
    return variance/len(scores)
print grades_variance(grades)
def grades_std_deviation(variance):
    return grades_variance(grades)**0.5
variance=grades_variance(grades)**0.5
print grades_std_deviation(variance)


#2

The return value of your function should depend only on the parameter and be independent of the global variable grades.

Look at how you did it in the grades_variance function:

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

You set average to grades_average(scores) so that the average changes if the scores parameter is changed. If you had used grades_average(grades) it would depend on the global variable grades and not change for different values of scores.


#3

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