Python, wo ist hier der Fehler?
Wir erhalten eine Liste mit Elementen, die in eine Datei geschrieben werden sollen. Dazu soll jedes Element der Liste jeweils mit der zusätzlichen Information, an welchem Index wir uns gerade befinden, versehen werden. (Siehe Beispielausgabe in der Tabelle.)
In dieser Aufgabe brauchen wir keinen zusätzlichen print()-Aufruf. Es sollen nur Inhalte in die Datei geschrieben werden; es soll also keine normale Ausgabe der Inhalte geben.
Tipp: Um sowohl Strings als auch Zahlen in die jeweils aktuelle Zeile zu schreiben, können Zahlen mit str() explizit in einen String umgewandelt werden. Dann können alle Teile der Ausgabe mit einem + aneinandergefügt werden.
Zum Beispiel:
filename = "tiere.txt"
elemente = ["Pinguin", "Nashorn", "Chamäleon", "Pinguin"]
Eintrag 1: Pinguin
Eintrag 2: Nashorn
Eintrag 3: Chamäleon
Eintrag 4: Pinguin
filename = "snacks.txt"
elemente = ["Schokolade", "Chips", "Bonbons", "Kuchen", "Käsebrot"]
Eintrag 1: Schokolade
Eintrag 2: Chips
Eintrag 3: Bonbons
Eintrag 4: Kuchen
Eintrag 5: Käsebrot
filename = "farben.txt"
elemente = ["blau", "gelb", "rot", "lila"]
Eintrag 1: blau
Eintrag 2: gelb
Eintrag 3: rot
Eintrag 4: lila
Und meine Lösung wäre:
def write_to_file(filename, elemente):
with open(filename, "w") as file:
for index, element in enumerate(elemente, start=1):
entry = "Eintrag " + str(index) + ": " + element + "\n"
file.write(entry)
filename_tiere = "tiere.txt"
elemente_tiere = ["Pinguin", "Nashorn", "Chamäleon", "Pinguin"]
write_to_file(filename_tiere, elemente_tiere)
filename_snacks = "snacks.txt"
elemente_snacks = ["Schokolade", "Chips", "Bonbons", "Kuchen", "Käsebrot"]
write_to_file(filename_snacks, elemente_snacks)
filename_farben = "farben.txt"
elemente_farben = ["blau", "gelb", "rot", "lila"]
write_to_file(filename_farben, elemente_farben)
2 Antworten
ChatGPT, ist das bei dir gesperrt, sagt dazu, dass das grundsätzlich richtig ist, aber etwas optimiert werden kann:
def write_to_file(filename, elemente):
with open(filename, "w") as file:
for index, element in enumerate(elemente, start=1):
file.write(f"Eintrag {index}: {element}\n")
filename_tiere = "tiere.txt"
elemente_tiere = ["Pinguin", "Nashorn", "Chamäleon", "Pinguin"]
write_to_file(filename_tiere, elemente_tiere)
filename_snacks = "snacks.txt"
elemente_snacks = ["Schokolade", "Chips", "Bonbons", "Kuchen", "Käsebrot"]
write_to_file(filename_snacks, elemente_snacks)
filename_farben = "farben.txt"
elemente_farben = ["blau", "gelb", "rot", "lila"]
write_to_file(filename_farben, elemente_farben)
Ansonsten will ich nicht spekulieren was Du vielleicht als Fehler ansehen könntest.
Gruß
Also bei der Abgabe mit einem Online-Tool bei dem Du deine Aufgabe abgeben sollst?
Ich habe ehrlich gesagt keine Ahnung was das bedeuten soll. An deiner Stelle würde ich nachfragen.
Beim Nachfragen kann es natürlich sein, dass deine Lösung nicht mehr pünktlich ankommt.
In dem Fall würde ich dem Lehrer eine Mail inklusive deiner Lösung schicken und darauf Hinweisen, dass Du die Fehlermeldung nicht verstehst.
Es geht ja um die Lösung der Python-Aufgabe und nicht darum das Aufgaben-Portal zu verstehen :D
Gruß und viel Erfolg
Vielen lieben Dank für die Rückmeldung! Werde ich dann so machen:)
Wo ist das Problem?
Die Dateieinträge entsprechen deinem Beispiel.
Mir wird bei meiner Abgabe angezeigt, dass die angegebene Datei umgeleitet werden soll
Woher kann dieser Hinweis kommen, dass die angegebene Datei umgeleitet werden soll? Bzw wie kann das geändert werden
Hab das nun auch mit Python 3.12.0 ausprobiert, läuft auch problemlos durch.
Hast du denn Schreibrechte für das Verzeichnis, wo die Dateien landen sollen?
Also das sollte eine Abgabe bei Moodle sein, wo man es dann auch direkt einsetzen kann und mir dann diese Fehlermeldung mitgeteilt
Dann wirst du keine Schreibrechte haben. Hast du das Programm an deinem eigenen Rechner ausprobiert?
Dann wäre es gut, wenn Du sagen würdest, wie die abgabe erfolgt udn wie die exakte vollständige Fehlermeldung lautet.
Im Kern ist Deine Lösung nämlich nich tfalsch.
Dort steht Fehler. Die Ausgabe soll in die angegebene Datei umgeleitet werden. Mehr wird mir dort auch nicht angezeigt.
Für mich ist eine Moodle-Abgabe ein Modul, wo man Dateien oder Text hochladen kann.
Oder gibt es in Moodle ein Python-Modul, wo du die Programme ausführen kannst?
Ich kann es dort ausführen. Dort ist eine Überprüfung möglich. Dann folgt die Fehlermeldung
Vielleicht klappt es mit dem absoluten Pfad?
def write_to_file(filename, elemente):
import os
absolute_path = os.path.abspath(filename)
with open(absolute_path, "w") as file:
for index, element in enumerate(elemente, start=1):
...
Sollst du das da überahupt ausprobieren oder einfach nur abgeben?
Irgendwie soll es ja keine normale Ausgabe der Inhalte sein und somit auch kein Print Aufruf. Aber dann hab ich keine Ahnung wie es angegeben werden muss
Mit "abgeben" meine ich hochladen, also war das ein Arbeitsauftrag/Übung und du sollst nun die Lösung hochladen, damit deine Abgabe benotet wird. Dann würde ich Das Programm und die 3 Textdateien hochladen.
Oder ist das eine Übungsaufgabe für dich und du probierst rum?
Ich habe nämlich eher die Vermutung, dass du da keine Rechte hast. Die Textdatein müssen ja irgendwo im System gespeichert werden, wenn du das online ausprobierst.
Dann würde ich alle 4 Dateien hochladen und dazuschreiben, dass das auf dem heimischen Rechner läuft.
Danke, werde ich so machen. Aber kann es sein, dass ich irgendwas falsch verstanden habe, bei der Aufgabenstellung? Die hatte ich ja ganz oben bei meiner Frage erwähnt
Erstmal danke! Mir wird bei meiner Abgabe angezeigt, dass die angegebene Datei umgeleitet werden soll