Python · Klasse 10 · Block 1 von 4

Werkzeuge &
Wissen

Bevor wir programmieren, brauchen wir das richtige Vokabular: Wie liest man einen Fehler? Was kann eine Zahl, eine Liste, ein Text? In diesem Block frischen wir bekannte Werkzeuge auf und lernen neue dazu — angewendet wird das Ganze dann in Block 2.

Alle Codebeispiele laufen direkt im Browser. Mit 📋 Kopieren kannst du den Code in Thonny einfügen und dort ausführen.

Thema 01

Syntax & Semantik

Wenn Code nicht funktioniert, gibt es zwei völlig unterschiedliche Gründe dafür. Diese Unterscheidung hilft dir, jeden Fehler schneller zu verstehen — nicht nur in Python.

Zwei Arten, wie ein Satz schiefgehen kann

Schau dir diese zwei deutschen Sätze an:

❌ Kaputt in der Form

„Ich gehe Schule zur."

Die Wortstellung stimmt nicht. Man erkennt nicht einmal richtig, was gemeint ist — der Satz ist grammatikalisch ungültig.

⚠️ Falsch im Sinn

„Der Stein hat Hunger."

Grammatikalisch völlig korrekt — aber inhaltlich sinnlos. Steine haben keinen Hunger.

Genau diese zwei Fehlerarten gibt es auch beim Programmieren — nur nennt man sie dort Syntaxfehler und Semantikfehler.

Fertiges Beispiel — Syntaxfehler
💡Die schließende Klammer fehlt. Python kann den Code nicht einmal einlesen — wie der Satz „Ich gehe Schule zur."
Fertiges Beispiel — Semantikfehler
💡Python liest den Code problemlos — die Form stimmt. Aber Text und Zahl lassen sich nicht addieren: inhaltlich sinnlos, wie der hungrige Stein.
Syntax = Ist es überhaupt richtig geschrieben?  ·  Semantik = Ergibt es auch Sinn?

Fehler lesen: die Traceback-Anatomie

Wenn Python einen Fehler meldet, zeigt es eine Traceback genannte Meldung. Die letzte Zeile verrät die Fehlerart: SyntaxError heißt „Form kaputt", TypeError, IndexError oder AttributeError heißen „zur Laufzeit ist etwas inhaltlich schiefgegangen" — also Semantikfehler.

Leicht
Ordne jeden Codeschnipsel der richtigen Fehlerart zu.
preis = "5"
gesamt = preis * "2"
if x = 5:
    print("gleich")
zahl = 5
zahl.append(3)
for i range(5):
    print(i)
liste = [1, 2, 3]
print(liste[5])
name = "Anna
print(name)
Mittel
Ein Schüler wollte den Notendurchschnitt berechnen, hat sich aber bei der Eingabe vertippt. Führe den Code aus und lies dir die echte Fehlermeldung durch — klassifiziere danach die Fehlerart.
Anspruchsvoll
Dieser Code enthält drei Fehler — einen Syntaxfehler und zwei Semantikfehler. Behebe alle drei, sodass am Ende Endpreis: 45.5 ausgegeben wird.
preis = 50
rabatt = 4.5

if preis > rabatt:
    endpreis = preis - rabatt
    print("Endpreis:", endpreis)
💡Die zwei Semantikfehler (Vergleich und Subtraktion mit einem String) haben dieselbe Ursache: preis ist als Text statt als Zahl definiert. Ein einziger falscher Datentyp kann sich an mehreren Stellen im Code als Fehler zeigen.
Thema 02

Variablen — kurz aufgefrischt

Nur eine schnelle Reaktivierung, kein neuer Stoff — danach geht's direkt weiter.

Zwei Werte tauschen — warum das nicht so einfach ist

Zwei Schüler stehen jeweils auf ihrem eigenen Stuhl und wollen die Plätze tauschen — ohne den Boden zu berühren. Auf jedem Stuhl ist nur Platz für einen Schüler. Keiner kann sich bewegen, ohne dass kurzzeitig zwei Schüler auf einem Stuhl stehen müssten — mit nur zwei Stühlen geht das schlicht nicht.

