Aufgabe für Uni
Verfasst: Dienstag 19. Dezember 2017, 12:40
Hey Leute! Ich erlaube mir mal einfach hier vorbeizustauben und mein Problem hier zu posten! Ich hab für die Uni ne Hausaufgabe, an der ich jetzt schon lange hänge. Ich komm aber nicht auf die Lösung!
Es soll eine Textdatei eingelesen werden, welche Namen und Alter enthält und aus diesen Daten eine Liste pro Person macht (Vorname, Nachname, Alter). In der Textdatei sind jedoch die Daten teils durch ";" oder anderen Zeichen getrennt, welche zu IndexError führen würden.
Es kann auch sein, dass das Alter so gegeben ist, dass sich dies nicht zu einem Integer ändern lässt (ValueError).
Auch kann es sein, dass es die Datei einfach nicht gibt (IOError).
Der Code sieht wie folgt aus:
Mein Problem ist, dass ich den else Block nicht richtig codieren kann. Ich möchte, dass bei einem Fehler trotzdem weitergearbeitet wird und die Liste mit den möglichen Daten auffüllt.
Es sollte wie folgt aussehen:
Kein File gefunden!
[]
Index out of range!
Konversion zu int nicht moeglich!
Index out of range!
[['Simon', 'Juljanovic', 17], ['Julia', 'Gernot', 15], ['Sarah', 'Mueller', 13], ['Mark', 'Schmitt', 19]]
Bei mir kommt folgendes:
Kein File gefunden!
[]
Index out of range!
Kann mir BITTE jemand helfen?
LG
Es soll eine Textdatei eingelesen werden, welche Namen und Alter enthält und aus diesen Daten eine Liste pro Person macht (Vorname, Nachname, Alter). In der Textdatei sind jedoch die Daten teils durch ";" oder anderen Zeichen getrennt, welche zu IndexError führen würden.
Es kann auch sein, dass das Alter so gegeben ist, dass sich dies nicht zu einem Integer ändern lässt (ValueError).
Auch kann es sein, dass es die Datei einfach nicht gibt (IOError).
Der Code sieht wie folgt aus:
Code: Alles auswählen
def Read_Personen_check(filename):
Personen = []
try:
infile = open(filename, 'r')
for line in infile:
liste = line.split(',')
Vorname = liste[0].strip()
Nachname = liste[1].strip()
Alter = int(liste[2])
Personen.append([Vorname, Nachname, Alter])
infile.close()
return Personen
except IOError:
print "Kein File gefunden!"
return Personen
except IndexError:
return "Index out of Range!"
return Personen
except ValueError:
return "Konversion zu int nicht möglich!"
return Personen
else:
pass
filename1 = "does_not_exist.txt"
l = Read_Personen_check(filename1)
print l
filename2 = "Personen_fehlerhaft.txt"
l = Read_Personen_check(filename2)
print l
Mein Problem ist, dass ich den else Block nicht richtig codieren kann. Ich möchte, dass bei einem Fehler trotzdem weitergearbeitet wird und die Liste mit den möglichen Daten auffüllt.
Es sollte wie folgt aussehen:
Kein File gefunden!
[]
Index out of range!
Konversion zu int nicht moeglich!
Index out of range!
[['Simon', 'Juljanovic', 17], ['Julia', 'Gernot', 15], ['Sarah', 'Mueller', 13], ['Mark', 'Schmitt', 19]]
Bei mir kommt folgendes:
Kein File gefunden!
[]
Index out of range!
Kann mir BITTE jemand helfen?
LG