Aufgaben-Python/lehrpfad_1_grundlagen/08_textverarbeitung_und_strings/aufgabe.py

140 lines
5 KiB
Python

"""
Kapitel G08: Textverarbeitung & Strings in Python (Schulabgleich 11.0)
=====================================================================
In dieser Aufgabe lernst du die wichtigsten String-Methoden zur Textbereinigung,
Suche, Formatierung und Analyse kennen.
"""
def ist_palindrom(text: str) -> bool:
"""
TODO 1: Prüft, ob ein Text ein Palindrom ist (von vorne und hinten
gelesen exakt gleich lautet).
Regeln:
- Groß- und Kleinschreibung wird ignoriert ('A' == 'a').
- Leerzeichen werden ignoriert (z.B. "Dreh mal am Herd").
Beispiele:
ist_palindrom("Anna") -> True
ist_palindrom("Lagerregal") -> True
ist_palindrom("Dreh mal am Herd") -> True
ist_palindrom("Python") -> False
Tipp:
1. Wandle den Text mit `.lower()` in Kleinbuchstaben um.
2. Entferne Leerzeichen mit `.replace(" ", "")`.
3. Vergleiche den bereinigten Text mit seiner Umkehrung: `bereinigt == bereinigt[::-1]`.
"""
# Schreibe hier deinen Code für TODO 1:
pass
def zaehle_vokale(text: str) -> int:
"""
TODO 2: Zählt die Anzahl aller Vokale im übergebenen Text.
Als Vokale gelten: a, e, i, o, u sowie die Umlaute ä, ö, ü (Groß- und Kleinschreibung!).
Beispiele:
zaehle_vokale("Python") -> 1 (nur 'o')
zaehle_vokale("Käsebrot") -> 3 ('ä', 'e', 'o')
zaehle_vokale("SCHÖNES Wetter") -> 4 ('Ö', 'E', 'e', 'e')
zaehle_vokale("HTML") -> 0
zaehle_vokale("Fly") -> 0
Tipp:
Definiere eine Vokal-Menge oder Liste: `vokale = "aeiouäöü"`
Wandle den Text in Kleinbuchstaben um (`text.lower()`) und zähle,
wie viele Zeichen in `vokale` vorkommen.
"""
# Schreibe hier deinen Code für TODO 2:
pass
def bereinige_benutzernamen(name: str) -> str:
"""
TODO 3: Bereinigt einen eingegebenen Benutzernamen für ein Login-System.
Regeln:
1. Führende und nachfolgende Leerzeichen werden entfernt (.strip()).
2. Alle Buchstaben werden in Kleinbuchstaben umgewandelt (.lower()).
3. Alle verbleibenden Leerzeichen zwischen Wörtern werden durch Unterstriche '_' ersetzt (.replace()).
Beispiele:
bereinige_benutzernamen(" Max Mustermann ") -> "max_mustermann"
bereinige_benutzernamen(" Super Coder 99 ") -> "super_coder_99"
bereinige_benutzernamen("Lukas") -> "lukas"
Tipp:
Du kannst String-Methoden verketten: `name.strip().lower().replace(" ", "_")`
"""
# Schreibe hier deinen Code für TODO 3:
pass
def woerter_zaehlen(text: str) -> int:
"""
TODO 4: Zählt, wie viele Wörter im übergebenen Text vorkommen.
- Mehrere Leerzeichen hintereinander zählen nicht als leere Wörter.
- Ein leerer String "" enthält 0 Wörter.
Beispiele:
woerter_zaehlen("Hallo Welt") -> 2
woerter_zaehlen(" Python macht Spaß! ") -> 3
woerter_zaehlen("") -> 0
Tipp:
Verwende `.split()`. Ohne Parameter teilt es an beliebigen Leerzeichen
und ignoriert doppelte Leerzeichen automatisch! `len(text.split())`
"""
# Schreibe hier deinen Code für TODO 4:
pass
def maskiere_kreditkarte(nummer: str) -> str:
"""
TODO 5: Maskiert eine sensible Kartennummer oder ID, sodass nur die
letzten 4 Zeichen sichtbar bleiben und alle vorherigen durch '*' ersetzt werden.
Regeln:
- Hat die Nummer 4 oder weniger Zeichen, wird sie unverändert zurückgegeben.
- Hat sie mehr als 4 Zeichen, werden alle bis auf die letzten 4 durch '*' ersetzt.
Beispiele:
maskiere_kreditkarte("1234567812345678") -> "************5678"
maskiere_kreditkarte("987654321") -> "*****4321"
maskiere_kreditkarte("1234") -> "1234"
maskiere_kreditkarte("99") -> "99"
Tipp:
1. Wenn `len(nummer) <= 4`: `return nummer`
2. Anzahl der Sterne: `anzahl_sterne = len(nummer) - 4`
3. Die letzten 4 Zeichen: `letzte_vier = nummer[-4:]`
4. Gib `("*" * anzahl_sterne) + letzte_vier` zurück.
"""
# Schreibe hier deinen Code für TODO 5:
pass
# ==============================================================================
# Hauptprogramm zum Ausprobieren:
# (Führe die Datei aus mit: python3 aufgabe.py)
# ==============================================================================
if __name__ == "__main__":
print("--- Teste deine String-Funktionen ---")
test_palindrom = "Dreh mal am Herd"
print(f"Ist '{test_palindrom}' ein Palindrom (TODO 1)?", ist_palindrom(test_palindrom))
test_vokale = "Käsebrot mit Äpfeln"
print(f"Vokale in '{test_vokale}' (TODO 2):", zaehle_vokale(test_vokale))
roher_name = " Max Mustermann 2026 "
print(f"Bereinigter Name von '{roher_name}' (TODO 3):", bereinige_benutzernamen(roher_name))
text = " Python macht wirklich großen Spaß! "
print(f"Wortanzahl (TODO 4):", woerter_zaehlen(text))
karte = "1234567812345678"
print(f"Maskierte Karte '{karte}' (TODO 5):", maskiere_kreditkarte(karte))