DeaD_EyE icon

norm_krimi.py

DeaD_EyE | PRO | 07/11/26 05:52:50 PM UTC | 0 ⭐ | 13850 👁️ | Never ⏰ | []
Python |

1.91 KB

|

None

|

0 👍

/

0 👎

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

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