from rich import get_console
from rich.table import Table
def normalisiert(gesamt: list[int], anzahl_straftäter: list[int]) -> list[float]:
"""
Berechnet für jede Bevölkerungsgruppe die normierte Straftäterrate.
gesamt: Gesamtgröße der jeweiligen Bevölkerungsgruppe.
anzahl_straftäter: Anzahl der Straftäter je Gruppe.
Eine Liste mit den normierten Raten (0.0 bis 1.0).
"""
if len(anzahl_straftäter) != len(gesamt):
raise ValueError("Beide Listen müssen gleich lang sein.")
ergebnis = []
for straftäter, bevölkerung in zip(anzahl_straftäter, gesamt):
if bevölkerung <= 0:
raise ValueError("Alle Bevölkerungsgrößen müssen größer als 0 sein.")
ergebnis.append(straftäter / bevölkerung)
return ergebnis
def zeige_tabelle(farben: list[str], gesamt: list[int], anzahl_straftäter: list[int]):
ergebnis = normalisiert(gesamt, anzahl_straftäter)
summe = sum(gesamt)
console = get_console()
table = Table(title="Normalisierte Kriminalitätsraten")
for col in (
"Farbe",
"Population",
"Strafäter",
"Rel. (gesamt)",
"Rel. (normalisiert)",
):
table.add_column(col)
for farbe, anzahl, straftäter, rel_norm in zip(
farben, gesamt, anzahl_straftäter, ergebnis
):
rel_gesamt = straftäter / summe
table.add_row(
f"{farbe.title()} Schafe",
f"{anzahl:>10}",
f"{straftäter:>10}",
f"{rel_gesamt:>7.1%}",
f"{rel_norm:>7.1%}",
)
console.print(table)
schwarze_schafe = 90
weiße_schafe = 10
straftaten_schwarz = 5
straftaten_weiß = 5
farben = ["schwarze", "weiße"]
gesamt = [schwarze_schafe, weiße_schafe]
anzahl_straftäter = [straftaten_schwarz, straftaten_weiß]
zeige_tabelle(farben, gesamt, anzahl_straftäter)
Comments
0 B
|👍
/👎
0 B
|👍
/👎