Reihenfolge der Rechenoperationen
Warum brauchen wir das?
Schau dir diese eine Zeile an:
print(2 + 3 * 4)
Ist das Ergebnis 20 oder 14?
Viele tippen „von links nach rechts“ und erwarten 20: erst 2+3=5, dann 5*4=20.
Python (und die Mathematik) machen es anders: Punkt vor Strich.
Zuerst 3 * 4 = 12, dann 2 + 12 = 14.
Falsche Reihenfolge ist gefährlich, weil oft kein Fehler erscheint. Das Programm läuft – mit der falschen Zahl. Das sind stille Logikfehler, die Buggy besonders mag.
Definition: Vorrang
Definition – Vorrang (Precedence):
Die Vorrangregeln legen fest, welcher Operator zuerst ausgewertet wird, wenn in einem Ausdruck mehrere Operatoren stehen.
Definition – Assoziativität:
Bei Operatoren gleicher Stufe wertet Python meist von links nach rechts aus (z. B. bei8 / 2 * 4).
Du musst keine ellenlange Tabelle auswendig lernen. Für den Anfang reicht ein klares Stufenmodell – plus die Regel: Im Zweifel Klammern setzen.
Vereinfachte Reihenfolge (Anfänger)
Von zuerst nach später:
- Klammern
( ... )– innen zuerst - Punktrechnung
* / // % - Strichrechnung
+ -
Bei gleicher Stufe: links → rechts.
Später kommen noch potenzieren (**) und Vergleiche dazu. Heute reicht diese
Treppe.
Luna, die magische Klammer und Buggy
Luna schreibt:
print(2 + 3 * 4)
„Das muss 20 sein!“, ruft Buggy. Ausgabe:
14
Lily setzt Klammern:
print((2 + 3) * 4)
20
Py: „Klammern sind wie ein Zauberstab: Zuerst das hier innen erledigen.“
Buggy mault: „Ich wollte doch nur Zeichen sparen …“
Luna: „Lesbarkeit schlägt Sparsamkeit. Immer.“
Neue Wörter
Regeln, welcher Operator zuerst ausgewertet wird.
Runde Klammern () aendern die Reihenfolge: innen zuerst.
Das Programm laeuft, liefert aber das falsche Ergebnis.
Beispiele zum Durchrechnen
print(2 + 3 * 4) # 14 zuerst 3*4
print((2 + 3) * 4) # 20 zuerst Klammer
print(10 - 2 * 3) # 4 zuerst 2*3
print((10 - 2) * 3) # 24
print(8 / 2 * 4) # 16.0 links nach rechts: (8/2)*4
print(8 / (2 * 4)) # 1.0 zuerst Klammer
Schritt-für-Schritt für 2 + 3 * 4:
- Punkt vor Strich →
3 * 4wird zu12 - Dann
2 + 12wird zu14 printzeigt14
Schritt-für-Schritt für 8 / 2 * 4:
*und/haben gleichen Rang- Links nach rechts: zuerst
8 / 2→4.0 - Dann
4.0 * 4→16.0
Praxis: Preise mit Rabatt und Anzahl
preis = 10
rabatt = 2
anzahl = 3
print(preis - rabatt * anzahl) # 10 - 6 = 4
Was wolltest du vielleicht?
- Variante A: Rabatt pro Stück, dann vom Preis? (ungewöhnlich)
- Variante B: erst Rabatt vom Preis, dann mal Anzahl:
print((preis - rabatt) * anzahl) # 8 * 3 = 24
Beide Zeilen sind syntaktisch korrekt. Nur eine entspricht deiner Absicht. Klammern machen die Absicht sichtbar.
gesamt = (preis + versand) * anzahl
Was passiert im Computer?
Python zerlegt den Ausdruck nach festen Regeln – ähnlich wie du in der Schule Klammern und Punkt-vor-Strich anwendest:
- Finde die Operation mit höchstem Vorrang (oder ganz links bei Gleichstand).
- Berechne sie zu einem Zwischenwert.
- Wiederhole, bis ein Endergebnis übrig bleibt.
- Speichere oder printe dieses Ergebnis.
Du steuerst den Ablauf mit Klammern, wenn die Standardregeln nicht zu deiner Logik passen.
Häufige Irrtümer
| Irrtum | Richtig |
|---|---|
| Python rechnet immer streng links nach rechts | Nein – Vorrangregeln zuerst |
2 + 3 * 4 ist 20 | Ist 14 |
| Ohne Fehler ist das Ergebnis richtig | Logikfehler sind still |
| Klammern sind nur für Fortgeschrittene | Klammern sind für Klarheit |
// und % kommen nach + | Nein – sie gehören zur Punkt-Stufe |
Probiere es selbst
Experiment 1 – Zwei Welten
print(1 + 2 * 3 + 4)
print((1 + 2) * (3 + 4))
Rechne beide von Hand, dann starte das Programm.
Experiment 2 – Tickets
3 Tickets à 5 Euro plus 2 Euro Gebühr:
# Variante A – oft falsch gemeint
print(3 * 5 + 2)
# Variante B – Gebuehr pro Ticket?
print(3 * (5 + 2))
Welche meint „erst Ticketpreis plus Gebühr, dann mal Anzahl“?
Experiment 3 – // und % gemischt
print(20 // 3 % 2)
Schritt für Schritt: zuerst 20 // 3 → 6, dann 6 % 2 → 0.
Experiment 4 – Schreibe Absicht in Klammern
grund = 8
versand = 3
menge = 2
gesamt = (grund + versand) * menge
print(gesamt)
Fehlerdetektiv
preis = 10
rabatt = 2
anzahl = 3
print(preis - rabatt * anzahl)
Lösung anzeigen
Punkt vor Strich: zuerst rabatt * anzahl = 6, dann 10 - 6 = 4.
Wenn gemeint war „Rabatt abziehen, dann multiplizieren“:
print((preis - rabatt) * anzahl) # 24
Übungen
Level 1 – Entdecken
Berechne und erkläre: 4 + 6 * 2 und (4 + 6) * 2.
Lösung
print(4 + 6 * 2) # 16 (zuerst 6*2)
print((4 + 6) * 2) # 20 (zuerst Klammer)
Level 2 – Anwenden
Grundpreis 8, Versand 3, Menge 2. Gesamt = (Grund + Versand) × Menge.
Lösung
grund = 8
versand = 3
menge = 2
gesamt = (grund + versand) * menge
print(gesamt) # 22
Level 3 – Erweitern
Lies drei ganze Zahlen a, b, c ein. Gib aus:
a + b * c(a + b) * c
Erkläre den Unterschied in einem Satz.
Lösung
a = int(input("a: "))
b = int(input("b: "))
c = int(input("c: "))
print(a + b * c)
print((a + b) * c)
Mini-Challenge
Erfinde zwei Ausdrücke, die ohne Klammern ein anderes Ergebnis liefern als mit Klammern. Schreibe beide Varianten auf und erkläre.
Merksatz: Punkt vor Strich. Klammern zuerst. Absicht sichtbar machen.
Zusammenfassung
- Python folgt Vorrangregeln, nicht blind „links nach rechts“.
- Punkt (
* / // %) vor Strich (+ -). - Klammern haben höchste Priorität.
- Bei gleicher Stufe: links nach rechts.
- Stille Logikfehler entstehen oft durch falsche Reihenfolge.
- Im Zweifel: Klammern setzen – für dich und für andere Leser.
Mini-Quiz
- Was kommt zuerst: Klammern oder Plus?
- Warum sind Klammern hilfreich, auch wenn sie „unnötig“ wirken?
- Was ist
10 - 2 * 3?
Lösungen
- Klammern.
- Sie machen die gewollte Reihenfolge und die Absicht klar.
4.
Reihenfolge sitzt! Mini-Projekt: Taschengeld-Rechner – alles zusammen.