Sich im Durchschnitt in einer Funktion in Python

Ich versuche zu lernen Python, und ich bin stecken. Alles ging gut, bis die Letzte Funktion, die die:

def get_class_average(students): 

bis zu diesem Punkt hat alles Prima funktioniert, aber es in der letzten Funktion, ich kann nicht herausfinden, wie es funktioniert. Ich werde versuchen, die Durchschnittswerte für jeden Schüler, dann die Berechnung der Durchschnitt dieser Mittelwerte, in anderen Worten, die "Klasse-Durchschnitt" So, ich würde nur gerne wissen, die Antwort auf die Letzte Funktion ohne änderung der Funktionen, bevor der Letzte:

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)
       return float(total) / len(numbers)


def get_average(student):
       homework = average(student["homework"]) 
       quizzes = average(student["quizzes"]) 
       tests = average(student["tests"]) 
       return 0.1 * average(student["homework"]) + 0.3 * average(student["quizzes"])    +     0.6 * average(student["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_class_average(students):
       results = []
       for student in results:
              get_average(student)
              results.append(student)
              average(student)
              return results

students = [lloyd,alice,tyler]

print get_class_average(students)

Endlich fand ich die Lösung für diese ein. So, ich will einfach nur nach den korrigierten code hier unten für die Letzte Funktion, get_class_average(Studenten). Jetzt funktioniert es:

def get_class_average(students):
       results = []
       for each in students:
              studentavg = float(get_average(each))
              results.append(studentavg)
       return average(results)

students = [lloyd,alice,tyler]

print get_class_average(students)
  • Sie sollten gehen Sie durch die vorherigen Funktionen und versuchen Sie zu verstehen, wie Sie funktionieren ersten.
  • in get_class_average du bist der Iteration über die Ergebnisse (leere Liste), wenn Sie sollten die Iteration über die Schüler. for student in students: Auch die Rückgabe außerhalb der for-Schleife - sonst wird es erst wieder die ersten Schüler. Dies sollte fix it für Sie.
  • Ignacio Vazquez-Abrams ich verstehen, wie Sie funktionieren, schrieb ich den vorherigen Funktionen nacheinander und Schritt für Schritt. In der letzten Funktion, ich bin offensichtlich etwas fehlt
  • Ich habe versucht, dass Sie wohl Recht haben, dass es behoben werden sollte, aber auch wenn ich die Einstellung ändern, funktioniert es nicht
  • Okay auf der Suche tiefer in Ihren code innerhalb get_class_average, die Sie anrufen, Durchschnitt(Studenten). Die Durchschnitt () - Funktion kann nur unterstützen, eine Liste von zahlen, weil es aus der Summe der argument. Ich denke, was Sie wollen, ist get_average(student), zusammen mit den änderungen, die ich oben erwähnt, wie gut. Sie müssen auch herausfinden, wie hängen die Mittelwerte zusammen mit Ihnen, wie Sie Ihren code nur fügt der Liste der Studenten in eine neue Liste und druckt Sie aus.
  • Jordan ja, diese sind das, was ich bin versucht, herauszufinden, aber ich habe nicht die Antwort gefunden, doch
  • Okay, anstelle von Anhängen Schüler auf die Ergebnisse, fügen Sie die get_average(student). Dies könnte das sein, was du bist suchen für. results.append(get_average(student)) und dann wieder den Durchschnitt gesetzt. return average(results)

InformationsquelleAutor Joe T. Boka | 2014-07-05
Schreibe einen Kommentar