Wie speichert mehrere Einträge für jeden Schüler mit Wörterbüchern

Hier ist das problem Anweisung:

Gibt es einen Datensatz von n Studenten, jeden Datensatz mit Namen von Studenten, Prozent Zensuren in Mathematik, Physik und Chemie. Der Benutzer gibt eine ganze Zahl "n", gefolgt von Namen und Marken für die " n " - Studenten. Bin ich verpflichtet, den Datensatz zu speichern in einem dictionary-Datentyp. Der Benutzer gibt dann den Namen eines Schülers und Sie sind erforderlich, um zu drucken, die dem durchschnittlichen Prozentsatz, der die Markierungen, die durch die Schüler, korrekt auf zwei Dezimalstellen.
was ich bisher versucht habe:

num_students = int(raw_input("Please enter number of students:"))
print "you entered %s students" %num_students
student_info = {}
student_data = ['studentname', 'mathmarks', 'physicsmarks', 'chemistrymarks']
for i in range(0,num_students):
    for entry in student_data:
        student_info[entry] = raw_input(entry )
print student_info
print"please enter student name"
name = raw_input("student name")
if student_info['studentname'] == name:
    print "Average student marks:", (int(student_info['mathmarks']) + int(student_info['physicsmarks']) + int(student_info['chemistrymarks']))/3
else:
    print"please enter valid name"

Dieser code arbeitet, ist die num_students = 1, Aber wenn num_students >1 den code nicht.

Ich bin nicht in der Lage um den Eintrag zu speichern jedes einzelnen Schülers im Wörterbuch.

Ich bin ziemlich neu in python, würde mich freuen wenn jemand mir helfen kann mit dieser.

Das problem ist, dass Sie ein Wörterbuch enthält die Informationen, die für einen Schüler. Was Sie brauchen, um ein Wörterbuch zu erstellen, die den Studenten einen Namen als Schlüssel und den Wert jedes Schlüssels ist ein Wörterbuch, in dem die anderen Werte.
Hier ein Hinweis zur Lösung: Jeder der n Schüler hat 3 verschiedene Kurse. Aber Sie derzeit speichern Sie für jeden Datensatz direkt in das dict student_info[entry], so die jüngste Platte überschreibt alle vorherigen. Sie benötigen einen dict--dict-oder dict-Liste oder eine andere Datenstruktur. Schauen Sie sich auch collections.defaultdict es wird hier helfen.
Ihre innere for-Schleife ist immer die gleiche Tupel
Durch die Art und Weise, dies möglicherweise besser geeignet für codereview.stackexchange.com als SO. Zumindest, überprüfen Sie heraus CodeReview, es ist sauber.
Code Überprüfen ist explizit für code, der funktioniert wie vorgesehen--dieser code funktioniert nicht wie vorgesehen.

InformationsquelleAutor SpaceOddity | 2015-05-20

Schreibe einen Kommentar