2017-04-14 20 views
1

こんにちは、私は上記のエラーで立ち往生しています。 最後の関数 "get_student_average"に問題があります。 「結果」に「get_average(student)」の値が格納されている場合、「get_letter_grade(results)」の結果を返すことができないのはなぜですか?TypeError: '>' 'list'と 'int'のインスタンス間ではサポートされていません

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) 
+1

リストである 'results'を数値型のメソッド' get_letter_grade'に渡しています – Hamms

+0

はい私は理解していますが、そのリストの中に数値があります。だから私はそれをどのように解決できますか?関数 "get_letter_grade"を呼び出す前に、この値を変換することはできますか?どうやって? – Max

答えて

1

最後の印刷文の目的は、繰り返しごとに生徒のレターグレードを印刷することです。それはあなたのために働く場合

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) 

を参照してください。それを行うには、結果のない現在実行中のリスト、get_average関数に、現在の学生の結果を渡す必要があります。

+0

はい、ありがとうございます、私はもう結果を必要としません。しかし、私は一つのことを否定していません。 foorループの中で、 "結果"は私が興味深い値を得るが、どんな生徒(ループ)でもそれ以上の価値を得られないのだろうか? – Max

+0

ようこそ。この問題を解決するためにこの回答を受け入れてください。 –

+0

@Max 'result'は' get_average'関数の出力を格納する変数で、1つの値だけを返します。 'get_average'は学生辞書の'宿題 '、' quizzes'、 'tests'の3つの値を計算する' student'辞書を取ります。値。この関数は、 '0.1 *宿題+ 0.3 *クイズ+ 0.6 *テスト 'という表現に基づいて、これらの3つの値のうちの1つの値を返します。 –

0

get_student_average()では、resultsをリストとして宣言してから、get_letter_grade()に渡しています。 get_letter_grade()は、リストを、TypeErrorの出所である番号と比較しています。あなたはintをget_letter_grade()に送ってください。

関連する問題