3. Unterrichtsblock

Python Strings

Strings (zu Deutsch: Zeichenfolgen) in Python sind entweder von einfachen oder doppelten Anführungszeichen umgeben. Man kann ein String-Literal mit der Funktion print() anzeigen:

# "Hallo" ist dasselbe wie 'Hallo'.
print("Hallo")
print('Hallo')

Zeichenfolge einer Variablen zuweisen

Die Zuweisung eines Strings zu einer Variablen erfolgt mit dem Variablennamen, gefolgt von einem Gleichheitszeichen und dem String:

a = "Hallo"
print(a)

Mehrzeilige Strings

Man kann einer Variablen einen mehrzeiligen String zuweisen, indem man drei Anführungszeichen verwendet:

# Verwendung von drei doppelten Anführungszeichen:
a = """Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua."""

print(a)


# Oder drei einfachen Anführungszeichen:
a = '''Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.'''

print(a)

Hinweis: Im Ergebnis werden die Zeilenumbrüche an der gleichen Stelle wie im Code eingefügt.

Strings sind Arrays (zu Deutsch: Ansammlungen)

Wie viele andere beliebte Programmiersprachen sind Strings in Python Arrays (Ansammlungen) von Bytes, die Unicode-Zeichen darstellen. Python hat jedoch keinen Zeichendatentyp, ein einzelnes Zeichen ist einfach ein String mit einer Länge von 1.

Mit eckigen Klammern kann auf Elemente eines Strings zugegriffen werden.

# Ausgabe des Zeichens an Position 1 (Das erste Zeichen hat die Position 0):
a = "Hallo, Welt!"
print(a[1])

Aufgabe

Lasse dir mit o.g. Methode nur den Teil „Welt“ ausgeben.

Strings mit Schleifen durchlaufen

Da Strings Arrays sind, können die Zeichen in einem String mit einer for-Schleife durchlaufen werden.

# Durchlaufen aller Buchstaben des Wortes „Zwetschge“:
for x in "Zwetschge":
  print(x)

Aufgabe

Probiere o.g. Code aus.

Über Schleifen lernen wir in einem späteren Unterrichtsblock mehr.

String-Länge

Um die Länge einer Zeichenfolge zu erhalten, verwendet man die len()-Funktion. Die len()Funktion gibt die Länge eines Strings zurück:

a = "Hallo, Welt!"
print(len(a))

Aufgabe

Probiere o.g. Code aus.

Zeichenkette prüfen

Um zu überprüfen, ob eine bestimmte Phrase oder ein bestimmtes Zeichen in einer Zeichenfolge vorhanden ist, können wir das Schlüsselwort in verwenden.

# Überprüfung, ob im folgenden Text "Biergarten" vorhanden ist:
txt = "Unser Wirtshaus bietet neben einer guten Küche auch einen wunderschönen Biergarten."
print("Biergarten" in txt)

Aufgabe

Probiere o.g. Code aus.

Verwendung in einer if-Anweisung:

# Ausgabe erfolgt nur, wenn "Biergarten" vorhanden ist:
txt = "Unser Wirtshaus bietet neben einer guten Küche auch einen wunderschönen Biergarten."
if "Biergarten" in txt:
  print("Ja, das Wirtshaus hat einen 'Biergarten'.")

Aufgabe

Probiere o.g. Code aus.

Wir lernen in einem späteren Unterrichtsblock mehr über if-Anweisungen.

Überprüfung auf NOT

Um zu überprüfen, ob eine bestimmte Phrase oder ein bestimmtes Zeichen NICHT in einer Zeichenfolge vorhanden ist, kann das Schlüsselwort not in verwendet werden.

# Überprüfung, ob "Kegelbahn" im folgenden Text NICHT vorhanden ist:
txt = "Unser Wirtshaus bietet neben einer guten Küche auch einen wunderschönen Biergarten."
print("Kegelbahn" not in txt)

