Hallo bahmady,
bahmady hat geschrieben: ↑Sonntag 30. Mai 2021, 16:33
im Rahmen meiner Hausarbeit habe ich bestimmte Aufgaben für Textdateien bekommen. Die erste Textdatei soll aus Namen und die Zweite aus Ziffern bestehen.
Okay, ich frage mal ganz offen: ist dieses Datenformat der Textdateien etwas, das Du Dir selbst ausgedacht hast, oder gehört das zur Aufgabe?
bahmady hat geschrieben: ↑Sonntag 30. Mai 2021, 16:33
Diese habe ich mit Python geöffnet und mit der Methode Splitlines() in String-Linien aufgeteilt. Als letzte Teilaufgabe sollte ich den Inhalt dieser Textdateien auf folgende Art formatiert darstellen:
Mark Smith Bobby Brown Sue Miller Jenny Igotit
555−1234 555−9876 555−6743 867−5309
Angesichts Deiner Ausführungen würde ich mal vermuten, daß die Idee der Aufgabe eine andere ist -- nämlich, eine Datenstruktur zu erstellen, bei der es eine Zuordnung von Namen zu Telefonnummern gibt. (Nummern mit "555" deuten auf eine Spezialität des US-amerikanischen Telefonnummernsystems hin, siehe [1].) Das könnte im einfachsten Fall ein Dictionary (dict(), {}) mit einfachen Werten sein, in einem etwas hübscheren Fall eine Liste von Dictionaries oder ein Dictionary von Dictionaries, oder... genau, es gibt viele Möglichkeiten.
Code: Alles auswählen
persons = {"Mark Smith": "555-1234", "Bobby Brown": "555-9876"} # dict
persons = [["Mark Smith", "555-1234"], ["Bobby Brown", "555-9876"]] # lol => list of list
persons = {"Mark Smith": {"phone": "555-1234"}, "Bobby Brown": {"number": "555-9876"}} # dod => dict of dict
persons = [{"name": "Mark Smith", "number": "555-1234"}, {"name": "Bobby Brown", "number": "555-9876"}] # lod => list of dict
Nun, Du siehst: es gibt viele unterschiedliche Möglichkeiten, um die Daten im Arbeitsspeicher zu halten, und die meisten davon habe ich nicht einmal erwähnt. Warum gibt es so viele Möglichkeiten? Weil jede davon ihre ganz eigenen Stärken und Schwächen hat: manche brauchen mehr Arbeitsspeicher, andere brauchen mehr Prozessorzeit, andere wiederum sind besonders komfortabel und / oder flexibel beim Zugriff auf die Daten, ... es kommt dabei letztlich immer darauf an, wie Dein konkreter Anwendungsfall aussieht, oder anders gesagt: was Du hinterher mit den Daten machen und wie komfortabel Du damit arbeiten möchtest.
bahmady hat geschrieben: ↑Sonntag 30. Mai 2021, 16:33
Hierzu habe ich mit einer while-Schleife
Daß eine while-Schleife hier nicht die Idee ist, haben Dir andere Beitragende bereits erklärt und gezeigt; um über eine Liste oder ein Dictionary zu iterieren, dessen Länge Dir bekannt ist, solltest Du lieber eine for-Schleife benutzen. Das ist viel eleganter.
bahmady hat geschrieben: ↑Sonntag 30. Mai 2021, 16:33
Code: Alles auswählen
d = ""
b = ["Mark Smith", "Bobby Brown", "Sue Miller", "Jenny Igotit"]
c = ["555−1234", "555−9876","555−6743", "867−5309"]
s = len(b)
i = 0
while i < s:
z = len(b[i])
d = '{} \n{}'.format(b[i],c[i])
print(d)
i += 1
Kann mir jemand sagen, wie ich weiterkomme?
Naja, was macht denn Dein Code? Genau: er baut extern einen Index, zählt ihn durch... und gibt die Daten dann zeilenweise untereinander aus.. aber, nunja, das ist ja nicht so gewünscht.
Ein sehr wesentliches Problem bei Deinem Ansatz ist, daß Du (noch) nicht verstanden hast, daß so ein Terminal einen Zeilenumbruch hat -- und wenn Du so einen Zeilenumbruch in Deinen Ausgabestrom schreibst, dann erfolgt die weitere Ausgabe auf einer neuen Zeile. Dabei spielt es keine Rolle, ob Du den Zeilenumbruch ausdrücklich ("\n" in Deinem Format-String) oder implizit (durch print()) hinschreibst. Wenn der Zeilenumbruch einmal ausgegeben bist, dann bist Du auf der nächsten Zeile und kannst nichtmehr in die vorherige(n) kommen. (Es gibt da Möglichkeiten, aber... die vergessen wir lieber erstmal.) Deswegen ist der Zeilenumbruch "\n" in Deinem Formatstring leider kontraproduktiv...
Was Du also brauchst, ist etwas, das Deine beiden Datenpunkte nimmt und die Namen in der ersten, die Telefonnummern in der zweiten Zeile ausgibt. Egal, welche Du nun von den von mir oben gezeigten Datenstrukturen Du benutzt: am Ende möchtest Du ein Array von Namen in einer Zeile ausgeben, und in der folgenden Zeile die Telefonnummern... und da ist so ein .join() genau das Mittel der Wahl.
Viel Erfolg, Vergnügen und Glück!
[1]
https://de.wikipedia.org/wiki/555_(Telefonnummer)