-1

get_class_average(class_list) が「文字列インデックスは整数でなければならない」を返すのはなぜですか? 以前の関数はすべて正しく動作しているようです。再利用された以前の関数を使用して、クラス全体の平均をカウントする必要があります。

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(lst):
   average = float(sum(lst)) / len(lst)
   return average

def get_average(student):
   score = average(student['homework']) * 0.1 + average(student['quizzes']) * 0.3 + average(student['tests']) * 0.6
   return score


def get_letter_grade(score):
   if score >= 90:
       return "A"
   elif 80 <= score < 90:
       return "B"
   elif 70 <= score < 80:
       return "C"
   elif 60 <= score < 70:
       return "D"
   elif score < 60:
       return "F"

def get_class_average(class_list):
   '''
   get_class_average(['lloyd', 'alice', 'tyler'])
   '''
   total_class = 0
   for student in class_list:
       get_average(student)
       total_class = total_class + get_average(student)

   average_class = total_class / len(class_list)
   return average_class
4

3 に答える 3

0

私は実際に同じ問題を抱えています。それでもエラーが発生するため、正しくないことはわかっています。しかし、これがElazarの答えの私の解釈です:

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

results = []

# Add your function below!
def average(numbers):
    total = sum(numbers)
    total /= len(numbers)
    return total

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_average(students):
    score = average(student["homework"] * 0.1) + average(student["quizzes"] * 0.3) +     average(student["tests"] * 0.6))

def get_class_average(classs_list):
    total = 0
    for student in class_list:
        student = student["name"]
        get_average(student)
        total_class += get_average(student)

    return average_class

これに対する私の弱い試みからあなたが学ぶことができることを願っています. これについてこのフォーラムに投稿した私自身の質問がありますが、休暇中の事情により、実際に質問することができませんでした. 繰り返しになりますが、うまくいけば、私が答えられたことがほとんどないことに基づいて失敗した試みが、あなたに役立つかもしれません.

于 2014-07-20T06:19:56.273 に答える