Die Lösung: ein dritter, freier Stuhl. Der erste Schüler steigt auf den dritten Stuhl. Jetzt ist sein ursprünglicher Stuhl frei, also steigt der zweite Schüler dorthin. Jetzt ist der andere Stuhl frei, also steigt der erste Schüler vom dritten Stuhl auf diesen. Fertig getauscht — mit Hilfe des dritten Stuhls. Genau dieses Problem gibt es auch bei Variablen — deshalb braucht man eine Hilfsvariable, quasi den dritten Stuhl.

Fertiges Beispiel — Tausch mit Hilfsvariable
Leicht
Vertausche die Werte von a und b mit Hilfe einer Hilfsvariablen, sodass am Ende a den Wert 7 und b den Wert 3 hat.
a = 3
b = 7

hilf = a
a = b
b = hilf

print(a)
print(b)
Fertiges Beispiel — die elegante Python-Variante
💡Python kann mehrere Werte gleichzeitig zuweisen — dadurch entsteht kein Moment, in dem ein Wert verloren geht. Man braucht gar keinen "dritten Stuhl" mehr.
Mittel
Erhöhe kontostand zweimal hintereinander um zinsen, ohne den Wert von zinsen zu verändern. Ausgabe am Ende: 110
kontostand = 100
zinsen = 5

kontostand = kontostand + zinsen
kontostand = kontostand + zinsen
print(kontostand)
Thema 03

Datentypen — im Überblick

Vier Datentypen kennt ihr schon: Integer, Float, String, Boolean. Jeder speichert genau einen Wert — das sind einfache Datentypen. Heute kommt ein fünfter dazu, der anders funktioniert.

int
Ganze Zahl
jahr = 2026
float
Kommazahl
preis = 4.5
str
Text
stadt = "Bautzen"
bool
Wahrheitswert
aktiv = True
listzusammengesetzt

Eine Liste speichert nicht einen, sondern mehrere Werte, organisiert in einer festen Reihenfolge — deshalb zusammengesetzter Datentyp. In anderen Sprachen heißt das Konzept dahinter oft Array bzw. Reihung; in Python heißt es konkret list.

💡Boolean vertiefen wir erst in Block 2, zusammen mit Bedingungen — dort spielt er die Hauptrolle. Hier reicht die kurze Erinnerung.
Leicht
Fülle die Lücken. Wandle eingabe in eine Zahl um, um damit zu rechnen, und wandle alter in einen Text um, um ihn mit Text zu verketten.
eingabe = "23"
alter = 15

zahl = int(eingabe)
print(zahl + 10)

text = "Ich bin " + str(alter) + " Jahre alt"
print(text)
💡Ohne die Umwandlung in Schritt 2 würde "Ich bin " + alter einen TypeError verursachen — Text und Zahl lassen sich nicht direkt verketten, genau wie zu Beginn dieses Blocks besprochen.
Thema 04

Zahlen — mehr als Grundrechenarten

Die Rechenoperatoren kennt ihr aus Klasse 8. Heute kommen zwei neue Werkzeuge dazu: die Quadratwurzel und der Zufall.

Bekannte Operatoren — kurz erinnert

OperatorBedeutungBeispiel
+Additionpreis + versand
Subtraktionpreis - rabatt
*Multiplikationpreis * menge
/Divisiongesamt / anzahl
//Ganzzahldivision17 // 53
%Rest der Division17 % 52
**Potenz2 ** 38

Die vier Grundrechenarten reichen nicht für jede Rechnung. Um zum Beispiel bei einer quadratischen Gleichung die Lösung zu finden, braucht man die Quadratwurzel.

Fertiges Beispiel — Quadratwurzel
💡math ist eine Bibliothek — eine Sammlung fertiger Werkzeuge, die man mit import dazuholt, statt sie selbst zu schreiben.

Bisher hat unser Code bei gleichen Eingaben immer dasselbe Ergebnis geliefert. Für Würfelspiele, Zufallsauswahl oder Simulationen braucht man aber echten Zufall.

Fertiges Beispiel — Zufallszahl
Anspruchsvoll
Löse die quadratische Gleichung x² − 3x + 2 = 0 mit der Mitternachtsformel: x = (−b ± √(b²−4ac)) / (2a). Nutze math.sqrt() für die Wurzel. Ausgabe: x1 = 2.0 und x2 = 1.0
import math

a = 1
b = -3
c = 2

