Python für Anfänger · Teil 20TutorialEinsteiger

Python

Python für Anfänger – Teil 20: Abschlussprojekt vorbereiten: eine Filamentverwaltung

Plane Datenmodell, Menü und Prüffälle und entwickle einen ersten lauffähigen Zwischenschritt.

Veröffentlicht am

4 Minuten Lesezeit

Voraussetzungen

Du kennst die Inhalte aus Teil 19 und arbeitest mit einem lokalen Python-3-Interpreter (ab Python 3.10), beispielsweise in Thonny.

Das lernst du in dieser Lektion

  • Anforderungen in Teilaufgaben zerlegen.
  • Ein Menü mit Funktionen verbinden.
  • Sollwerte für Prüfungen festlegen.

Was soll das fertige Programm können?

Wir bauen eine kleine Konsolenanwendung für einen lokalen Filamentbestand. Sie soll Rollen auflisten, neue Rollen hinzufügen, Verbrauch buchen und den Bestand als JSON speichern. Wir verwalten Material, Farbe und verbleibendes Filamentgewicht. Spulengewicht und Materialreste werden in dieser Übung nicht automatisch ermittelt; du gibst die Nettomenge selbst ein.

Nicht Bestandteil dieser ersten Version sind Druckeranbindung, Mehrbenutzerbetrieb oder eine grafische Oberfläche. So können wir die bisherigen Grundlagen in einem überschaubaren Programm zusammenführen.

Datenmodell festlegen

bestand = [
    {"material": "PLA", "farbe": "Blau", "rest_g": 750.0},
    {"material": "PETG", "farbe": "Schwarz", "rest_g": 420.0},
]

Die angezeigte Rollennummer entsteht aus der aktuellen Listenposition plus 1. Sie ist keine dauerhaft gespeicherte ID. Solange wir keine Rollen löschen oder umsortieren, reicht das für die Übung. Für eine spätere Anwendung mit Historie wären feste Kennungen sinnvoll.

Die Aufgaben trennen

Funktion Aufgabe
anzeigen(bestand) Bestand verständlich ausgeben
hinzufuegen(bestand) Eingaben prüfen und neue Rolle anfügen
verbrauchen(bestand) Rolle auswählen und zulässige Menge abziehen
laden(pfad) JSON lesen und Daten prüfen
speichern(pfad, bestand) JSON schreiben und Ergebnis melden
main() Daten laden und Menü steuern

So können wir einen Fehler einem kleinen Bereich zuordnen. Die Funktionen erhalten die Daten als Parameter; eine veränderliche globale Bestandsliste brauchen wir nicht.

Erster lauffähiger Stand

Speichere dieses vollständige Zwischenprogramm als filament_start.py:

def anzeigen(bestand):
    if not bestand:
        print("Noch keine Rollen vorhanden.")
        return
    for nummer, rolle in enumerate(bestand, start=1):
        print(f"{nummer}: {rolle['material']} / {rolle['farbe']} - {rolle['rest_g']:.1f} g")

def main():
    bestand = [{"material": "PLA", "farbe": "Blau", "rest_g": 750.0}]
    while True:
        print("1: Anzeigen | 0: Beenden")
        auswahl = input("Auswahl: ").strip()
        if auswahl == "1":
            anzeigen(bestand)
        elif auswahl == "0":
            break
        else:
            print("Unbekannte Auswahl.")

if __name__ == "__main__":
    main()

Der Startblock ruft main() auf. anzeigen() erhält dieselbe Liste und liest deren Einträge. Bei leerem Bestand verhindert ein frühes return, dass unnötig weitergearbeitet wird. In diesem Zwischenstand werden Änderungen noch nicht gespeichert.

Vor der Erweiterung Prüffälle notieren

Versuch Erwartung
Leere Liste anzeigen Verständlicher Hinweis
Eine Rolle anzeigen Nummer 1, richtige Eigenschaften
Unbekannte Menüauswahl Hinweis, Menü bleibt bedienbar
74 g von 750 g abbuchen 676 g verbleiben
Negativer oder zu hoher Verbrauch Ablehnung, Bestand unverändert
Speichern und neu starten Gleiche Rollen wieder vorhanden
Beschädigte JSON-Datei laden Hinweis und Abbruch ohne Überschreiben

Diese Erwartungsliste ist unsere einfache Prüfanleitung. Im nächsten Teil setzen wir die fehlenden Funktionen um und gehen die Fälle durch.

Mitmach-Aufgabe

Füge dem Anfangsbestand im Zwischenprogramm eine zweite Rolle hinzu. Teste beide Einträge und danach einen leeren Bestand. Notiere das Verhalten für eine unbekannte Menüauswahl.

Versuche die Aufgabe zuerst selbst. Vergleiche danach deinen Ansatz mit der Musterlösung. Andere Lösungen sind möglich, wenn sie dieselben Anforderungen erfüllen.

Musterlösung

bestand = [
    {"material": "PLA", "farbe": "Blau", "rest_g": 750.0},
    {"material": "PETG", "farbe": "Schwarz", "rest_g": 420.0},
]

Ergebnis prüfen

Ersetze damit die Bestandszuweisung innerhalb von main. Zwei Rollen erscheinen als 1 und 2. Bei bestand = [] wird der Leerhinweis ausgegeben.

Typische Stolperstellen

Der Zwischenstand und die vollständige Version aus Teil 21 sind getrennte Programme. Nummern im Menü entsprechen nicht den internen Listenindizes.

Was du jetzt kannst

  • Anforderungen in Teilaufgaben zerlegen.
  • Ein Menü mit Funktionen verbinden.
  • Sollwerte für Prüfungen festlegen.

Passendes Cheatsheet

Zum Nachschlagen: Cheatsheet 09 – Funktionen und Rückgabewerte. Dort findest du auch den vorhandenen PDF-Download.

Im nächsten Teil

In Teil 21 geht es um Abschlussprojekt: deine eigene Filamentverwaltung. Verbinde die Kursgrundlagen zu einer vollständigen Konsolenanwendung mit Eingabeprüfung und JSON-Speicherung.

← Teil 19 · Kursübersicht · Weiter zu Teil 21 →