Zum Hauptinhalt springen

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. bei 8 / 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:

  1. Klammern ( ... ) – innen zuerst
  2. Punktrechnung * / // %
  3. 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

Vorrangregelnoperator precedence

Regeln, welcher Operator zuerst ausgewertet wird.

Klammernparentheses

Runde Klammern () aendern die Reihenfolge: innen zuerst.

Logikfehlerlogic error

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:

  1. Punkt vor Strich → 3 * 4 wird zu 12
  2. Dann 2 + 12 wird zu 14
  3. print zeigt 14

Schritt-für-Schritt für 8 / 2 * 4:

  1. * und / haben gleichen Rang
  2. Links nach rechts: zuerst 8 / 24.0
  3. Dann 4.0 * 416.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:

  1. Finde die Operation mit höchstem Vorrang (oder ganz links bei Gleichstand).
  2. Berechne sie zu einem Zwischenwert.
  3. Wiederhole, bis ein Endergebnis übrig bleibt.
  4. Speichere oder printe dieses Ergebnis.

Du steuerst den Ablauf mit Klammern, wenn die Standardregeln nicht zu deiner Logik passen.

Häufige Irrtümer

IrrtumRichtig
Python rechnet immer streng links nach rechtsNein – Vorrangregeln zuerst
2 + 3 * 4 ist 20Ist 14
Ohne Fehler ist das Ergebnis richtigLogikfehler sind still
Klammern sind nur für FortgeschritteneKlammern 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 // 36, dann 6 % 20.

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

Mini-QuizWas ist 2 + 3 * 4 in Python?
  1. Was kommt zuerst: Klammern oder Plus?
  2. Warum sind Klammern hilfreich, auch wenn sie „unnötig“ wirken?
  3. Was ist 10 - 2 * 3?
Lösungen
  1. Klammern.
  2. Sie machen die gewollte Reihenfolge und die Absicht klar.
  3. 4.

Reihenfolge sitzt! Mini-Projekt: Taschengeld-Rechner – alles zusammen.