8. Part of the Whole


#1



https://www.codecademy.com/courses/python-beginner-en-qzsCL/1/4?curriculum_id=4f89dab3d788890003000096


This is what is printed.
B
91.15
Traceback (most recent call last):
File "python", line 52, in
File "python", line 48, in get_class_average
File "python", line 27, in get_average
TypeError: string indices must be integers, not str

I end up with the right math but i can not figure out how to fix the error.
Sorry if it's something stupid i'm new to coding and help would be very much appreciated.


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)
    total = total / len(numbers)
    return total
def get_average(student):
    homework= (average(student["homework"])) * .1
    quizzes = (average(student["quizzes"])) * .3
    tests= (average(student["tests"])) *.6
    grade = sum([homework,quizzes,tests])
    return grade
def get_letter_grade(score):
    if score >= 90:
        return "A"
    elif score >= 80:
        return "B"
    elif score >= 70:
        return "C"
    elif score >= 60:
        return "D"
    else
        return "F"
print get_letter_grade(get_average(lloyd))

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


#2

Hi @iamgod99 ,

You have a syntax error here, which is an else without a colon ...

    else
        return "F"

The get_class_average function needs a list as an argument. However, here, you passed it a single student's dictionary ...

print get_class_average(alice)

If you want to find the average for a class that consists only of alice, you must enclose the variable that represents her dictionary in square brackets, and place that within the parentheses that contain the function argument, so that you are passing the function a list with a single dictionary in it, instead of passing it a dictionary.


#3

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