Aufgabe

Probiere o.g. Code aus.

Verwendung in einer if-Anweisung:

# Ausgabe soll nur erfolgen, wenn "Kegelbahn" NICHT vorhanden ist:
txt = "Unser Wirtshaus bietet neben einer guten Küche auch einen wunderschönen Biergarten."
if "Kegelbahn" not in txt:
  print("Nein, eine 'Kegelbahn' ist nicht vorhanden.")

Aufgabe

Probiere o.g. Code aus.

Strings schneiden

Man kann eine Reihe von Zeichen zurückgeben, indem man die Slice-Syntax verwendet. Hierbei wird der Startindex und den Endindex getrennt durch einen Doppelpunkt angegeben, um einen Teil der Zeichenfolge zu erhalten.

# Ausgabe der  Zeichen von Position 2 bis Position 5 (nicht enthalten):
b = "Hallo, Welt!"
print(b[2:5])

Hinweis: Das erste Zeichen hat den Index 0.

Von Beginn an schneiden

Wenn man den Startindex weglässt, beginnt der Bereich beim ersten Zeichen:

# Ausgabe der Zeichen von Anfang bis Position 5 (nicht enthalten):
b = "Hallo, Welt!"
print(b[:5])

Bis zum Ende schneiden

Durch Weglassen des Endindex geht der Schnittbereich bis zum Ende:

# Ausgabe der Zeichen von Position 2 bis zum Ende:
b = "Hallo, Welt!"
print(b[2:])

Negative Indizes

Um dem Schnitt am Ende der Zeichenfolge zu beginnen, werden negative Indexwerte verwendet:

b = "Hallo, Welt!"
print(b[-5:-2])

Aufgabe

Teste die Codes aus dieser Lektion und verwende dabei unterschiedliche Werte & Parameter.

Strings ändern

Python verfügt über eine Reihe integrierter Methoden, die Sie für Zeichenfolgen verwenden können. Die Methoden werden hierbei mit einem „.“ an die zu ändernde Variable angehangen.

# Beispiel: Der Variablenname lautet "a" die Methode wird durch einen "." an die Variable angehängt
print(a.upper())

Großbuchstaben

Die upper()-Methode gibt den String in Großbuchstaben zurück:

a = "Hallo, Welt!"
print(a.upper())

Kleinbuchstaben

Die lower()-Methode gibt den String in Kleinbuchstaben zurück:

a = "Hallo, Welt!"
print(a.lower())

Leerzeichen entfernen

Leerzeichen sind Leerraum vor und/oder nach dem eigentlichen Text, und sehr oft soll dieser Leerraum entfernt werden. Die strip()-Methode entfernt alle Leerzeichen am Anfang oder am Ende:

a = " Hallo, Welt! "
print(a.strip()) # Ausgabe "Hallo, Welt!"

Zeichenfolge ersetzen

Die replace()-Methode ersetzt einen String durch einen anderen String:

a = "Hallo, Welt!"
print(a.replace("H", "J"))

Split-String

Die split()-Methode gibt eine Liste zurück, in der der Text zwischen dem angegebenen Trennzeichen als Listenelemente ausgegeben wird.

Die split()-Methode teilt einen String in Teilstrings auf, wenn das Trennzeichen (hier ein Komma „,“) findet:

a = "Hallo, Welt!"
print(a.split(",")) # Ausgabe ['Hallo', ' Welt!']

Über Listen erfahren wir in einem späteren Unterrichtsblock mehr.

String-Methoden

Liste aller String-Methoden: hier klicken

Aufgabe

Führe o.g. Codes aus, um ein Gefühl hierfür zu bekommen.

Strings verketten

Um zwei Zeichenfolgen zu verketten oder zu kombinieren, kann der + Operator verwendet werden.

Variable a mit Variable b in Variable c zusammenführen:

a = "Hallo"
b = "Welt"
c = a + b
print(c)

