i commited last idk when , so updates

This commit is contained in:
2025-12-01 11:45:42 +01:00
parent 4cab5d7202
commit 2c92baa9c8
28 changed files with 6957 additions and 505 deletions

0
csv/vornamen/__init__.py Normal file
View File

BIN
csv/vornamen/code.zip Normal file

Binary file not shown.

60
csv/vornamen/main.py Normal file
View File

@@ -0,0 +1,60 @@
# -*- coding: ansi -*-
from print_tables import tables
import csv
# Klassen-Daten einlesen
klassen = {
"s6a": [],
"s6b": [],
"s6c": [],
"s6ds": [],
"s6es": []
}
try:
with open("vornamen_6kl_25.csv", "r", encoding="utf-8") as f:
reader = csv.reader(f, delimiter=";")
for row in reader:
for i, key in enumerate(klassen.keys()):
if i >= len(row):
continue
name = row[i].strip()
if name:
klassen[key].append(name)
except FileNotFoundError as err:
print(err)
# Alphabetisch sortieren und unique machen, aber Gesamtzahl vorher sichern
gesamtzahlen = {}
for key in klassen:
gesamtzahlen[key] = len(klassen[key]) # Anzahl aller Sch<63>ler inkl. Duplikate
klassen[key] = sorted(set(klassen[key])) # Unique + alphabetisch
# Originale Tabelle ausgeben
tables.print_table(klassen)
# Statistik vorbereiten
stats = {
"Klasse": [],
"Eigene Vornamen": [],
"Sch<EFBFBD>ler gesamt": []
}
gesamt_schueler = 0
for klasse, namen in klassen.items():
stats["Klasse"].append(klasse)
stats["Eigene Vornamen"].append(len(namen))
stats["Sch<EFBFBD>ler gesamt"].append(gesamtzahlen[klasse])
gesamt_schueler += gesamtzahlen[klasse]
# Statistik-Tabelle ausgeben
print("\nKlassenstatistik:")
tables.print_table(stats)
print(f"\nGesamtanzahl Sch<63>ler: {gesamt_schueler}")
# Alle unique Namen <20>ber alle Klassen
alle_namen = set()
for namen in klassen.values():
alle_namen.update(namen)
print(f"Gesamtzahl eigene Vornamen: {len(alle_namen)}")

View File

@@ -0,0 +1,38 @@
class tables:
@staticmethod
def print_table(data: dict, sum_row: dict = None):
"""
print a formatted table from a dict
:param data: dict with column names as keys and list of column values
:param sum_row: optional dict with the same keys for a sum/total row
"""
# Berechne die maximale Breite jeder Spalte (Header vs. Inhalte vs. Summe)
col_widths = {}
for k, v in data.items():
max_content_len = max((len(str(name)) for name in v), default=0)
header_len = len(k)
sum_len = len(str(sum_row[k])) if sum_row and k in sum_row else 0
col_widths[k] = max(max_content_len, header_len, sum_len)
# Header drucken
header = " | ".join(k.ljust(col_widths[k]) for k in data.keys())
separator = "-+-".join("-" * col_widths[k] for k in data.keys())
print(header)
print(separator)
# Zeilen drucken
max_len = max(len(v) for v in data.values())
for i in range(max_len):
row = []
for key in data.keys():
if i < len(data[key]):
row.append(str(data[key][i]).ljust(col_widths[key]))
else:
row.append(" " * col_widths[key])
print(" | ".join(row))
# Summe drucken, falls <20>bergeben
if sum_row:
print(separator)
sum_line = " | ".join(str(sum_row[k]).ljust(col_widths[k]) for k in data.keys())
print(sum_line)

View File

@@ -0,0 +1,28 @@
Lilli Marie;Vandita;Adrian;Ho;Stella
Lena Maria;Nico;Emma;Kamilla;Benjamin
Miriam;Sascha;Ella;Nina;Linda
Valentina;Lena;Johanna;Matthias;Kevin
Emily;Elias;Jana;Nils;Luisa
Laura;Maximilian;Raphael;Jonathan;Anna
Eva;Niklas;Klara;Luka;Florian
Lara;Ilia;Sarah;Emilia;Elias
Mykyta;Celina;Frida;Emma;Hannah
Selina;Pia-Amelie;Anna;Matthias;Simon
Julia;Mona;Katrin;Tristan;Patrick
Anna-Lisa;Luzia;Maja;Jakab;Maximilian
David-Dimitrie;Anna;Sebastian;Paul;Timo
Sarah Marie;Jeremias;Sophia;Maximilian;Paul
Nicole;Marie;Sophie Luisa;Zoey;Paul
Pavlo;Mark Lipeng;Alice Isabell;Benedikt;Nico
Alexandra;Sebastian;Verena;Samuel;Anika
;;Valentina;Nina;Matteo
;;Anna;Moritz;Jakob
;;Illia;Patrick;
;;Larissa;Din;
;;Manuel;Dániel;
;;Anna;Theresa;
;;Michael;Michael;
;;Paula;Katharina;
;;Nina;;
;;Bianca;;
;;Felix;;
1 Lilli Marie Vandita Adrian Ho Stella
2 Lena Maria Nico Emma Kamilla Benjamin
3 Miriam Sascha Ella Nina Linda
4 Valentina Lena Johanna Matthias Kevin
5 Emily Elias Jana Nils Luisa
6 Laura Maximilian Raphael Jonathan Anna
7 Eva Niklas Klara Luka Florian
8 Lara Ilia Sarah Emilia Elias
9 Mykyta Celina Frida Emma Hannah
10 Selina Pia-Amelie Anna Matthias Simon
11 Julia Mona Katrin Tristan Patrick
12 Anna-Lisa Luzia Maja Jakab Maximilian
13 David-Dimitrie Anna Sebastian Paul Timo
14 Sarah Marie Jeremias Sophia Maximilian Paul
15 Nicole Marie Sophie Luisa Zoey Paul
16 Pavlo Mark Lipeng Alice Isabell Benedikt Nico
17 Alexandra Sebastian Verena Samuel Anika
18 Valentina Nina Matteo
19 Anna Moritz Jakob
20 Illia Patrick
21 Larissa Din
22 Manuel Dániel
23 Anna Theresa
24 Michael Michael
25 Paula Katharina
26 Nina
27 Bianca
28 Felix