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.
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eigentlich brauchst du zum erstellen einer verschachtelten dictionary mit Namen, die als Werte und weiteren dict-Schlüssel, in hübscher Weise die nested dict Aussehen könnte:
So müssen Sie fügen Sie die folgenden Zeilen erstellen Sie ein verschachteltes dictionary.
Es wird ein neues, leeres dictionary für jeden input name durch den Benutzer , zu Wunden die Noten für die verschiedenen Fächer .
{} ist eine andere Schreibweise dict(),die Initialisierung für ein Wörterbuch. So wird diese Zeile beim initialisieren ein Wörterbuch in student_info dictionary unter dem Schlüssel student_name
InformationsquelleAutor ZdaR
InformationsquelleAutor user3847870
InformationsquelleAutor Digvijay