kann mir jemand helfen???

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
Atlantika

Dienstag 3. Dezember 2002, 11:43

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???
akIra

Dienstag 3. Dezember 2002, 12:02

Vielleicht kannst du genauer beschreiben was du machen willst.
Wenn es nur um´s Vergleichen geht

Code: Alles auswählen

if rech=="123456":
                  blabla´
ciao,
akIra
Atlantika

Dienstag 3. Dezember 2002, 12:06

man sollte die nummern vergliechen werden und die rechnungen von gleichen nummern summiert werden u dabei sollte die gleiche nummern durch einen ersetzt werden.
akIra
User
Beiträge: 49
Registriert: Dienstag 3. Dezember 2002, 12:05
Wohnort: Berlin
Kontaktdaten:

Dienstag 3. Dezember 2002, 12:18

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
Atlantika

Dienstag 3. Dezember 2002, 12:32

da hast du recht :) hab seit ne woche mit python angefangen
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Dienstag 3. Dezember 2002, 15:16

@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.
Atlantika

Mittwoch 4. Dezember 2002, 16:40

hab noch ne frage:
was wäre güstiger bei grösseren dateien zu verwenden:
f.readline() oder f.readlines()
um zeit zu sparen
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Mittwoch 4. Dezember 2002, 17:02

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.
Atlantika

Donnerstag 5. Dezember 2002, 09:54

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?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Donnerstag 5. Dezember 2002, 10:27

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.
Atlantika

Donnerstag 5. Dezember 2002, 10:55

danke dir milan! :)
hab noch ne frage:
welcher unterschied liegt zwischen readline und xreadlines? hab irgendwo gelesen, dass xreadlines genauso wie readline funktioniert.
Antworten