16.9 Review I got a very strange error message, before it worked


#1

Hey everybody, does anybody have an idea where the problem is ?
I get this error message:

in grades_std_deviation
TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'float'

, but everything worked fine till now

import math
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

def grades_std_deviation(variance):
    variance = float(variance **0.5)
    return variance

 variance=grades_variance(grades)

print print_grades(grades)
print ""
print grades_sum(grades)
print ""
print grades_average(grades)
print ""
print grades_variance(grades)
print ""
print grades_std_deviation(grades)

#2

if you look at the previous exercise (link), the last step of the instructions is:

Finally print the result of calling grades_std_deviation(variance)

the function is called with a different argument then you use. standard deviation is based on the variance, not the list with grades

also, this line:

 variance=grades_variance(grades)

has 1 space indent, why?


#3

Thanks a lot, what a stupid mistake ^^ i was checking the code constantly and rewrting it :slight_smile:


#4

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