edubun
Deutsch

Zahlen und Rechnen

In Python 3 ergibt 7 / 2 den Wert 3.5, 7 // 2 ergibt 3 und 7 % 2 ergibt den Rest 1.

Vier Divisionen zum Vorhersagen, bevor du weiterliest

Decke die Ausgabe unten ab und schreibe auf, was jede Zeile deiner Erwartung nach ausgibt. Die meisten haben die erste richtig und mindestens eine der anderen falsch, und dieser falsche Tipp ist der Ausgangspunkt dieser Einheit.

print(7 / 2)
print(8 / 2)
print(7 // 2)
print(7 % 2)
Ausgabe
3.5
4.0
3
1

Die zweite Zeile überrascht. 8 / 2 ist genau 4, doch Python gibt 4.0 aus. Der Grund ist, dass / immer einen float ergibt, eine Zahl mit Dezimalpunkt, auch wenn die Division aufgeht. Willst du eine Division mit ganzer Zahl, hat Python einen eigenen Operator, //, die ganzzahlige Division. Sie teilt und rundet dann auf die ganze Zahl darunter ab. Der Partner-Operator % gibt den Rest, der übrig bleibt. Zusammen beantworten sie die Grundschulfrage „7 geteilt durch 2 ist 3, Rest 1“.

Drei Sprünge von 2 passen in 7, 1 bleibt übrig: 7 // 2 ist die Zahl der Sprünge, 7 % 2 ist der Rest.

% taucht an mehr Stellen auf, als du erwartest. Eine Zahl ist gerade, wenn n % 2 gleich 0 ist. Die letzte Ziffer einer Zahl ist n % 10. 135 Minuten in Stunden und Minuten umzurechnen ist 135 // 60 Stunden und 135 % 60 Minuten.

minutes = 135
print(minutes // 60, "h", minutes % 60, "min")
print(2026 % 2, 2027 % 2)
print(4589 % 10)
Ausgabe
2 h 15 min
0 1
9

Die anderen Operatoren und die Reihenfolge, die Python nutzt

OperatorBedeutungBeispielErgebnis
+addieren7 + 29
-subtrahieren7 - 25
*multiplizieren7 * 214
/dividieren (float)7 / 23.5
//ganzzahlige Division7 // 23
%Rest7 % 21
**Potenz7 ** 249

Python folgt derselben Reihenfolge wie der Matheunterricht: zuerst **, dann *, /, // und %, dann + und -, innerhalb jeder Gruppe von links nach rechts. Klammern gehen allem vor, setze sie im Zweifel also. Sie kosten nichts und machen die Absicht für die nächste Leserin klar.

print(2 + 3 * 4)
print((2 + 3) * 4)
print(2 ** 10)
print(10_000 * 3)
Ausgabe
14
20
1024
30000

Die letzte Zeile zeigt eine kleine Hilfe: Python erlaubt Unterstriche in langen Zahlen, 10_000 ist also leichter zu lesen als 10000. Sie werden beim Berechnen ignoriert und erscheinen nicht in der Ausgabe. Kommas lassen sich so nicht nutzen, weil ein Komma schon „nächster Wert“ bedeutet.

Dezimalzahlen werden binär gespeichert, deshalb weichen manche Antworten minimal ab

Probiere 0.1 + 0.2. Das Python-Tutorial widmet ein ganzes Kapitel der Frage, warum die Antwort 0.30000000000000004 statt 0.3 lautet. Floats werden binär gespeichert, und 0.1 hat keine genaue Binärform, so wie 1/3 keine genaue Dezimalform hat. Der Fehler ist winzig, und round() verbirgt ihn beim Ausgeben. Beachte, dass round() einen Wert genau in der Mitte zum geraden Nachbarn rundet: Die Seite zu den eingebauten Funktionen nennt round(0.5) als 0 und round(1.5) als 2. Für Geld in ganzen Won oder ganzen Cent halte Beträge als int und vermeide das Problem ganz.

print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))
print(round(0.5), round(1.5), round(2.5))
print(int(3.99), float(7))
Ausgabe
0.30000000000000004
0.3
0 2 2
3 7.0

input() gibt dir immer einen String

input() zeigt eine Eingabeaufforderung, wartet, bis der Nutzer etwas tippt und Enter drückt, und gibt das Getippte als String zurück. Auch wenn jemand 15 tippt, erhältst du "15", Text. Um damit zu rechnen, wandle ihn mit int() oder float() um. int() schneidet bei einem float den Nachkommaanteil ab, statt zu runden, int(3.99) ist also 3.

