Review


#1



This is what the console shows:
18.2776094147
[100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]
1045.5
80.4230769231
334.071005917
18.2776094147
None
And this is the error message: Oops, try again. It looks like not all grades were printed! Make sure you are printing ech one on their own line.
You know the question: What's wrong with my code?
Thanks in advance!


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
        result = variance/float(len(scores))
    return result

def grades_std_deviation(variance):
    return variance ** 0.5

variance = grades_variance(grades)
print grades_std_deviation(variance)

print grades
print grades_sum(grades)
print grades_average(grades)
print variance
print grades_std_deviation(variance)


#2

Calculate the result at completion of the summation (after the loop).


#3

The grades are printing but codecademy shows the same error :confused:


#4

Please post your variance function so we can look at it further. Thanks.


#5

I've posted my entire code. There isn't anything else. Do you think I've missed something?


#6

Your variance function should look something like this...

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

I have a pet pieve with declaring counting numbers as floats. len() returns an integer and would not be expected to be a float. The variance, on the other hand may be assumed to be a float so it would be more reasonable to declare it as such.

return float(variance) / len(scores)

makes more sense to anal thinkers like me.

We can take this one step further and declare variance as a float when we initialize it...

variance = 0.0

or

variance = float(0)

Aside

Another pet pieve of mine (with the lesson, not your code) concerns the use of variance as the working variable. The function returns the variance (the last line computation) but internally it is a sum of squares.

summation = 0.0
for score in scores:
    summation += (score - average) ** 2

return summation / len(scores)

The return value is called sigma squared, sigma being the standard deviation.


#7

The code is wroking. It prints all the number but I still get this message: Oops, try again. It looks like not all grades were printed! Make sure you are printing ech one on their own line.


#8

Which print statements are expected? Yours are in mixed order, and some may not be expected.

For that you have a function...

print_grades(grades)

#9

Thank you! It worked!


#10

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