Um ein Leerzeichen dazwischen einzufügen, verwendet man " ":

a = "Hallo"
b = "Welt"
c = a + " " + b
print(c)

Aufgabe

Führe o.g. Code aus und teste auch selbst erstellte Befehle.

Strings formatieren

Wie im letzten Unterrichtsblock erwähnt, können Strings und Zahlen nicht wie folgt kombinieren:

alter = 36
txt = "Mein Name ist Max, ich bin " + alter
print(txt)

Aufgabe

Führe o.g. Code aus.

Aber man kann Strings und Zahlen mit der format()-Methode kombinieren.

Die format()-Methode nimmt die übergebenen Argumente, formatiert sie und platziert sie im String, wo sich die Platzhalter {}befinden:

Verwendung der format()-Methode, um Zahlen in Zeichenfolgen einzufügen:

alter = 36
txt = "Mein Name ist Max, und ich bin {}"
print(txt.format(alter)) # Die Variable "txt" wird durch den "." um die Methode "format()" erweitert

Die Methode format () akzeptiert eine unbegrenzte Anzahl von Argumenten und wird in die entsprechenden Platzhalter eingefügt:

anzahl = 3
produktnummer = 567
preis = 49.95
meinebestellung = "Ich kaufe {} Stück von Produktnummer {} für {} EUR."
print(meinebestellung.format(anzahl, produktnummer, preis))

Man kann Indexnummern verwenden, {0} um sicherzustellen, dass die Argumente in den richtigen Platzhaltern platziert werden:

anzahl = 3
produktnummer = 567
preis = 49.95
meinebestellung = "Ich bezahle {2} EUR für {0} Stück von Produktnummer {1}."
print(meinebestellung.format(anzahl, produktnummer, preis))

Aufgabe

Führe o.g. Code-Beispiele aus und teste auch selbst erstellte Befehle.

String-Escape-Zeichen

Um unzulässige Zeichen in einen String einzufügen, verwendet man sogenannte „Escape-Zeichen“. Ein Escape-Zeichen ist ein umgekehrter Schrägstrich, \ gefolgt von dem Zeichen, das man einfügen möchte.

Ein Beispiel für ein unzulässiges Zeichen ist ein doppeltes Anführungszeichen innerhalb eines Strings, welcher von doppelten Anführungszeichen umgeben ist:

# Man erhält eine Fehlermeldung, 
# wenn man doppelte Anführungszeichen innerhalb eines Strings verwendet,
# der von doppelten Anführungszeichen umgeben ist:

txt = "Um unzulässige Zeichen in einen String einzufügen kann man sog. "Escape-Zeichen" verwenden."
print(txt)

Um dieses Problem zu beheben, verwendet man das Escape-Zeichen \":

Das Escape-Zeichen ermöglichen es, doppelte Anführungszeichen zu verwenden, wenn dies normalerweise nicht erlaubt wäre:

txt = "Um unzulässige Zeichen in einen String einzufügen kann man sog. \"Escape-Zeichen\" verwenden."
print(txt)

Übersicht der Escape-Zeichen

Andere in Python verwendete Escape-Zeichen:

CodeErgebnis
\‘Einzelnes Zitat
\\Backslash
\nNeue Linie
\rRückgabe
\tTab
\bRücktaste
\fFormular Feed
\oooOktalwert
\xhhHex-Wert

String-Methoden

Python verfügt über eine Reihe integrierter Methoden, die man für Strings verwenden kann.

Hinweis: Alle String-Methoden geben neue Werte zurück. Sie ändern den ursprünglichen String nicht.

