mit fobj aus .txt Datei auslesen

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
Ivan_I
User
Beiträge: 2
Registriert: Dienstag 26. April 2022, 23:18

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 ;)
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

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.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Ivan_I
User
Beiträge: 2
Registriert: Dienstag 26. April 2022, 23:18

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