2017-08-29 9 views
2

CodeAcademyコースでPythonで平均等級計算機を作成しようとしています。このエラーが発生し続けるTypeError:リストを合計すると、サポートされていないオペランドタイプ+: 'int'と 'NoneType'

TypeError: unsupported operand type(s) for +: 'int' and 'NoneType' 

平均機能ではtotal = sum(numbers)です。私は2つの異なるタイプを合計しようとしていることを意味することを理解していますが、これは不可能です。しかし、私は与えられた辞書の数字のリストだけを集計しようとしている場合、これがどこから来ているのか理解していません。NoneType

また、このコードを書くにはどうすればよいでしょうか?私は、同じことを行うもっと簡単な方法があると仮定します。あなたはget_average()から何かを返すので、ときsum開始(第1累積値として0を使用していない

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] 
}  
class_list = [lloyd, alice, tyler] 
students = [lloyd, alice, tyler] 

# Add your function below! 


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

def get_average(student): 
    homework = average(student["homework"]) 
    quizzes = average(student["quizzes"]) 
    tests = average(student["tests"]) 
    total_average = float(homework) * 1 + float(quizzes) * 3 + float(tests) * 6 

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(class_list): 
    results = [] 
    for student in class_list: 
     resultadinho = get_average(student) 
     results.append(resultadinho) 
     return average(results) 
print get_class_average(students) 
print get_letter_grade 
+1

あなたが何かを返すいません'get_average()'から –

答えて

2

、それはエラーメッセージを説明しているNone0を追加しようとします。

関連する問題