diskriminante = b**2 - 4*a*c
wurzel = math.sqrt(diskriminante)

x1 = (-b + wurzel) / (2*a)
x2 = (-b - wurzel) / (2*a)

print("x1 =", x1)
print("x2 =", x2)
Thema 05

Listen — mehr Werkzeuge

append(), remove(), pop() und len() kennt ihr aus Klasse 8 schon. Hier kommen neue Werkzeuge dazu.

Fertiges Beispiel — Auffrischung
💡append() fügt einen Wert immer nur am Ende hinzu. Aber was, wenn ein neuer Wert mitten in die Liste soll — zum Beispiel weil er dort thematisch hingehört?
Fertiges Beispiel — insert()
💡insert(position, wert) fügt einen Wert an einer bestimmten Stelle ein — nicht nur am Ende wie append().
💡Eine Liste kommt oft in zufälliger Reihenfolge herein, etwa eingegebene Testergebnisse. Damit man sie sinnvoll auswerten kann, muss sie sortiert werden.
Fertiges Beispiel — sort()
💡sort() sortiert die Liste selbst (nicht nur die Ausgabe). reverse=True dreht die Richtung um.
💡Manchmal will man das letzte oder vorletzte Element einer Liste — aber man kennt nicht immer die genaue Länge, um den passenden Index auszurechnen.
Fertiges Beispiel — negativer Index
💡Ein negativer Index zählt vom Ende der Liste rückwärts — praktisch, wenn man "das letzte" oder "das vorletzte" Element braucht, ohne die Länge der Liste zu kennen.
💡Oft braucht man nicht die ganze Liste, sondern nur einen Teil davon — zum Beispiel nur die letzten drei Werte oder nur den Anfang. Dafür gibt es Slicing.
Fertiges Beispiel — Slicing
💡liste[start:ende] — der Startindex gehört dazu, der Endindex nicht. Lässt man eine Seite weg, bedeutet das "bis zum Anfang" bzw. "bis zum Ende".
Mittel
Gegeben ist eine Liste von Wartezeiten (in Minuten). Gib mit Slicing die letzten drei Werte aus, und danach die Liste absteigend sortiert.
wartezeiten = [12, 4, 9, 21, 3, 15]

print(wartezeiten[-3:])
wartezeiten.sort(reverse=True)
print(wartezeiten)
Thema 06

Strings — wie kleine Listen

Ein String ist im Kern eine Liste von Zeichen — Index, Slicing und Länge funktionieren genauso, wie ihr's gerade bei Listen gelernt habt.

Auch bei Texten braucht man oft nicht das ganze Wort, sondern nur einen Ausschnitt — zum Beispiel nur den ersten Buchstaben oder eine bestimmte Länge.

Fertiges Beispiel
💡ord() und chr() brauchen wir später noch einmal genauer — heute reicht, dass jedes Zeichen eine feste Zahl im Hintergrund hat.
Leicht
Gib vom Wort "Sachsen" das erste Zeichen, das letzte Zeichen und die Länge aus.
wort = "Sachsen"

print(wort[0])
print(wort[-1])
print(len(wort))
Quiz

Teste dein Wissen

Sechs Fragen zu allem, was in diesem Block dran war.

Frage 1 / 6
Der Code if x > 5 (ohne Doppelpunkt) verursacht welche Fehlerart?
Frage 2 / 6
Welcher Datentyp ist zusammengesetzt, im Gegensatz zu den anderen dreien?
Frage 3 / 6
Was liefert math.sqrt(49)?
Frage 4 / 6
Was gibt [10, 20, 30, 40][1:3] zurück?
Frage 5 / 6
Was gibt "Bautzen"[-1] zurück?
Frage 6 / 6
zahl = 5 und danach zahl.append(3) — welche Fehlerart, und warum?
0/6
Reflexion

Zum Nachdenken

„Bevor man einen Fehler behebt, muss man erst wissen, welche Art von Fehler man überhaupt vor sich hat."

Diskutiert in der Klasse: Warum könnte es einem beim Debuggen helfen, zuerst zu fragen "Syntax oder Semantik?", statt sofort loszuraten? Fällt euch ein Beispiel ein, bei dem ihr selbst einen dieser beiden Fehler gemacht habt?