MethodeBeschreibung
capitalize()Wandelt das erste Zeichen in Großbuchstaben um
casefold()Wandelt Strings in Kleinbuchstaben um
center()Gibt einen zentrierten String zurück
count()Gibt zurück, wie oft ein bestimmter Wert in einem String vorkommt
encode()Gibt eine codierte Version des Strings zurück
endswith()Gibt true zurück, wenn der String mit dem angegebenen Wert endet
expandtabs()Legt die Tabulatorgröße des Strings fest
find()Durchsucht den String nach einem bestimmten Wert und gibt die Position zurück, an der er gefunden wurde
format()Formatiert angegebene Werte in einem String
format_map()Formatiert angegebene Werte in einem String
index()Durchsucht den String nach einem bestimmten Wert und gibt die Position zurück, an der er gefunden wurde
isalnum()Gibt true zurück, wenn alle Zeichen im String alphanumerisch sind
isalpha()Gibt true zurück, wenn alle Zeichen im String im Alphabet enthalten sind
isdecimal()Gibt true zurück, wenn alle Zeichen im String Dezimalzahlen sind
isdigit()Gibt true zurück, wenn alle Zeichen im String Ziffern sind
isidentifier()Gibt true zurück, wenn der String ein Bezeichner (identifier) ist
islower()Gibt true zurück, wenn alle Zeichen im String Kleinbuchstaben sind
isnumeric()Gibt true zurück, wenn alle Zeichen im String numerisch sind
isprintable()Gibt true zurück, wenn alle Zeichen im String druckbar sind
isspace()Gibt true zurück, wenn alle Zeichen im String Leerzeichen sind
istitle()Gibt true zurück, wenn der String den Regeln eines Titels folgt (bzw. ein Titel ist)
isupper()Gibt true zurück, wenn alle Zeichen im String Großbuchstaben sind
join()Verbindet die Elemente einer Iterablen mit dem Ende eines Strings
ljust()Gibt eine linksbündige Version des Strings zurück
lower()Konvertiert einen String in Kleinbuchstaben
lstrip()Gibt eine von links getrimmte Version des Strings zurück
maketrans()Gibt eine Übersetzungstabelle zurück, die in Übersetzungen verwendet werden soll
partition()Gibt ein Tupel zurück, bei dem der String in drei Teile geteilt wird
replace()Gibt einen String zurück, in der ein Wert durch einen anderen Wert ersetzt wird
rfind()Durchsucht den String nach einem angegebenen Wert und gibt die letzte Position zurück, an der er gefunden wurde
rindex()Durchsucht den String nach einem angegebenen Wert und gibt die letzte Position zurück, an der er gefunden wurde
rjust()Gibt eine rechtsbündige Version des Strings zurück
rpartition()Gibt ein Tupel zurück, bei dem der String in drei Teile geteilt wird
rsplit()Teilt den String am angegebenen Trennzeichen und gibt eine Liste zurück
rstrip()Gibt eine von rechts getrimmte Version des Strings zurück
split()Teilt den String am angegebenen Trennzeichen und gibt eine Liste zurück
splitlines()Teilt den String an Zeilenumbrüchen und gibt eine Liste zurück
startswith()Gibt true zurück, wenn der String mit dem angegebenen Wert beginnt
strip()Gibt eine gekürzte Version des Strings zurück
swapcase()Vertauscht Groß- und Kleinschreibung, Kleinschreibung wird Großschreibung und umgekehrt
title()Konvertiert das erste Zeichen jedes Wortes in Großbuchstaben
translate()Gibt einen übersetzten String zurück
upper()Konvertiert einen String in Großbuchstaben
zfill()Füllt den String am Anfang mit einer angegebenen Anzahl von 0-Werten

Aufgabe

String-Zuweisung und Ausgabe:

  • Weisen Sie einer Variablen einen String zu und geben Sie ihn mit der print()-Funktion aus.

Mehrzeilige Strings:

  • Erstellen Sie einen mehrzeiligen String mittels dreifacher Anführungszeichen und geben Sie ihn aus.

Auf einen String zugreifen:

  • Geben Sie das 4. Zeichen eines Strings aus und nutzen Sie negative Indizes, um das Zeichen an der vorletzten Position zu drucken.

