What wrong in my code? (Review)


#1



Whats wrong with my code? It seems that my code is correct to me but why i am having that kind of error even if it prints all the the value correctly?

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


Oops, try again. It looks like not all grades were printed! Make sure you are printing ech one on their own line.


output:
[100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]
1045.5
80.4230769231
334.071005917
18.2776094147
None


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):
    variance = 0
    for score in scores:
        variance += (grades_average(scores) -  score) ** 2
    variance = variance / len(scores)
    return variance
    
def grades_std_deviation(variance):
    return variance ** 0.5

variance = grades_variance(grades)

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


#2

That line looks a little bit off. We should not have to call grades_average more than once in the run.


#3

i fixed my code. the only problem i did is i typed print grades instead of print_grades. but thanks anyway


#4

There are 13 grades in the list. That means your program is calling the grades_average function 13 times. Why not call it before the loop and cache the return value. Then you can retrieve it in how ever many loops. It becomes a static value.

variance = 0
average = grades_average(scores)

Now we can use average in the loop and let the function rest.


#5

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