75 lines
2.6 KiB
Python
75 lines
2.6 KiB
Python
"""
|
||
Kapitel G09: Dictionaries & Sets (Mengen) – Musterlösung
|
||
=========================================================
|
||
Schulabgleich: Thema 15.0 (Dictionaries und Mengen)
|
||
|
||
Hier findest du die vollständige Musterlösung zu allen Aufgaben.
|
||
"""
|
||
|
||
from typing import List, Dict, Set
|
||
|
||
|
||
# TODO 1: Wörter-Häufigkeitszähler
|
||
def woerter_haeufigkeit(text: str) -> Dict[str, int]:
|
||
"""Zählt die Häufigkeit aller Wörter in einem gegebenen Text (case-insensitive)."""
|
||
# 1. Satzzeichen entfernen und Text in Kleinbuchstaben umwandeln
|
||
satzzeichen = ".,!?;:()\"'[]{}<>"
|
||
bereinigter_text = text.lower()
|
||
for z in satzzeichen:
|
||
bereinigter_text = bereinigter_text.replace(z, " ")
|
||
|
||
# 2. In Wörter zerlegen
|
||
woerter = bereinigter_text.split()
|
||
|
||
# 3. Häufigkeiten zählen
|
||
haeufigkeit: Dict[str, int] = {}
|
||
for wort in woerter:
|
||
haeufigkeit[wort] = haeufigkeit.get(wort, 0) + 1
|
||
|
||
return haeufigkeit
|
||
|
||
|
||
# TODO 2: Telefonbuch-Suche mit .get()
|
||
def telefonbuch_suche(telefonbuch: Dict[str, str], name: str) -> str:
|
||
"""Sucht eine Telefonnummer im Telefonbuch mit sicherer .get() Abfrage."""
|
||
return telefonbuch.get(name, "Nicht gefunden")
|
||
|
||
|
||
# TODO 3: Gemeinsame Interessen (Mengenoperation Schnittmenge)
|
||
def gemeinsame_interessen(person_a_hobbys: Set[str], person_b_hobbys: Set[str]) -> Set[str]:
|
||
"""Ermittelt die Schnittmenge der Hobbys zweier Personen."""
|
||
return person_a_hobbys & person_b_hobbys
|
||
|
||
|
||
# TODO 4: Duplikate entfernen & Reihenfolge beibehalten
|
||
def entferne_duplikate_behalte_reihenfolge(liste: list) -> list:
|
||
"""Entfernt Duplikate aus einer Liste unter Beibehaltung der Reihenfolge."""
|
||
seen = set()
|
||
ergebnis = []
|
||
for element in liste:
|
||
if element not in seen:
|
||
seen.add(element)
|
||
ergebnis.append(element)
|
||
return ergebnis
|
||
|
||
|
||
if __name__ == "__main__":
|
||
print("--- 📚 Musterlösung G09: Dictionaries & Sets ---")
|
||
|
||
# 1. Wörter-Häufigkeit
|
||
text = "Python ist super. Python macht Spaß! Ist Python leicht? Ja!"
|
||
print("Häufigkeiten:", woerter_haeufigkeit(text))
|
||
|
||
# 2. Telefonbuch
|
||
buch = {"Anna": "0171-123456", "Ben": "0160-987654"}
|
||
print("Suche Anna:", telefonbuch_suche(buch, "Anna"))
|
||
print("Suche Clara:", telefonbuch_suche(buch, "Clara"))
|
||
|
||
# 3. Gemeinsame Interessen
|
||
a = {"Gaming", "Klettern", "Musik"}
|
||
b = {"Kochen", "Gaming", "Musik", "Lesen"}
|
||
print("Gemeinsame Hobbys:", gemeinsame_interessen(a, b))
|
||
|
||
# 4. Duplikate entfernen
|
||
zahlen = [1, 3, 2, 3, 1, 4, 2, 5]
|
||
print("Bereinigte Zahlenliste:", entferne_duplikate_behalte_reihenfolge(zahlen))
|