i commited last idk when , so updates
This commit is contained in:
0
csv/vornamen/__init__.py
Normal file
0
csv/vornamen/__init__.py
Normal file
BIN
csv/vornamen/code.zip
Normal file
BIN
csv/vornamen/code.zip
Normal file
Binary file not shown.
60
csv/vornamen/main.py
Normal file
60
csv/vornamen/main.py
Normal 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)}")
|
||||
38
csv/vornamen/print_tables.py
Normal file
38
csv/vornamen/print_tables.py
Normal 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)
|
||||
28
csv/vornamen/vornamen_6kl_25.csv
Normal file
28
csv/vornamen/vornamen_6kl_25.csv
Normal 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;;
|
||||
|
Reference in New Issue
Block a user