# Part of the Whole

#1

Oops, try again. get_class_average([alice, lloyd]) returned 91.15 instead of 85.85 as expected

The code looks right to me, its taking the averages for each student and appending them to the list results. Is it forgetting the third student somehow?

``````lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}

# Add your function below!

def average(numbers):
total = sum(numbers)
total = float(total)
return total / len(numbers)

def get_average(student):
homework = average(student["homework"])
quizzes = average(student["quizzes"])
tests = average(student["tests"])
return homework*0.10 + quizzes*0.30 + tests*0.60

def get_letter_grade(score):
if score >= float(90):
return 'A'
elif score >= float(80):
return 'B'
elif score >= float(70):
return 'C'
elif score >= float(60):
return 'D'
else:
return 'F'

result = get_letter_grade(get_average(lloyd))
print result

def get_class_average(students):
results = []
for student in students:
avg = get_average(student)
results.append(avg)
return average(results)``````

#2

Point1
Your function `get_class_average()` halts at first iteration.

Why?

Reason is return statement.
Return is final exit door of your function.
Function halts its execution when it sees the return.

Also one point to note..

Python relies on indentation.
Blocks are separated on the base of spaces.
as Youre trying to return final `average(results)` , It has to be on same indentation level as your loop statement.

Point2.
While defining `get_letter_grade()` function
you have used inbuilt function float() to convert integers to float.
We can simply use decimal right instead of the float() function ?
for example.. 90.0

#3

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