Substring extrahieren:

  • Extrahieren Sie mit Hilfe der Slice-Syntax den Wortteil „Welt“ aus dem String „Hallo, Welt!“ und geben Sie ihn aus.

Länge eines Strings ermitteln:

  • Bestimmen Sie die Länge des Strings „Python Programmierung“ und geben Sie diese aus.

Zeichenkette überprüfen:

  • Überprüfen Sie, ob das Wort „Python“ in dem String „Lernen Sie Python Programmierung“ enthalten ist, und geben Sie das Ergebnis aus.

String manipulieren:

  • Verwenden Sie die Methoden upper(), lower(), strip() und replace(), um verschiedene Formen eines Strings zu erzeugen.

Strings verketten:

  • Verketten Sie zwei Strings „Python“ und „Programmierung“ mit und ohne ein Leerzeichen dazwischen.

String formatieren:

  • Verwenden Sie die format()-Methode, um Variablen in einen Satz einzufügen.

Escape-Zeichen verwenden:

  • Kreieren Sie einen String, der doppelte Anführungszeichen enthält und geben Sie ihn aus.

Übungsaufgaben Unterrichtsblock 2 & 3

# ===============================================
# Python-Aufgaben: Variablen, Datentypen, Casting & Strings
# Themen: Variablen, Datentypen, Casting, Stringmethoden, Strings,
#         Verketten, Erweitern (+=, format), Schneiden (Slicing)
# ===============================================
# Name: _________________________________
# Datum: ________________________________
#
# Hinweise:
# - Schreibe Deinen Code direkt unter jede Aufgabe.
# - Nutze print() sinnvoll, um Ergebnisse sichtbar zu machen.
# - Ändere Aufgabenstellungen nicht. Kommentiere kurz, wenn etwas unklar ist.
# - Verwende KEINE externen Bibliotheken.
#
# ------------------------------------------------
# AUFGABEN (1–50)
# ------------------------------------------------

# 1) Lege zwei Variablen a und b an (z. B. a = 7, b = "Tag") und gib beide mit einer print-Zeile aus.
#    Nutze Komma-Trennung in print().

# 2) Wechsle den Datentyp einer Variablen: Weise x erst eine Zahl, dann einen Text zu und gib type(x) jeweils aus.

# 3) Korrigiere ungültige Variablennamen, so dass sie gültig sind und weise beliebige Werte zu:
#    2zahl = 2, mein-name = "Alex", if = "verboten"

# 4) Erzeuge drei Variablen in EINER Zeile per Mehrfachzuweisung und gib sie aus (Beispiel: stadt, land, kontinent).

# 5) Weise drei Variablen denselben Wert in EINER Zeile zu (x = y = z = ...). Prüfe mit print(), ob alle gleich sind.

# 6) Entpacke eine Liste mit drei Elementen in drei Variablen (unpacking) und gib jedes Element aus.

# 7) Verwende print() mit + zur Verknüpfung von drei String-Variablen. Achte auf Leerzeichen im Ergebnis.

# 8) Demonstriere den Unterschied zwischen print(x + y) und print(x, y), wenn x und y Zahlen sind.

# 9) Bestimme mit type() den Typ folgender Literale und gib ihn aus: 42, 3.14, "42".

# 10) Wandle mit int(), float(), str() geeignete Werte um und gib Ergebnis + type() aus (je zwei Beispiele).

# 11) Versuche, int("vier") auszuführen. Fange den Fehler ab und gib eine verständliche Fehlermeldung aus.

# 12) Lege Beispiele für diese eingebauten Datentypen an und gib jeweils type() aus:
#     list, tuple, range, dict, set, frozenset, bool, bytes, None

# 13) Erzeuge einen mehrzeiligen String mit drei Anführungszeichen und gib ihn aus.

# 14) Lege einen String mit einfachen Anführungszeichen und einen mit doppelten an. Gib beide aus.

