5. Unterrichtsblock

Strings: Texte in Python
Strings (Zeichenketten) kennst du seit Block 1: alles, was zwischen Anführungszeichen steht. In fast jedem Programm muss man Texte zerlegen, aufräumen oder schön ausgeben, zum Beispiel Benutzernamen, Passwörter, Chat-Nachrichten oder Kassenbons. Genau darum geht es in diesem Block.
Anführungszeichen und mehrzeilige Strings
Ob du einfache oder doppelte Anführungszeichen nimmst, ist egal. Praktisch: Mit einfachen Anführungszeichen außen kannst du doppelte im Text verwenden. Mit drei Anführungszeichen schreibst du Texte über mehrere Zeilen.
print("Hallo")
print('Hallo')
print('Sie sagte: "Hallo!"')
gedicht = """Rosen sind rot,
Python ist toll."""
print(gedicht)
Hallo Hallo Sie sagte: "Hallo!" Rosen sind rot, Python ist toll.
Escape-Zeichen
Manche Zeichen kann man nicht direkt in einen String tippen. Dafür gibt es Escape-Zeichen: ein Backslash \ und danach ein Buchstabe oder Zeichen.
| Zeichen | Bedeutung |
|---|---|
\n | neue Zeile |
\t | Tabulator (Einrückung) |
\" | doppeltes Anführungszeichen |
\' | einfaches Anführungszeichen |
\\ | Backslash |
print("Name:\tLina\nKlasse:\t10b")
print("Er sagte: \"Python ist einfach!\"")
print("C:\\Schule\\python")
Name: Lina Klasse: 10b Er sagte: "Python ist einfach!" C:\Schule\python
\. Im String musst du ihn doppelt schreiben (\\), sonst macht Python zum Beispiel aus \n eine neue Zeile.Länge eines Strings
len() liefert die Anzahl der Zeichen, Leerzeichen und Satzzeichen zählen mit. Aus Block 3 weißt du, dass for einen String Zeichen für Zeichen durchläuft, und aus Block 4, dass in nach einem Teiltext sucht.
wort = "Python"
print(len(wort))
print(len("Hallo Welt!"))
print("th" in wort)
6 11 True
Index und Slicing
Jedes Zeichen in einem String hat eine Position, den Index. Gezählt wird ab 0. Von hinten zählt man mit negativen Zahlen: -1 ist immer das letzte Zeichen.
| Zeichen | P | y | t | h | o | n |
|---|---|---|---|---|---|---|
| Index | 0 | 1 | 2 | 3 | 4 | 5 |
| von hinten | -6 | -5 | -4 | -3 | -2 | -1 |
wort = "Python"
print(wort[0])
print(wort[3])
print(wort[-1])
print(wort[-2])
P h n o
Ausschnitte mit Slicing
Mit [start:ende] schneidest du einen Teil heraus. Lässt du start weg, geht es ab dem Anfang los, lässt du ende weg, bis zum Schluss. Eine dritte Zahl gibt die Schrittweite an: [::2] nimmt jedes zweite Zeichen, [::-1] liest rückwärts.
text = "Hallo, Welt!"
print(text[0:5])
print(text[7:])
print(text[:5])
print(text[-6:])
print(text[::2])
print(text[::-1])
Hallo Welt! Hallo Welt! Hlo et !tleW ,ollaH
text[0:5] liefert die Zeichen mit Index 0 bis 4. Ein einzelner Index außerhalb des Textes (text[50]) erzeugt einen IndexError, beim Slicing (text[5:50]) nimmt Python einfach, was da ist.Aufgabe 1 – Der Schülerausweis
Zeit: ca. 8 Minuten
Erst denken, dann tippen: Sage bei jeder Zeile die Ausgabe voraus, schreibe sie als Kommentar dazu und prüfe sie danach mit Python.
wort = "Wochenende"
print(wort[0])
print(wort[-1])
print(wort[:5])
print(wort[5:])
print(wort[::-1])
print(len(wort))
- Sage jede Ausgabe voraus und prüfe sie. Notiere bei jedem Irrtum kurz, woran es lag.
- Ein Schülerausweis hat die Nummer
ausweis = "BFS-2026-0473". Schneide mit Slicing das Schulkürzel, das Jahr und die laufende Nummer heraus und gib alles aus. Kontrolle: BFS, 2026, 0473. - Teste dein Programm auch mit
"MUC-2026-12". Stimmt die laufende Nummer noch? Wenn nicht: Ändere deinen Slice so, dass er für beide Nummern funktioniert, und erkläre in einem Kommentar, warum.
String-Methoden
Methoden sind Funktionen, die zu einem bestimmten Datentyp gehören. Du hängst sie mit einem Punkt an den String: name.upper(). Die wichtigsten Methoden für Strings:
| Methode | Wirkung | Beispiel → Ergebnis |
|---|---|---|
upper() / lower() | alles groß / alles klein | "Hallo".upper() → HALLO |
capitalize() | erster Buchstabe groß, Rest klein | "hALLO".capitalize() → Hallo |
title() | jedes Wort beginnt groß | "lina berger".title() → Lina Berger |
strip() | entfernt Leerzeichen am Rand (lstrip()/rstrip(): nur links/rechts) | " hi ".strip() → hi |
replace(alt, neu) | ersetzt alle Vorkommen | "Haus".replace("H", "M") → Maus |
count(x) | zählt, wie oft x vorkommt | "Banane".count("a") → 2 |
find(x) / rfind(x) | Position des ersten / letzten Vorkommens, -1 wenn nicht da | "Banane".find("n") → 2 |
startswith(x) / endswith(x) | beginnt / endet der Text mit x? | "bild.png".endswith(".png") → True |
isdigit() / isalpha() | nur Ziffern / nur Buchstaben? | "2026".isdigit() → True |
isupper() / islower() | nur Groß- / nur Kleinbuchstaben? | "A".isupper() → True |
name = " lina BERGER "
sauber = name.strip()
print(sauber.title())
print(sauber.upper())
print(sauber.capitalize())
print("[" + name + "]")
Lina Berger LINA BERGER Lina berger [ lina BERGER ]
Die letzte Zeile zeigt: name selbst hat sich nicht verändert. Strings sind unveränderlich, jede Methode liefert einen neuen String.
satz = "Python ist toll, Python macht Spaß"
print(satz.count("Python"))
print(satz.find("toll"))
print(satz.find("Java"))
print(satz.replace("Python", "Code"))
print(satz.startswith("Py"))
print("2026".isdigit())
2 11 -1 Code ist toll, Code macht Spaß True True
text = text.strip(). Nur text.strip() allein ändert nichts.Es gibt noch viele weitere Methoden, zum Beispiel split(), das einen Text in Teile zerlegt. Das Ergebnis ist eine Liste, Listen lernst du ab Block 6 kennen.
Verketten und formatieren
Verketten mit + und *
Mit + hängst du Strings aneinander, mit * wiederholst du einen String. Eine Zahl kannst du aber nicht direkt mit + an einen Text hängen, sie muss erst mit str() umgewandelt werden (siehe Block 2).
vorname = "Lina"
alter = 16
print("Hallo " + vorname + "!")
print(vorname + " ist " + str(alter) + " Jahre alt.")
print("-" * 20)
Hallo Lina! Lina ist 16 Jahre alt. --------------------
f-Strings
Bequemer sind f-Strings: Du schreibst ein f vor den String und setzt Variablen oder ganze Rechnungen in geschweifte Klammern. Python wandelt Zahlen dabei automatisch um.
preis = 2.5
anzahl = 3
print(f"{anzahl} Brezeln kosten {anzahl * preis} Euro.")
print(f"{anzahl} Brezeln kosten {anzahl * preis:.2f} Euro.")
3 Brezeln kosten 7.5 Euro. 3 Brezeln kosten 7.50 Euro.
Formatangaben
Hinter einem Doppelpunkt in den geschweiften Klammern legst du fest, wie ein Wert angezeigt wird. So bekommst du Preise mit zwei Nachkommastellen und sauber ausgerichtete Spalten:
| Angabe | Wirkung | Beispiel → Ergebnis |
|---|---|---|
:.2f | genau 2 Nachkommastellen | f"{3.14159:.2f}" → 3.14 |
:8 | mindestens 8 Zeichen breit | f"{42:8}" → 42 |
:<10 | linksbündig in 10 Zeichen | f"{'Tee':<10}|" → Tee | |
:>10 | rechtsbündig in 10 Zeichen | f"{'Tee':>10}|" → Tee| |
:^10 | zentriert in 10 Zeichen | f"{'Tee':^10}|" → Tee | |
:>8.2f | kombiniert: rechtsbündig, 8 breit, 2 Nachkommastellen | f"{1.5:>8.2f}" → 1.50 |
print(f"{'Brezel':<12}{0.85:>8.2f}")
print(f"{'Apfelschorle':<12}{1.9:>8.2f}")
print(f"{'Summe':<12}{2.75:>8.2f}")
Brezel 0.85 Apfelschorle 1.90 Summe 2.75
In älterem Code siehst du oft noch die Methode format(). Sie macht dasselbe, nur stehen die Werte am Ende: "{} ist {} Jahre alt.".format(vorname, alter).
:.2f rundet nur für die Anzeige, der Wert in der Variablen bleibt unverändert.Aufgabe 2 – Das Preisschild
Zeit: ca. 8 Minuten
Die Schulcafeteria druckt Preisschilder für Rabattaktionen.
produkt = "Pizza Margherita"
preis = 8.5
rabatt_prozent = 20
- Berechne den neuen Preis nach Abzug des Rabatts.
- Gib mit einem einzigen f-String genau diese Zeile aus:
Pizza Margherita: 6.80 Euro (statt 8.50 Euro, -20 %) - Was ist der Unterschied zwischen
print(f"{preis}")undprint(f"{preis:.2f}")? Erkläre ihn in einem Kommentar.
Übungsaufgaben
Jetzt kombinierst du die String-Werkzeuge mit if, while und for aus Block 3 und den Vergleichen aus Block 4. Die Aufgaben 3 bis 7 sind die Kernaufgaben. Wer schneller fertig ist, macht mit den Bonusaufgaben weiter. Teste jedes Programm mit mehreren Eingaben.
Aufgabe 3 – Der Benutzername-Generator
Zeit: ca. 10 Minuten
Die Schule vergibt Benutzernamen nach einer festen Regel: erster Buchstabe des Vornamens, die ersten vier Buchstaben des Nachnamens und die letzten zwei Ziffern des Geburtsjahrs, alles klein geschrieben.
- Frage Vorname, Nachname und Geburtsjahr mit
input()ab und entferne versehentliche Leerzeichen am Rand. - Baue den Benutzernamen nach der Regel und gib ihn aus. Kontrolle: Lina, Berger, 2008 ergibt
lberg08. - Gib zusätzlich die E-Mail-Adresse aus: Benutzername und
@bfs-schule.de. - Teste mit „ Tom “, „Li“ und 2009. Was passiert bei einem Nachnamen mit weniger als vier Buchstaben? Erkläre in einem Kommentar.
Zusatz: Umlaute machen in E-Mail-Adressen Probleme. Ersetze ä, ö, ü und ß durch ae, oe, ue und ss, bevor du den Benutzernamen baust. Kontrolle: Jonas, Müller, 2007 ergibt jmuel07.
Aufgabe 4 – Der Passwort-Check
Zeit: ca. 10 Minuten
Ein sicheres Passwort hat mindestens 8 Zeichen, mindestens eine Ziffer, mindestens einen Großbuchstaben und kein Leerzeichen.
- Frage ein Passwort ab und prüfe die Länge mit
len(). - Zähle mit einer
for-Schleife über das Passwort, wie viele Ziffern (isdigit()) und Großbuchstaben (isupper()) es enthält. - Prüfe mit
in, ob ein Leerzeichen enthalten ist. - Gib für jede verletzte Regel eine eigene Meldung aus, zum Beispiel „Mindestens eine Ziffer fehlt.“, und „Passwort ist sicher.“, wenn alles passt.
Kontrolle: python ergibt drei Meldungen, Python 2026! eine (Leerzeichen), Sommer2026 ist sicher. Zusatz: Wiederhole die Eingabe mit einer while-Schleife, bis ein sicheres Passwort eingegeben wurde.
Aufgabe 5 – Die Chat-Nachricht aufräumen
Zeit: ca. 8 Minuten
Eine Nachricht aus dem Klassenchat soll ordentlich in der Schul-App erscheinen.
nachricht = " HALLO leute, morgen treffen wir uns im computerraum!!! "
- Entferne die Leerzeichen am Rand. Danach soll nur der erste Buchstabe groß sein, alles andere klein (
capitalize()). - Ersetze „computerraum“ durch „Computerraum 204“ und „!!!“ durch „!“.
- Die mehrfachen Leerzeichen nach dem Komma sollen zu einem werden. Ein einzelnes
replace(" ", " ")reicht nicht immer. Löse das mit einerwhile-Schleife undin. - Gib die fertige Nachricht und ihre Länge aus. Kontrolle: „Hallo leute, morgen treffen wir uns im Computerraum 204!“
Zusatz: In der Vorschau der App werden Nachrichten mit mehr als 40 Zeichen gekürzt: die ersten 37 Zeichen und dann „…“. Gib die Vorschau aus.
Aufgabe 6 – Der Kassenbon
Zeit: ca. 10 Minuten
Die Cafeteria braucht einen ordentlichen Kassenbon. So soll er aussehen:
============================ 2 x Brezel 1.70 1 x Apfelschorle 1.90 1 x Leberkässemmel 3.20 ---------------------------- Summe 6.80 davon MwSt. 7 % 0.44 ============================
artikel_1 = "Brezel"
anzahl_1 = 2
preis_1 = 0.85
artikel_2 = "Apfelschorle"
anzahl_2 = 1
preis_2 = 1.9
artikel_3 = "Leberkässemmel"
anzahl_3 = 1
preis_3 = 3.2
- Berechne für jeden Artikel den Gesamtpreis (Anzahl mal Einzelpreis) und die Summe.
- Gib den Bon genau wie oben aus: Artikelname linksbündig (
:<16), Beträge rechtsbündig mit zwei Nachkommastellen (:>8.2f). Die Linien baust du mit"=" * 28und"-" * 28. - Die Zeile „davon MwSt. 7 %“ zeigt den Steueranteil, der in der Summe steckt: Summe / 107 * 7.
Zusatz: Frage ab, wie viel bezahlt wurde, und gib das Rückgeld mit zwei Nachkommastellen aus.
Aufgabe 7 – Das Spiegelwort
Zeit: ca. 8 Minuten
Ein Palindrom liest sich vorwärts und rückwärts gleich, zum Beispiel „Anna“ oder „Lagerregal“.
- Frage ein Wort ab und drehe es mit Slicing um.
- Prüfe, ob das Wort ein Palindrom ist, und gib eine passende Meldung aus. Auch „Anna“ mit großem A soll erkannt werden.
- Teste mit Anna, Reliefpfeiler, Lagerregal und Python.
Zusatz: Auch Sätze können Palindrome sein: „Trug Tim eine so helle Hose nie mit Gurt?“ Entferne Leerzeichen und Satzzeichen mit replace(), bevor du prüfst.
Bonusaufgabe 1 – Die Geheimschrift
Bei der Caesar-Verschlüsselung wird jeder Buchstabe um 3 Stellen im Alphabet verschoben: a wird zu d, b zu e und x wieder zu a.
alphabet = "abcdefghijklmnopqrstuvwxyz"
- Frage einen Text ab und wandle ihn in Kleinbuchstaben um.
- Gehe den Text mit
fordurch und suche die Position jedes Zeichens mitalphabet.find(zeichen). Zeichen, die nicht im Alphabet stehen (find()liefert dann-1), übernimmst du unverändert. - Baue den Geheimtext mit
+=zusammen. Tipp:(position + 3) % 26sorgt dafür, dass nach z wieder a kommt. Kontrolle: „hallo welt“ ergibt „kdoor zhow“. - Entschlüssele den Geheimtext wieder, indem du um 3 Stellen zurückschiebst.
Bonusaufgabe 2 – Der E-Mail-Prüfer
Ein Anmeldeformular soll offensichtlich falsche E-Mail-Adressen ablehnen.
- Frage eine E-Mail-Adresse ab und entferne Leerzeichen am Rand.
- Prüfe diese Regeln: genau ein @ (
count()), die Adresse beginnt und endet nicht mit @ (startswith(),endswith()), nach dem @ kommt noch ein Punkt (find("@") < rfind(".")) und sie enthält kein Leerzeichen. - Speichere das Ergebnis in
gueltig(ein einziger boolescher Ausdruck) und gib es aus. - Teste mit lina@schule.de (gültig) sowie lina.schule.de, @schule.de, lina@schule und lina@@schule.de (alle ungültig).
- Escape-Zeichen:
\nneue Zeile,\tTabulator,\"Anführungszeichen,\\Backslash. - Index ab 0,
-1ist das letzte Zeichen.[start:ende]schneidet aus, das Ende ist nicht enthalten,[::-1]dreht um. - Methoden wie
strip(),lower(),replace(),find()liefern einen neuen String, das Original bleibt gleich. - f-Strings:
f"{name} zahlt {preis:.2f} Euro".:<10und:>10richten Spalten aus.
Übungsaufgaben Unterrichtsblock 2 & 5
Zusätzliche Aufgabensammlungen zum Wiederholen von Block 2 (Variablen, Datentypen, Casting) und Block 5 (Strings), zum Beispiel vor einer Kurzarbeit. Einige Aufgaben greifen schon auf Listen, Dictionaries oder try/except vor. Die kannst du überspringen.
# ===============================================
# 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.
