Seite 1 von 1

Listenarbeit

Verfasst: Mittwoch 8. August 2018, 11:23
von Freumel
Hallo zusammen,

ich möchte mit einem Programm Listen auf Gemeinsamkeiten überprüfen.
An der Überprüfung scheitert es aktuell noch nicht, viel eher am Einbinden der Daten.

Bisher habe ich alles im Programmcode bestimmt, nun möchte ich die Listen über das Terminal einfügen.

Code: Alles auswählen

name_1=input('>> ')
name_2=input('>> ')

a=[]
b=[]

file=open(name_1,'r')
for line in file:
	a.append(line)
file.close()

file=open(name_2,'r')
for line in file:
	b.append(line)
file.close()

Ich gebe die absoluten Dateipfade per Drag & Drop der Datei in die Konsole direkt an.

Nun möchte ich aber beliebig viele Dateien einbinden können.
Mein Ansatz bisher:

Code: Alles auswählen

data=[]
data.append(input('>>'))

while data[len(data)-1]!='\exit':
	data.append(input('>>'))
Nun überlege ich, wie ich analog zum ersten Skript die Daten einlesen kann. Es handelt sich bei den Daten um Strings, nicht um Floats.
(Peter => Grüne Augen, blaues Hemd, ...
Paul => blaue Augen, buntes Hemd, ... )

Ich bedanke mich schonmal im voraus für eure Hilfe :)

Re: Listenarbeit

Verfasst: Mittwoch 8. August 2018, 11:31
von __deets__
Der erste Code funktioniert 100%ig nicht, denn a.append[line] wirft einen Fehler. Das ist also schon mal nicht der richtige Code, den du zeigst (wenn das bei dir funktioniert).

Und es empfiehlt sich beim Programmieren, Probleme in Teilprobleme zu zerteilen, die fuer sich genommen geloest werden, und die man dann zu groesseren Programmen zusammenfasst. Statt also den immer gleichen Code durchzunummerieren, schreib dir eine Funktion "datei_einlesen", die einen Dateinamen bekommt, und das gewuenschte Ergebnis zurueck liefert.

Und diese Funktion benutzt du dann in einer *anderen* Funktion, die

- eine Eingabe liest.
- diese auf ein Abbruchkriterium prueft (das soll doch dein \exit sein, oder? Besser ohne \, das ist ein Escape-Code, das macht ggf Aerger).
- wenn abbruch, dann die Funktion mit return beendet
- sonst die Eingabe an die datei_einlesen-Funktion ubergibt, und mit deren Ergebnis dann macht, was auch immer damit passieren soll.

Re: Listenarbeit

Verfasst: Mittwoch 8. August 2018, 12:19
von Freumel
Der erste Code funktioniert 100%ig nicht, denn a.append[line] wirft einen Fehler. Das ist also schon mal nicht der richtige Code, den du zeigst (wenn das bei dir funktioniert).
Vertippt. Sorry :)

Ansonsten habe ich das Problem gelöst!
Zwar nicht formschön aber doch gelöst.

Danke für die Hilfe

Re: Listenarbeit

Verfasst: Mittwoch 8. August 2018, 12:24
von Sirius3
Die Lösung kann so aussehen:

Code: Alles auswählen

from functools import partial

def read_file(filename):
    with open(filename) as f:
        return list(f)

data = [
    read_file(filename)
    for filename in iter(partial(input, '>> '), 'exit')
]