# 15) Greife per Index auf das 1., 3. und letzte Zeichen eines Strings zu und gib sie aus.

# 16) Verwende len() auf einem String und gib die Länge aus.

# 17) Nutze eine for-Schleife, um alle Zeichen eines kurzen Strings untereinander auszugeben.

# 18) Prüfe mit dem in-Operator, ob ein Teilwort in einem längeren Text vorkommt und gib das boolesche Ergebnis aus.

# 19) Prüfe mit not in, ob ein Teilwort NICHT vorkommt und verwende dies in einer if-Abfrage mit print().

# 20) Schneiden (Slicing): Gib die Zeichen von Index 2 bis 6 (exklusive) eines Strings aus.

# 21) Slicing ohne Startindex: Gib vom Anfang bis Index 5 (exklusive) aus.

# 22) Slicing ohne Endindex: Gib ab Index 4 bis zum Ende aus.

# 23) Slicing mit negativen Indizes: Gib die letzten 4 bis letzten 1 Zeichen (exklusive) aus.

# 24) Erzeuge aus einem String nur jedes zweite Zeichen mithilfe von Slicing mit Schrittweite.

# 25) Kombiniere mehrere Teilstücke eines Strings (z. B. erster Teil + " " + letzter Teil) zu einem neuen String.

# 26) Verwende upper() auf einem String und gib das Ergebnis aus.

# 27) Verwende lower() auf einem String und gib das Ergebnis aus.

# 28) Entferne mit strip() Leerzeichen am Anfang und Ende eines Strings und zeige vorher/nachher.

# 29) Ersetze in einem String ein Zeichen oder Wort durch ein anderes mit replace() und gib beide Varianten aus.

# 30) Zerlege einen String mit split(",") in eine Liste und gib die Liste aus.

# 31) Füge zwei Strings ohne Leerzeichen mit + zusammen. Gib das Ergebnis aus. Füge dann mit + " " ein Leerzeichen ein.

# 32) Verwende die format()-Methode mit genau EINEM Platzhalter {} und fülle ihn mit einer Zahl.

# 33) Verwende die format()-Methode mit DREI Platzhaltern {} in einer sinnvollen Reihenfolge.

# 34) Verwende die format()-Methode mit Indexen {2}, {0}, {1} für eine andere Reihenfolge der Platzhalter.

# 35) Erzeuge einen String mit Anführungszeichen im Inneren mithilfe von Escape-Zeichen (\").

# 36) Erzeuge eine neue Variable s und erweitere sie schrittweise mit += um weitere Teile (mind. 3 Erweiterungen).

# 37) Zeige, dass Strings unveränderlich sind, indem du a.upper() aufrufst und anschließend a erneut ausgibst.

# 38) Baue einen formatierten Bestelltext mit format(), der Menge, Produktnummer und Preis enthält.

# 39) Wandle "5" zuerst in float, dann wieder in str um und gib Zwischentypen mit type() aus.

# 40) Erzeuge eine Variable vom Typ range und wandle sie mit list() in eine Liste um. Gib die Liste aus.

# 41) Lege eine bytes-Variable an (z. B. bytes(4)) und gib sie aus. Gib zusätzlich type() aus.

# 42) Demonstriere, dass Groß-/Kleinschreibung bei Variablennamen unterscheidet (a und A sind verschieden).

# 43) Erzeuge ein dict mit zwei Schlüsseln ("name", "alter") und gib die Werte lesbar mit format() aus.

# 44) Nutze split() und nimm das erste Listenelement, anschließend verknüpfe es mit einem weiteren Wort per +.

# 45) Schneide die ersten 3 und die letzten 3 Zeichen eines Strings ab und verknüpfe den Rest.

# 46) Prüfe, ob ein String mit einem Leerzeichen beginnt oder endet, entferne es mit strip() und belege per print().

# 47) Erzeuge einen String mit \n und \t und gib ihn aus, sodass die Wirkung der Escape-Zeichen sichtbar ist.

