Help plz


Oops, try again. grades_std_deviation(3.3469387755) returned 1.0 instead of the expected: 1.8294640678

On line 28, where I use return variance ** float(1/2) instead as variance ** (0.5) as given by the instruction. It shows a error message. But if I change that to variance ** (0.5), everything's fine. I'm very confused about what happened because aren't the two expressions the same?

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:
        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(grades):
    average = grades_average(grades)
    variance = 0
    for i in grades:
        variance += (average - i) ** 2
    return variance / len(grades)
print grades_variance(grades)

def grades_std_deviation(variance):
    return variance ** float(1/2)
variance = grades_variance(grades)

print grades_std_deviation(variance)


Try following code and look what happens....

print 1/2
print float(1/2)
print float(1/2.0)
print 0.5


Thanks for the help. I tried the code but I don't understand why the first two gave me 0 and 0.0


The division operator / produces the quotient of its operands
where the left operand is the dividend
and the right operand is the divisor.

Either the dividend or the divisor should be a float
to get a =float= result....


Oh I see. Thank you very much!


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