7/9 exam statistics


#1



it keeps erroring

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


Oops, try again. You did not print the correct variance. Double-check your code and make sure you print the variance!


Replace this line with your code. 
grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]

def print_grades(grades):
    for grade in grades:
        return 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/len(scores)
    return variance
    print variance


#2

This line needs to be on the same indentation level,

as this line,

And on the last line ater your return statement you should have this, but it needs to be outside your function.

print grades_variance(grades)

Not just, print variance


#3

Hi, I think if you put this code:

variance = variance / len(scores)

inside the loop, it will give wrong result, except you change the variable name to something else.

ex:

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

in your code, you just need to call the function as @bandit said at the end outside the function.

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

print grades_variance(grades)

Please correct me if i am wrong.


#4

why do i need to use another variable for this "variance=variance/len(scores)" part?


#5

or perhaps the value of variance in that part isnt zero?


#6

if you put it inside the loop and do not change the variable, when it start the second loop, the value of variance will be from the result of this code:

variance = variance/len(scores)

instead of:

variance += (average - score) ** 2

Sorry, idk how to explain properly:

Here is some code that show the result will be different.

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

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

def grades_variance2(scores):
    average = grades_average(scores)
    variance = 0
    for score in scores:
        variance += (average - score) ** 2
        variance = variance/len(scores)
    return variance
    
print "grade variance = " ,grades_variance(grades)
print "grade variance1 = ", grades_variance1(grades)
print "grade variance2 = ", grades_variance2(grades)

Notice grade_variance2 function have different result.

grade variance = 334.071005917
grade variance1 = 334.071005917
grade variance2 = 69.0504943648
None


#7

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