简体   繁体   中英

error: 'float' object is not iterable - python

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


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 sum(homework*  0.1 +\
               quizzes *  0.3 +\
               tests   *  0.6)           

I don't know what I'm doing wrong.

Forgot to put that I was getting: "error: 'float' is not iterable".

What I should get for example:

get_average(alice) : 91.15.

The sum built in function expects a sequence of numbers to sum as one argument . You are giving it only one number. In this case, you do not need to call the sum function at all:

 return homework*  0.1 +\
        quizzes *  0.3 +\
        tests   *  0.6  

Or, using sum properly:

 return sum([homework*  0.1,
            quizzes  *  0.3,
            tests    *  0.6])  

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM