9/9 Review


#1


I keep getting this error:

Traceback (most recent call last):
File "python", line 37, in
File "python", line 29, in grades_std_deviation
TypeError: unsupported operand type(s) for ** or pow(): 'list' and 'float'


 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
        total = variance / len(scores)
    return total
    
print (grades_variance(grades))

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(grades_variance(grades))
print(grades_std_deviation(grades))


#2

Hi, @biddie ,

You need to pass a variance to the grades_std_deviation function, but here you are passing it the grades list ...

print(grades_std_deviation(grades))

When the function attempts to apply the ** operator to the list that you passed to it, an error is raised.

Also notice that you have these statements indented, and therefore contained within the grades_std_deviation function, after the return statement ...

    variance = grades_variance(grades)
    print (grades_std_deviation(variance))

#3

Thanks! It works now


#4

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