Lösungen: Bonus - Fortgeschrittene Übungen
String-Manipulation
Lösung Bonus 7: String umkehren
python
def string_umkehren(text):
"""Kehrt einen String um."""
return text[::-1]Alternative (mit Schleife):
python
def string_umkehren(text):
"""Kehrt einen String um."""
ergebnis = ""
for zeichen in text:
ergebnis = zeichen + ergebnis # Zeichen vor die bisherigen setzen
return ergebnisAlternative (mit reversed):
python
def string_umkehren(text):
"""Kehrt einen String um."""
return "".join(reversed(text))Erklärung:
[::-1]ist Slicing mit Schritt -1 (rückwärts)- "Hallo" → "ollaH"
- "Python" → "nohtyP"
Lösung Bonus 8: Wörter zählen
python
def woerter_zaehlen(text):
"""Zählt die Anzahl der Wörter in einem String."""
return len(text.split())Erklärung:
split()teilt den String an Leerzeichen und gibt eine Liste von Wörtern zurücklen()zählt die Anzahl der Elemente in der Liste- Beispiele:
- "Hallo Welt" →
split()→ ["Hallo", "Welt"] →len()→ 2 - "Python ist toll" →
split()→ ["Python", "ist", "toll"] →len()→ 3
- "Hallo Welt" →
Lösung Bonus 9: Palindrom-Checker
python
def ist_palindrom(wort):
"""Prüft, ob ein Wort ein Palindrom ist."""
return wort == wort[::-1]Alternative (mit Schleife):
python
def ist_palindrom(wort):
"""Prüft, ob ein Wort ein Palindrom ist."""
umgekehrt = ""
for zeichen in wort:
umgekehrt = zeichen + umgekehrt
return wort == umgekehrtErklärung:
- Ein Palindrom liest sich vorwärts und rückwärts gleich
- Wir vergleichen das Wort mit seiner umgekehrten Version
- Beispiele:
- "anna" → "anna" (gleich) → True
- "rentner" → "rentner" (gleich) → True
- "hallo" → "ollah" (unterschiedlich) → False
Lösung Bonus 17: Anagramm-Checker
python
def sind_anagramme(wort1, wort2):
"""Prüft, ob zwei Wörter Anagramme sind."""
return sorted(wort1) == sorted(wort2)Alternative (mit Counter):
python
from collections import Counter
def sind_anagramme(wort1, wort2):
"""Prüft, ob zwei Wörter Anagramme sind."""
return Counter(wort1) == Counter(wort2)Alternative (manuell):
python
def sind_anagramme(wort1, wort2):
"""Prüft, ob zwei Wörter Anagramme sind."""
# Länge muss gleich sein
if len(wort1) != len(wort2):
return False
# Jeder Buchstabe muss gleich oft vorkommen
for buchstabe in wort1:
if wort1.count(buchstabe) != wort2.count(buchstabe):
return False
return TrueErklärung:
- Anagramme enthalten die gleichen Buchstaben in anderer Reihenfolge
sorted()sortiert die Buchstaben alphabetisch- Wenn die sortierten Buchstaben gleich sind, sind es Anagramme
- Beispiele:
- "listen" → sorted → ['e', 'i', 'l', 'n', 's', 't']
- "silent" → sorted → ['e', 'i', 'l', 'n', 's', 't']
- Listen sind gleich → True
Datenstrukturen (Dictionaries)
Lösung Bonus 12: Häufigkeiten zählen
python
def haeufigkeit_zaehlen(liste):
"""Zählt die Häufigkeit jedes Elements."""
haeufigkeit = {}
for element in liste:
if element in haeufigkeit:
haeufigkeit[element] += 1
else:
haeufigkeit[element] = 1
return haeufigkeitAlternative (mit get):
python
def haeufigkeit_zaehlen(liste):
"""Zählt die Häufigkeit jedes Elements."""
haeufigkeit = {}
for element in liste:
haeufigkeit[element] = haeufigkeit.get(element, 0) + 1
return haeufigkeitAlternative (mit Counter):
python
from collections import Counter
def haeufigkeit_zaehlen(liste):
"""Zählt die Häufigkeit jedes Elements."""
return dict(Counter(liste))Erklärung:
- Wir iterieren über alle Elemente
- Für jedes Element erhöhen wir den Zähler im Dictionary
get(element, 0)gibt den aktuellen Wert zurück oder 0, wenn der Key nicht existiert- Beispiel: ["a", "b", "a"] →
Lösung Bonus 16: Dictionaries zusammenführen
python
def dictionaries_zusammenfuehren(dict1, dict2):
"""Führt zwei Dictionaries zusammen."""
ergebnis = dict1.copy() # Kopie von dict1 erstellen
for key, value in dict2.items():
ergebnis[key] = value # Werte von dict2 überschreiben
return ergebnisAlternative (mit update):
python
def dictionaries_zusammenfuehren(dict1, dict2):
"""Führt zwei Dictionaries zusammen."""
ergebnis = dict1.copy()
ergebnis.update(dict2)
return ergebnisAlternative (Python 3.9+):
python
def dictionaries_zusammenfuehren(dict1, dict2):
"""Führt zwei Dictionaries zusammen."""
return dict1 | dict2Alternative (Dictionary Unpacking):
python
def dictionaries_zusammenfuehren(dict1, dict2):
"""Führt zwei Dictionaries zusammen."""
return {**dict1, **dict2}Erklärung:
- Wir starten mit einer Kopie von dict1
- Dann fügen wir alle Einträge von dict2 hinzu
- Bei doppelten Keys wird der Wert aus dict2 verwendet
- Beispiele:
{"a": 1}+{"b": 2}→{"a": 1, "b": 2}{"a": 1}+{"a": 2}→{"a": 2}(Überschreiben)