I can't spot the error


#1



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


Traceback (most recent call last):
File "python", line 50, in
File "python", line 47, in get_class_average
File "python", line 27, in get_average
TypeError: int() argument must be a string or a number, not 'list'


I expect it to work.


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]
}

students=[lloyd,alice,tyler]

def average(numbers):
    total=float(sum(numbers))/len(numbers)
    return total
    
def get_average(student):
    homework=average(int(student["homework"]))
    quizzes=average(int(student["quizzes"]))
    tests=average(int(student["tests"]))
    return int(.1*homework+.3*quizzes+.6*tests)
    
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"
        
def get_class_average(students):
    results=[]
    for student in students:
        results.append(int(get_average(student)))
    return average(results)
    
print get_class_average(students)
print get_letter_grade(int(get_class_average(students)))


#2

Hi @babissimo,

Why are you calling the int function in your program?


#3

I had an error before saying something wasn't an integer in several places so I figured I'd try to fix it by calling the int function.


#4

You do not need to convert anything to an int in this exercise. In fact, the code that you posted will work correctly if you remove all the calls to the int function. As you remove each call, also carefully remove the opening and closing parentheses that delimit the argument passed in that function call. However, in each case, leave the expression intact that served as the argument.

For example, this ...

    homework=average(int(student["homework"]))

... should become this ...

        homework=average(student["homework"])

... as the call to the int function is removed.


#5

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