Quellcode-Problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mcbanana
User
Beiträge: 2
Registriert: Dienstag 14. September 2010, 16:27

Hallo Leute!
bin noch neu in der Programmierwelt, aber ich versuche dennoch mal mein Problem zu schildern:

habe mir das Buch "Programmieren von Kopf bis Fuß" gekauft vom O'Reilly Verlag.

Jetzt ist hier ein Quellcode der nicht so ganz funktionieren will:

punktzahlen = {}
ergebnis_dh = open("ergebnisse.txt")
for zeile in ergebnis_dh:
(name, punkte) = zeile.split()
punktzahlen[punkte] = name
ergebnis_dh.close()

print ("Die höchste Punktzahlen waren: ")
for punkte in punktzahlen.keys():
print('surfer ' + punktzahlen[punkte] + 'hatte ' + punkte + ' Punkte')

Die Datei ergebnisse.txt ist im selben Ordner wie die Python-Datei abgespeichert und hat folgenden Inhalt:
Johnny 8.65
Juan 9.12
Joseph 8.45
Stacey 7.81
Aideen 8.05
Zack 7.21
Aaron 8.31

Die Fehlermeldung lautet:

Traceback (most recent call last):
File "C:\Users\Public\Documents\Informatik\python\punktzahlen_abbildung.py", line 4, in <module>
(name, punkte) = zeile.split()
ValueError: too many values to unpack

Hoffe ihr könnt mir weiterhelfen!mfg!

mcbanana
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Willkommen im Forum!

Künftig bitte Code in Code-Tags (Python) setzen, dann liest es sich besser und die Einrückungen sind erkennbar.
Die Fehlermeldung besagt, dass es mind. eine Zeile in der Datei gibt, die nicht so aussieht, wie beschrieben. Dafür könnte es schon genügen, wenn z.B. statt "7.65" "7. 65" da steht.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Nochmal genauer zur Fehlermeldung:

Code: Alles auswählen

(name, punkte) = zeile.split()
erwartet, dass zeile.split() genau zwei Teile zurueckliefert; bei dir kommen aber mehr heraus, deswegen funktioniert das (name, punkte) = eben nicht. ("Too many values"). Lass dir vorher mal zeile oder zeile.split() ausgeben, dann siehst du das Problem.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
mcbanana
User
Beiträge: 2
Registriert: Dienstag 14. September 2010, 16:27

Vielen Dank für die Hilfe:) hab es hinbekommen!
Hab die Textdatei in ein ordentliches Format gerückt, sodass alle Ergebnisse untereinander stehen.

Die höchsten Punktzahlen waren:
Surfer Joseph hatte 8.45 Punkte
Surfer Juan hatte 9.12 Punkte
Surfer Zack hatte 7.21 Punkte
Surfer Aaron hatte 8.31 Punkte
Surfer Aideen hatte 8.05 Punkte
Surfer Johnny hatte 8.65 Punkte
Surfer Stacey hatte 7.81 Punkte

Jetzt kann ich mich mit vollem Elan den nächsten Aufgaben widmen;)
Antworten