# -*- coding: utf-8 -*- """Das Gemeinsame aller Pruefstaende: eine Zeile schreiben und sie merken. WARUM ES DIESE DATEI GIBT (07.09.2026) -------------------------------------- Die Funktion pruefe() stand 35-mal im Quelltext, in sechs leicht verschiedenen Fassungen. Keine davon war falsch - aber sie sahen unterschiedlich aus, und wer 37 Laeufe hintereinander durchsieht, liest dann dreierlei Formen fuer dieselbe Aussage. Wird an der Ausgabe je etwas geaendert, sind es 35 Stellen. BENUTZUNG from pruefhelfer import fehler, pruefe pruefe(a == b, "beide nennen denselben Ordner") ... if fehler: print(f"ROT | {len(fehler)} Punkt(e) nicht erfuellt") sys.exit(1) print("GRUEN | ...") `fehler` ist eine Liste und wird beim Importieren geteilt - jeder Pruefstand laeuft in einem eigenen Prozess, sie gehoert also ihm allein. Den Abschluss schreibt jeder Pruefstand selbst. Er sieht nur aehnlich aus: manche raeumen dort noch einen Temp-Ordner ab, manche zaehlen die fehlgeschlagenen Punkte einzeln auf. Das ist Inhalt, keine Wiederholung. Diese Datei liegt in BEIDEN Programmen gleich. Wer sie aendert, kopiert sie hinueber - sonst steht in zwei Programmen zweierlei. """ import sys # Alles, was nicht erfuellt war - der Text, nicht nur die Anzahl. Wer am Ende # nur eine Zahl hat, muss den Lauf noch einmal lesen, um zu wissen, was fehlte. fehler = [] def pruefe(bedingung, text): """Eine Zusage pruefen, das Ergebnis melden und Fehlschlaege merken.""" zeile = (" OK | " if bedingung else "FEHLER | ") + text # Die Windows-Konsole ist cp1252 - ein Sonderzeichen im Text darf den Lauf # nicht mit einem UnicodeEncodeError abbrechen. kodierung = sys.stdout.encoding or "utf-8" print(zeile.encode(kodierung, "replace").decode(kodierung)) if not bedingung: fehler.append(text)