Seite 1 von 1
kann mir jemand helfen???
Verfasst: Dienstag 3. Dezember 2002, 11:43
von Atlantika
hi leute. i lerne python seit ne woche u schreibe jetzt kleines programm die information in datei einliest, wo telefonnummern, rechnungen, namen, datum steht. programm soll nur tel-nummern u rechnungen berücksichtigen u die rechnungen von gleichen nummern addieren. hab bis jetzt folgendes geschrieben:
zunächst hab datei in lines gespeichert, dann kommt
for line in lines:
line=string.split(line)
num=line[1]
rech=line[2]
wie soll i auf einzelne nummern zugreifen, um die zu vergleichen???
Sicher, aber wie ?
Verfasst: Dienstag 3. Dezember 2002, 12:02
von akIra
Vielleicht kannst du genauer beschreiben was du machen willst.
Wenn es nur um´s Vergleichen geht
ciao,
akIra
Verfasst: Dienstag 3. Dezember 2002, 12:06
von Atlantika
man sollte die nummern vergliechen werden und die rechnungen von gleichen nummern summiert werden u dabei sollte die gleiche nummern durch einen ersetzt werden.
Hmm
Verfasst: Dienstag 3. Dezember 2002, 12:18
von akIra
kann es sein dass du gar keinen plan von python hast ?!
dann musste dir ne Liste mit den schon existenten Rechnungs-ID´s machen und deren Werte addieren. Sowas ist aber schwer zu sagen, da uns ja das gesamte Projekt unbekannt ist.
Vielleicht hilft die dieses Tutorial:
http://starship.python.net/crew/gherman ... 0000000000
Ciao,
aki
Verfasst: Dienstag 3. Dezember 2002, 12:32
von Atlantika
da hast du recht

hab seit ne woche mit python angefangen
Verfasst: Dienstag 3. Dezember 2002, 15:16
von Milan
@akIra: nett wenn du helfen willst, aber den Ton kann man leicht missdeuten.
Mit Dictionaries lässt sich das wirklich gut machen. Vom Prinzip her so:
Code: Alles auswählen
nummern={}
for line in lines:
line=string.split(line)
num=line[1]
rech=line[2]
if nummern.has_key(num):
nummern[num]+=rech
else:
nummern[num]=rech
wie man weiter mit Dictionaries umgeht steht in dem Totorial.
Verfasst: Dienstag 3. Dezember 2002, 16:26
von Atlantika
danke milan

Verfasst: Mittwoch 4. Dezember 2002, 16:40
von Atlantika
hab noch ne frage:
was wäre güstiger bei grösseren dateien zu verwenden:
f.readline() oder f.readlines()
um zeit zu sparen
Verfasst: Mittwoch 4. Dezember 2002, 17:02
von Milan
da du eh schon line in lines hast, kannst doch lines=file.readlines() nehmen. Dann kannst du die Schleife laufen lassen, wenn die Datei schon vorher geschlossen ist. Du brauchst ja eh den ganzen Inhalt.
Verfasst: Donnerstag 5. Dezember 2002, 09:54
von Atlantika
und wenn es um speicherplatz geht, besonders bei sehr grossen dateien, so mit mehr als 100000 einträgen, wäre es nicht besser f.readline() zu verwenden und die datei am ende des programms zu schliessen?
Verfasst: Donnerstag 5. Dezember 2002, 10:27
von Milan
hmm. das kommt drauf an, worauf du mehr wert legst: auf schnelligkeit oder möglichst wenig arbeitspeicher. fürs erste ist readlines besser für zweites readline. ist ansichtsache, nur irgendwann wirds bei bestimmten größen notwendig das zweite zu nehmen, weil dann der Arbeitsspeicher fehlen würde und das die gewonnene geschwindigkeit wieder nach unten drücken würde. bei solchen größen würde ich zu readline raten.
Verfasst: Donnerstag 5. Dezember 2002, 10:55
von Atlantika
danke dir milan!
hab noch ne frage:
welcher unterschied liegt zwischen readline und xreadlines? hab irgendwo gelesen, dass xreadlines genauso wie readline funktioniert.