TypeError:“>=”在“list”和“int”的实例之间不受支持

2024-05-21 00:35:05 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我被上面的错误困住了。 最后一个函数“get_student_average”出现问题。 如果“results”存储“get_average(student)”值,为什么它不能返回“get_letter_grade(results)”的结果??

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, 97.0, 98.0, 100.0],
    "quizzes": [98.0, 99.0, 99.0],
    "tests": [100.0, 100.0]
}
tyler = {
    "name": "Tyler",
    "homework": [0.0, 35.0, 45.0, 22.0],
    "quizzes": [0.0, 60.0, 58.0],
    "tests": [65.0, 58.0]
}
students = [lloyd,alice,tyler]
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 0.1 * homework + 0.3 * quizzes + 0.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_student_average(gruppo):
    for student in gruppo:
        results= []
        results.append(get_average(student))
        print (student["name"])
        print (results)
        print (get_letter_grade(results))

get_student_average(students)

Tags: namegetreturndeftestsstudentresultstotal
2条回答

get_student_average()中,您将results声明为列表,然后将其传递给get_letter_grade()get_letter_grade()然后将列表与TypeError来自的数字进行比较。您必须确保发送一个int

我认为你最后一次打印的目的是打印学生每次迭代的字母等级。为此,应将当前学生的结果传递给get_average函数,而不是当前运行的结果列表:

def get_student_average(gruppo):
    for student in gruppo:
        results= []
        result = get_average(student)
        results.append(result)
        print (student["name"])
        print (result)
        print (get_letter_grade(result))

get_student_average(students)

看看这对你是否有效。

相关问题 更多 >