Aufgaben-Python/lehrpfad_1_grundlagen/09_dictionaries_und_sets/musterloesung.py

75 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
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))