# 48) Erzeuge aus zwei Zahlen-Variablen einen Satz mithilfe von format(); vermeide + zwischen Zahl und String.

# 49) Verwende replace(), um die erste Vorkommnis eines Zeichens zu ersetzen, und zeige das Ergebnis.

# 50) Kombi-Aufgabe: Lies einen langen String in variabler s ein. Erzeuge daraus
#     a) die Länge, b) den ersten und letzten Buchstaben, c) die mittleren 3 Zeichen (bei ungerader Länge),
#     d) eine Version in Großbuchstaben ohne Leerraum am Rand, e) eine Liste der Teilstrings nach Komma,
#     und gib alles nacheinander aus.

Lösungen für o.g. Aufgaben (ausgeblendet – bei Lehrkraft anfragen)

Aufgaben Unterrichtsblock 2

# ===============================================
# Python-Prüfung (10 Aufgaben): Variablen, Datentypen, Casting
# ===============================================
# Name: _________________________________
# Datum: ________________________________
#
# Hinweise:
# - Schreibe Deinen Code direkt unter jede Aufgabe.
# - Nutze print(), um Ergebnisse sichtbar zu machen.
# - Verwende KEINE externen Bibliotheken.
#
# ------------------------------------------------
# AUFGABEN (1–10)
# ------------------------------------------------
#
# 1) Lege drei Variablen a, b, c mit den Typen int, float und str an
#    (z. B. 7, 2.5, "Start") und gib ihren Wert und Typ mit type() aus.
#
# 2) Wechsle bei der Variablen x nacheinander den Typ (int -> str -> float).
#    Gib nach jeder Zuweisung type(x) aus und erkläre kurz in einem Kommentar,
#    warum Python das erlaubt.
#
# 3) Mehrfachzuweisung & Unpacking:
#    - Weise in EINER Zeile drei Variablen denselben Wert zu.
#    - Entpacke anschließend eine Liste wie [1, 2, 3] in drei Variablen
#      und gib beide Varianten aus.
#
# 4) Demonstriere korrektes Ausgeben unterschiedlicher Datentypen:
#    - Lege x = 5 (int) und y = "Äpfel" (str) an.
#    - Zeige zwei korrekte Möglichkeiten, beide in EINER Zeile zu drucken
#      (z. B. Komma-Trennung bzw. str()-Casting).
#
# 5) Casting: Gegeben sind die Strings s1 = "15" und s2 = "3.2".
#    - Wandle s1 in int, s2 in float um und berechne Summe und Durchschnitt.
#    - Gib Ergebniswert und deren Typen aus.
#
# 6) Fehlerbehandlung beim Casting:
#    - Fange den Fehler beim Versuch ab, int("Brot") umzuwandeln.
#    - Gib eine aussagekräftige Fehlermeldung aus (ValueError).
#
# 7) bool-Casting testen:
#    - Erzeuge die Werte 0, 1, "", "Hi" und wandle sie mit bool() um.
#    - Gib die Ergebnisse mit Wert und type() aus.
#
# 8) Datentypen anlegen:
#    - Erzeuge Beispiele für list, tuple, dict und set.
#    - Gib jeweils den Datentyp mit type() aus.
#
# 9) Weitere eingebaute Typen:
#    - Erzeuge eine Variable vom Typ bytes (z. B. bytes(4)) und zeige Wert + type().
#    - Erzeuge zusätzlich None und gib type(None) aus.
#
# 10) Kombi-Aufgabe (Casting + Typprüfung):
#     Gegeben: n1 = "12", n2 = "5.5", n3 = "abc".
#     - Konvertiere die numerischen Strings passend (int/float).
#     - Ignoriere nicht konvertierbare Werte robust (try/except).
#     - Berechne die Summe als float und gib Summe + type() aus.

Lösungen (bei Lehrkraft anfragen)