From 9f7d3c6d4a6b168f585f8e317ed940ca234f46db Mon Sep 17 00:00:00 2001 From: Jan Hoheisel Date: Sun, 1 Feb 2026 20:33:11 +0100 Subject: [PATCH] Formatierung Ausgabe --- ausgabe.py | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/ausgabe.py b/ausgabe.py index 35833db..4cbfc60 100644 --- a/ausgabe.py +++ b/ausgabe.py @@ -118,28 +118,30 @@ class ElterndienstAusgabe: positive_praef_tage = {tag for tag, präf in praeferenzen_dienst.items() if präf == 1} if positive_praef_tage: # Es gibt positive Präferenzen - # Prüfe ob ALLE zugeteilten Dienste an nicht-präferierten Tagen sind for tag in zugeteilte_tage: if tag not in positive_praef_tage: - # Dienst wurde an nicht-präferiertem Tag zugeteilt verletzungen[eltern][dienst]['positiv_nicht_erfuellt'] += 1 - # Tabelle ausgeben - print(f"\n{'Eltern':<20} ", end='') + # Tabelle ausgeben (verbesserte Spaltenformatierung) + col_width = 14 # Breite pro Dienst-Spalte (sichtbar) + name_col = 20 + + # Header + print(f"\n{'Eltern':<{name_col}}", end='') for dienst in self.daten.dienste: - print(f"{dienst.kuerzel:>12}", end='') + print(f"{dienst.kuerzel:^{col_width}}", end='') print() - print(f"{'':20} ", end='') - for dienst in self.daten.dienste: - print(f"{'neg, pos':>12}", end='') + print(f"{'':{name_col}}", end='') + for _ in self.daten.dienste: + print(f"{'neg, pos':^{col_width}}", end='') print() - print("-" * (20 + 12 * len(self.daten.dienste))) + print("-" * (name_col + col_width * len(self.daten.dienste))) gesamt_negativ = defaultdict(int) gesamt_positiv = defaultdict(int) for eltern in sorted(self.daten.eltern): - print(f"{eltern:<20} ", end='') + print(f"{eltern:<{name_col}}", end='') for dienst in self.daten.dienste: neg = verletzungen[eltern][dienst]['negativ'] pos = verletzungen[eltern][dienst]['positiv_nicht_erfuellt'] @@ -147,22 +149,28 @@ class ElterndienstAusgabe: gesamt_negativ[dienst] += neg gesamt_positiv[dienst] += pos - # Farbcodierung + # Inhalt vor Padding erstellen + cell = f"{neg:>3}, {pos:>3}" + cell_padded = cell.center(col_width) + + # Farbcodierung (erst nach Padding anwenden) farbe = "" reset = "" if neg > 0 or pos > 0: farbe = "\033[91m" if neg > 0 else "\033[93m" # Rot für negativ, Gelb für positiv reset = "\033[0m" - print(f"{farbe}{neg:>3}, {pos:>3}{reset:>6}", end='') + print(f"{farbe}{cell_padded}{reset}", end='') print() # Summenzeile - print("-" * (20 + 12 * len(self.daten.dienste))) - print(f"{'SUMME':<20} ", end='') + print("-" * (name_col + col_width * len(self.daten.dienste))) + print(f"{'SUMME':<{name_col}}", end='') for dienst in self.daten.dienste: neg = gesamt_negativ[dienst] pos = gesamt_positiv[dienst] + cell = f"{neg:>3}, {pos:>3}" + cell_padded = cell.center(col_width) farbe = "" reset = "" @@ -170,7 +178,7 @@ class ElterndienstAusgabe: farbe = "\033[91m" if neg > 0 else "\033[93m" reset = "\033[0m" - print(f"{farbe}{neg:>3}, {pos:>3}{reset:>6}", end='') + print(f"{farbe}{cell_padded}{reset}", end='') print() print("\nLegende:")