Seite 1 von 1

mit fobj aus .txt Datei auslesen

Verfasst: Mittwoch 27. April 2022, 00:47
von Ivan_I
Hallo Zusammen

Ich befasse mich seit einem Monat mit dem Programieren, kenne mich also praktisch gar nicht damit aus. Bin halt am rumtüfteln und ausprobieren.

Es geht um folgendes:
Ich habe mir ein Buch gekauft und lerne mit dem Buch und auch mit Youtube. Im Buch bin ich beim Kapitel Daten und habe gelernt, dass mit .txt Datei die Daten
im python ausgegeben werden können. Habe ich auch geschafft :)

Nun würde mich aber interessieren, was ist, wenn ich z.B. Fussballspieler
auflisten möchte aus verschiedenen Manschaften, da ist doch sehr nahliegend, dass mehrere Spieler die gleiche Rückennummer haben. Wenn ich jetzt
die Rückennummer eingebe, sollten meiner Meinung nach doch mehrere Spieler ausgegeben werden. Stattdessen kommt immer nur einer.

Gibt es eine Möglichkeit mit dem fobj und .txt Datei, wenn ich z.B. die Rückennummer eingebe, dass alle Spieler mit derselben Rückennummer ausgegeben werden oder geht das nur
mit JSON(In dieses Thema müsste ich mich noch einarbeiten) :).

Mein Code sieht momentan so aus:

list = {}

fobj = open("Listen Test.txt", "r")

for line in fobj:
line = line.strip()
zuordnung = line.split()
list[zuordnung[0]] = zuordnung[1]
list[zuordnung[1]] = zuordnung[0]

fobj.close()

while True:
information = input("Bitte hier den Spieler oder die Rückennummer eingeben: ")
if information in list:
print("Spielerinformation: ", list[information])

else:
print("Die Eingabe ist ungültig")


Vielen Dank ;)

Re: mit fobj aus .txt Datei auslesen

Verfasst: Mittwoch 27. April 2022, 08:05
von sparrow
Setze deinen Code bitte immer in Coder-Tags. Die erscheinen automatisch, wenn du den </> Button im vollständigen Editor drückst und dazwischen gehört dein Code.

Dateien öffnet man mit dem with-Statement, damit man sie nicht per Hand wieder schließen muss.

Die Namenswahl für deine Variablen ist ungünstig. Sie sollten sprechend sein und Auskunft darüber geben, was sie darstellen. Bei "zuordnung" kann das alles sein. Und dann ist "zuordnung" auch noch eine Liste. Aber es gibt auch eine eine andere Liste, die heißt generisch "list" und überschreibt damit auch noch den Pyhton internen Namen "list". "fobj" ist auch ein sehr generischer Name.

Ich würde den Inhalt der Datei vorher auch gar nicht in eine Datenstruktur einlesen. Iterier doch nach der EIngabe über die Zeilemn der Datei und schau dabei für jede Zeile nach, ob die entsprechende Rückennummer vorhanden ist.

Und verbesser die Namen.

Re: mit fobj aus .txt Datei auslesen

Verfasst: Mittwoch 27. April 2022, 08:27
von Sirius3
Ein Wörterbuch weist einem Schlüssel einen Wert zu, aber diese eine Wert kann natürlich auch ein komplexeres Objekt sein, wie z.B. eine Liste.
Statt also einzelne Spielernamen als Wert zu speichern, mußt Du eine Liste für jede Spielernummer anlegen und diese mit allen Spielernamen füllen.
Das Anlegen geht sehr bequem mit einem collections.defaultdict.

Re: mit fobj aus .txt Datei auslesen

Verfasst: Mittwoch 27. April 2022, 20:57
von Ivan_I
Vielen lieben Dank für die schnelle Antworten und die konstruktive Kritik. Werde auf jedenfall beide Lösungssätze ausprobieren da ich mich noch in das ganze einarbeiten muss.