age = input("How old are you? ")
next_year = int(age) + 1
print("Next year you will be", next_year)
Ausgabe
How old are you? 14
Next year you will be 15
Im Beispiel oben ist 14 das, was der Nutzer getippt hat. Das Programm selbst enthält die Zahl 14 nicht.
/Division, die immer einen float ergibt: 8 / 2 ist 4.0
//Ganzzahlige Division: 7 // 2 ist 3
%Rest: 7 % 2 ist 1
**Potenz: 2 ** 3 ist 8
int()Macht aus "15" oder 3.9 eine ganze Zahl (15, 3)
input()Liest eine vom Nutzer getippte Zeile als String
round(x, n)Rundet auf n Dezimalstellen; bei exakter Mitte wird zur geraden Nachbarzahl gerundet
  1. Was gibt das aus?
    print(9 / 3)
  2. Was gibt das aus?
    print(17 // 5, 17 % 5)
  3. Was gibt das aus?
    print(2 + 3 * 4 ** 2)
  4. Was gibt das aus?
    print(2 ** 3)
  5. Was gibt das aus?
    print(2 ^ 3)
    • 8
    • 6
    • 1
    • Ein Fehler
  6. Was gibt das aus?
    print(int("20") + 5)
  7. Was gibt das aus?
    print("20" + "5")
  8. Was gibt das aus?
    print(int(7.9))
  9. Was gibt das aus?
    print(round(2.5))
  10. Ein Brötchen kostet 3500 Won, und du hast 10 000 Won. Was gibt das aus?
    won = 10000
    price = 3500
    print(won // price, won % price)
  11. Welcher Ausdruck sagt dir, ob n gerade ist?
    • n / 2 == 0
    • n // 2 == 0
    • n % 2 == 0
    • n ** 2 == 0
Häufige Fehler
  • „2 ^ 3 ist 8.“ In Python ist ^ ein bitweiser Operator, und 2 ^ 3 ist 1. Potenzen nutzen **, also ist 2 ** 3 gleich 8. Das Programm läuft ohne Fehler, was diesen Irrtum schwer erkennbar macht.
  • „input() gibt mir eine Zahl, wenn ich eine Zahl tippe.“ Es gibt immer einen String. "14" + 1 bricht mit TypeError: can only concatenate str (not "int") to str ab. Wandle zuerst mit int(input(...)) um.
  • „0.1 + 0.2 == 0.3 ist True.“ Es ist False, weil 0.1 + 0.2 gleich 0.30000000000000004 ist. Vergleiche gerundete Werte, etwa round(0.1 + 0.2, 2) == 0.3, oder zähle in ganzen Einheiten (Won, Cent) mit int.
Hinweis für LehrkräfteBeginne mit der Vorhersageübung und lass die Überraschung mit 4.0 wirken. Lernende, die die Division mit Rest aus der Grundschule kennen, verstehen // und % schnell, wenn sie so benannt werden. Der Rundungsfehler bei floats ist es wert, einmal gezeigt zu werden, ohne darauf zu verweilen; die wichtige Gewohnheit ist, Geld als ganze Zahlen zu halten. Dass round(2.5) den Wert 2 ergibt, widerspricht dem im Matheunterricht gelehrten Runden, rechne also mit einer Frage und verweise auf die Dokumentation der eingebauten Funktionen, statt zu streiten. Der Umwandlungsfehler bei input() ist der, auf den Lernende in ihren ersten Projekten am häufigsten stoßen.
Das Wichtigste
  • / ergibt immer einen float; // ergibt den ganzzahligen Quotienten; % ergibt den Rest.
  • ** ist die Potenz; ^ nicht.
  • Reihenfolge: Klammern, **, dann * / // %, dann + -.
  • 0.1 + 0.2 ist 0.30000000000000004; halte Geld als int.
  • input() gibt einen String zurück; wandle mit int() oder float() um.
Quellen zu diesem Kurs (6)
  • Python Software Foundation, The Python Tutorial for Python 3.12 (docs.python.org/3.12/tutorial: 2 Using the Python Interpreter, 3 An Informal Introduction to Python (numbers, text, lists), 4 More Control Flow Tools (if, for, range, break and continue, defining functions, default argument values, 4.10 coding style: 4-space indentation), 5 Data Structures (list methods, 5.5 dictionaries, insertion order), 8 Errors and Exceptions (syntax errors, exceptions, reading the traceback, handling exceptions), 15 Floating-Point Arithmetic (0.1 + 0.2))
  • Built-in Functions (docs.python.org/3.12/library/functions.html: print, input, len, int, float, str, type, round (round half to even: round(0.5) and round(-0.5) are 0, round(1.5) is 2), range, sum, min, max, sorted)
  • Built-in Types (str methods upper, lower, replace, strip; dict.get; list.append, pop, remove, sort returning None)
  • General Python FAQ (docs.python.org/3.12/faq/general.html: Guido van Rossum began Python in the 1989 Christmas holidays, posted it to USENET in February 1991, named it after Monty Python's Flying Circus)
  • Curriculum for the Korean pages: 교육부 고시 제2022-33호 [별책 10] 정보과 교육과정 (PDF read 2026-10-19: 중학교 정보 [9정03-05] 리스트 등 데이터를 순차적으로 저장하는 구조, [9정03-06] 논리 연산과 중첩 제어 구조, [9정03-07] 함수 활용과 디버거로 오류 수정, [9정03-08] 실생활 문제를 프로그래밍으로 해결, 적용 시 고려 사항 「학생의 수준을 고려하여 적합한 프로그래밍 언어를 선정」; 고등학교 정보 [12정03-04] 자료형, [12정03-05] 표준입출력, [12정03-07] 제어 구조)
  • Bug story only: Smithsonian National Museum of American History, Log Book With Computer Bug, 1947, Harvard Mark II, "first actual case of bug being found", probably not Hopper's log book (americanhistory.si.edu/collections/object/nmah_334663, read 2026-10-19)

Abgerufen: 2026-10-19