Seite 1 von 1

Datenverarbeitung mit Python

Verfasst: Sonntag 10. Juli 2022, 17:44
von Katharina0604
Hallo Zusammen,

ich bin sehr neu dabei programmieren zu lernen und Python ist die erste Programmiersprache, die ich lerne. Ich komme bei einer Aufgabe leider überhaupt nicht weiter und würde mich sehr über einen Tipp bzw. Hilfestellung freuen. Bei einem Statistikprogramm werden Ergebnisse in einer Textdatei gespeichert. Die Anweisung hierfür sieht folgendermaßen aus:

def speichern(anzahl, summe, mittelwert, modus):
with open("ergebnisse.txt", "a") as datei:
datei.write("Anzahl:" + str(anzahl) + "\n")
datei.write("Summe:" + str(summe) + "\n")
datei.write("Mittelwert:" + str(mittelwert) + "\n")
datei.write("Modus:" + str(modus) + "\n")

Die Auswertungen sollen aber nicht einfach hintereinanderweg in eine Datei aufgeführt werden. Sie sollen forlaufend nummeriert werden und es soll vor die erste Auswertung der Text "Auswertung 1" in die Datei geschrieben werden, vor die nächste Auswertung der Text "Auswertung 2", etc. Jedes mal wenn das Programm aufgerufen wird soll die Nummerierung fortlaufend erhalten bleiben. Die fortlaufende Nummer soll in einer eigenen Datei gespeichert werden und hieraus wieder beschafft werden. Die veränderte Nummer soll dann wieder in der Datei gespeichert werden.

Hätte evtl. jemand einen Tipp oder Hinweis zur Umsetzung?
Vielen Dank im Voraus!

Re: Datenverarbeitung mit Python

Verfasst: Sonntag 10. Juli 2022, 18:31
von Sirius3
Statt Strings mit + zusammenzustückeln, benutzt man Formatstrings:

Code: Alles auswählen

def speichern(anzahl, summe, mittelwert, modus):
    with open("ergebnisse.txt", "a", encoding="utf8") as datei:
        datei.write(f"Anzahl: {anzahl}\n")
        datei.write(f"Summe: {summe}\n")
        datei.write(f"Mittelwert: {mittelwert}\n")
        datei.write(f"Modus: {modus}\n")
Der erste Tipp wäre ja, der `speichern`-Funktion einen weiteren Parameter hinzuzufügen, der die Nummer enthält.

Und da Du schon weißt, wie man Dateien schreibt, wo ist das konkrete Problem eine Datei mit einer Zahl zu schreiben?

Re: Datenverarbeitung mit Python

Verfasst: Montag 11. Juli 2022, 12:05
von Katharina0604
Erstmal vielen Dank für deine Antwort! Wie man eine Zahl in eine Datei schreibt ist kein Problem.
Das Problem ist eher die fortlaufende Nummerierung. Es soll in die Textdatei ergebnisse.txt die Ergebnisse geschrieben werden. Wenn man die speichern Funktion ausführt soll vor der den Ergebnissen Auswertung 1 stehen. Also in der Datei ergebnisse.txt sollte dann folgendes stehen:

Auswertung 1
Anzahl:100000
Summe:5046474
Mittelwert:50.46474
Modus:[(34, 1079)]

Das habe ich auch hinbekommen. Wenn das Programm jetzt ein weitere mal ausgeführt wird soll dann in ergebnisse.txt angehangen werden:

Auswertung 2
Anzahl:100000
Summe:5046474
Mittelwert:50.46474
Modus:[(34, 1079)]

und so weiter... und da liegt mein Problem. Die fortlaufende Nummer soll aus einer anderen Datei gezogen werden und dann immer hochgezählt werden. Wie kann ich die Nummer hochzählen lassen sie in einer Datei speichern und dann auf die letzte Nummer zurückgreifen?

Vielen Dank im Voraus!

Re: Datenverarbeitung mit Python

Verfasst: Montag 11. Juli 2022, 12:44
von Sirius3
Der Modus-String sieht so aus, als wäre das Die Repräsentation einer einelementigen Liste mit einem Tuple, das zwei Zahlen enthält. Das sollte nicht so sein. Die Repräsentation ist ausschließlich für Debuggingzwecke gedacht.

Du mußt eine Datei lesen, den Inhalt in eine Zahl umwandeln, die Zahl um 1 erhöhen und diese Zahl wieder in eine Datei schreiben.

Re: Datenverarbeitung mit Python

Verfasst: Montag 11. Juli 2022, 12:47
von Kebap
Wenn du komplizierte Programmieraufgaben hast, dann lohnt es sich, sie in einzelne Stücke aufzutrennen.
Wie kann ich die Nummer hochzählen lassen sie in einer Datei speichern und dann auf die letzte Nummer zurückgreifen?
Da sehe ich spontan drei verschiedene Stücke, die du erstmal einzeln entwickeln und testen kannst, bevor du sie wieder zusammensetzt.

Nummer in einer Datei speichern?
Etwas in einer Datei speichern hast du soeben hinbekommen.

Auf die letzte Nummer zurückgreifen?
Kannst du eine Datei lesen?

Nummer hochzählen lassen?
Das "lässt" du nicht machen, sondern du zählst selbst +1