In diesem Blog lernst Du die grundlegenden Rechenoperationen in Python kennen.
Inhaltsverzeichnis
Dieser Blog wird vom IAIP gratis zur Verfügung gestellt. Der Blog ist ein Bestandteil des Kurses K103 «Programmieren mit Turtle Graphics» und gehört zur Lektion 4, Themenblock 1 (L4T1).
Der Kurs führt dich durch die einzelnen Blogs, enthält Zusatzmaterialien, Videos, viele Aufgaben mit Lösungen und Quizze zur Lernkontrolle. Der Kurs hat eine Kursgebühr von CHF 50.- Mit dem Einschreiben zum Kurs hilfst du mit, dass solche Blogs auch zukünftig noch gratis zur Verfügung gestellt werden können.
- Im Blog hat es ergänzende Hinweise für Kursteilnehmer, jeweils in roter Farbe:
- Aufgaben zum Einüben und zur Veranschaulichung des Gesagten.
- Zusatzmaterialien zur Lektion oder zum Themenblock (in der Regel für jüngere Kursteilnehmer)
Rechenoperationen
Um das zu schaffen, was gewisse Computer in einer einzelnen Sekunde schaffen, müsste jeder einzelne Mensch gleichzeitig rund 200 Zahlen addieren. Denn es gibt Computer, welche in einer Sekunde über 1’000’000’000’000 (1 Billion) Zahlen zusammenzählen.
Kurzum: Computer sind Rechenmaschinen. Sie können unglaublich schnell rechnen. Und damit wollen wir uns nun beschäftigen.
Rechnen beginnt bei den vier Grundrechenarten der Mathematik (Addition, Subtraktion, Multiplikation, Division). Nachfolgend findest du eine tabellarische Übersicht der Operatoren für die Grundrechenarten der Mathematik Diese bilden gewissermassen die Basis für das Rechnen mit Python.
Die Nomenklatur, also die verwendeten Symbole, sind etwas anders wie in der Mathematik üblich. Man hat sich aber schnell daran gewöhnt – und sie sind in allen berühmteren Programmiersprachen gleich.
Merke dir:
das «Mal» – Zeichen ist ein * und das «Geteilt durch» – Zeichen ist ein /
Symbol | Beschreibung | Beispiel | Mathe |
+ | Addition (Plus-Rechnen) | 3 + 4 = 7 | 3 + 4 = 7 |
– | Subtraktion (Minus-Rechnen) | 10 – 2 = 8 | 10 – 2 = 8 |
* | Multiplikation (Mal-Rechnen) | 10 * 2 = 20 | 10 · 2 = 20 |
/ | Division (Geteilt durch-Rechnen) | 8 / 2 = 4 | 8 : 2 = 4 |
from turtle import * forward(50 + 70) # geht 120 geradeaus left(360/4) # dreht um 90 Grad nach links forward(2*50) # geht 100 geradeaus # .....
Hinweis für Fortgeschrittene:
Daneben gibt es noch einige weitere Operatoren:
Symbol | Beschreibung | Beispiel | Mathe |
% | Modulo (Rest einer Division) | 9 % 2 = 1 | 9 : 2 = 4 Rest 1 |
// | Ganzzahl einer Division (Pendent zu Modulo) | 9 // 2 = 4 | siehe % |
** | Potenzrechnen (Hochrechnen) | 2 ** 3 = 8 | 23 = 8 |
Aneinandereihen von Operatoren
Man kann natürlich auch mehrere Operationen hintereinander ausführen. Es gelten dieselben Regeln wie sonst in der Mathematik. Insbesondere gilt die «Punkt vor Strich Regel», d.h. sofern keine Klammern gesetzt sind, haben Multiplikationen und Divisionen immer den Vorrang vor Additionen und Subtraktionen.
from turtle import * forward(2*50 + 70) # geht 170 geradeaus forward(2*(50+70)) # geht 240 geradeaus # .....
Im Zweifelsfall empfiehlt es sich aber, lieber einmal eine Klammer zu viel zu setzen. Klammern setzten ist nämlich kein Problem in Python.
Hinweis für Fortgeschrittene:
In Python sind die einzelnen Operatoren wie üblich sog. linksassoziative Operatoren. D.h. bei Aneinanderreihung desselben Operators wird von links nach rechts ausgewertet.
- 3 · 4 · 5 wird berechnet als (3 · 4) · 5
- 10 – 3 – 2 wird berechnet als: (10 – 3) – 2
Der Potenzoperator ist ein rechtsassoziativer Operator. Hier wird der Ausdruck von rechts nach links ausgewertet. Das ist aber nicht aussergewöhnlich. In der Mathematik ist die Rechtsassoziativität bei der Potenzierung üblich.
Ergänzende Funktionen
Mit den gezeigten Operatoren lassen sich die Grundrechenarten der Mathematik ausführen. Manchmal braucht es aber noch ein bisschen mehr. Deshalb enthält Python schon in der Standardversion eine Reihe ergänzender mathematischer Funktionen.
Besonders hervorzuheben sind:
Funktion | Beschreibung |
abs() | absoluter Betrag (d.h. Komma fällt weg) |
max() | grösster Wert aus einer Liste von Werten |
min() | kleinster Wert aus einer Liste von Werten |
round() | Runden einer Zahl auf eine bestimmte Anzahl Stellen |
int() | Umwandeln einer Kommazahl in eine Ganzzahl |
Um auszutesten, wie die Funktionen gehen, kann man die einzelnen Anweisungen auch einfach in der Shell eingeben. Die Shell führt Python Anweisungen aus und ist in diesem Sinne auch gleich ein kleiner Taschenrechner.

Bei der Funktion round() benötigt man einen ergänzenden Parameter, welcher die Anzahl Kommastellen angibt, auf welche die Zahl gerundet werden soll. Der Befehl round(Zahl, 3) rundet somit die Zahl auf 3 Kommastellen. Lässt man diesen Parameter weg, dann rundet die Funktion einfach automatisch auf 0 Stellen.
Hinweis für Fortgeschrittene:
Eine Alternative zum Herstellen einer Ganzzahl bietet die Funktion int(). Diese Funktion rundet streng genommen nicht, sondern wandelt die Kommazahl (Gleitkommazahl vom Datentyp float) in eine Ganzzahl (Datentyp int) um. Die Funktion round() hat die Aufgabe zu runden. Ihre Aufgabe ist es nicht, etwas umzuwandeln. Sie liefert in jedem Fall wieder eine (Gleit-) Kommazahl, selbst wenn man auf 0 Kommastellen runden soll. Ersichtlich ist dies in obiger Ausgabe (3.45 auf 0 Stellen gerundet ergibt 3.0). Im Unterschied hierzu wandelt die Funktion int() eine Kommazahl zur Ganzzahl um. Sie kümmert sich nicht um Rundungsregeln, sondern schneidet einfach alles hinter dem Komma ab.
Sind zwei mögliche Rundungsergebnisse gleich weit entfernt, so rundet die Funktion round() von Null weg.
- round(2.5) ergibt 3.0
Die Werte 3 und 2 sind je 0.5 von 2.5 entfernt. - round(2.4) ergibt 2.0
Der Wert 2 ist nur 0.4 entfernt, gegenüber 0.6 für 3. - round(-1.5) ergibt -2.0
Die Werte -2 und -1 sind je 0.5 von -1.5 entfernt. - round(-1.4) ergibt -1.0
Der Wert -1 ist nur 0.4 entfernt, gegenüber 0.6 für -2.
Mathematikbibliotheken
Python stellte darüber hinaus eine Menge an Standardbibliotheken zur Verfügung, welche nützliche Funktionen enthalten. Rund um das Thema «Rechnen mit Python» zählen dazu vor allem:
- Modul math
- Modul statistics
- Modul random
Eine Vorstellung dieser Bibliotheken sprengt den Rahmen des Kurses. Du findest die Bibliotheken bei Bedarf dokumentiert unter:
- math: https://docs.python.org/3/library/math.html
- statistics: https://docs.python.org/3/library/statistics.html
- random: https://docs.python.org/3/library/random.html
Damit du die Befehle dieser Standardbibliotheken dann auch nutzen kannst, muss man die Bibliotheken am Anfang des Programms importieren. Genau so, wie wir auch die Befehle von Turtle Graphics importiert haben. Hierzu ein kleines Beispiel:
from turtle import * from random import * forward(randint(100,200)) exitonclick()
In Zeile 2 wird die Bibliothek mit dem Namen random importiert. Diese Bibliothek enthält Anweisungen zum Erzeugen einer Zufallszahl. Eine dieser Anweisungen ist randint(). Sie hat folgende Syntax.
random.randint(a, b)
from turtle import * import random forward(random.randint(100,200)) exitonclick()
Diese leicht veränderte Importanweisung führt dann dazu, dass wir der Anweisung randint() jeweils noch den Namen der Bibliothek voranhängen müssen. Siehe Zeile 4 im Programm.
Hinweis für Fortgeschrittene:
Nachfolgend die wichtigsten Funktionen und Konstanten in der Übersicht.
Trigonometrie (Bibliothek: math)
pi | Konstante | pi | 3.1415926 |
sin() | Sinus | sin(pi/2) | 1.0 |
cos() | Cosinus | cos(pi/2) | 0 |
tan() | Tangens | tan(pi) | 0 |
asin() | Arkussinus (Umkehrfunktion sin) | asin(1) | 1.57079.. |
acos() | Arkuscosinus (Umkehrfunktion cos) | acos(0) | 1.57079… |
atan() | Arkustangens (Umkehrfunktion tan) | atan(0) | 0 |
radians() | Umwandlung von Grad in Bogenmass (Radian) | radians(60) | 1.04719755.. |
degrees() | Umwandlung vom Bogenmass in Grad | degrees(0.785) | 44.97718.. |
Achtung: Winkelangaben sind hier jeweils im Bogenmass. Zur Berechnung von sin(60°) nimmt man sin(radians(60))
Exponential und Logarithmusfunktionen (Bibliothek: math)
e | Eulersche Zahl (Konstante) | e | 2.71828.. |
exp() | Exponentialfunktion ex | exp(2) | 7.389… |
log() | Logarithmus | log(7.4) | 2.00148.. |
pow() | Hochrechnen (Power) | pow(2,3) | 8 |
log10() | Logarithmus zur Basis 10 | log10(100) | 2 |
sqrt() | Wurzel | sqrt(16) | 4 |
Lage- & Streuungsparameter (Bibliothek: statistics)
mean() | Berechnung des (arith.) Mittelwerts | mean([2,2,4,9]) | 4.25 |
median() | Berechnung des Medians | median([2,2,4,9]) | 3 |
mode() | Berechnen des Modus | mode([2,2,4,9]) | 2 |
stdev() | Ermitteln der Standardabweichung | stdev([2,2,4,9]) | 3.3040.. |
variance() | Ermitteln der Varianz | variance([2,2,4,9]) | 10.9166… |
Generierung von Zufallszahlen (Bibliothek: random)
randint(a, b) | Zufallszahl a <= Zahl <= b als Ganzzahl (*) randint(3,40) -> 13 (Ganzzahl zwischen 3 bis und mit 40 ) |
randrange(a, b, s) | Zufallszahl a <= Zahl < b mit Schritt s als Ganzzahl randrange(0, 101, 2) -> 26 (Gerade Ganzzahl zwischen 0 bis und mit 100) |
random() | Zufallszahl 0 <= Zahl < 1 als Gleitkommazahl random() -> 3.18001… (Gleitkommazahl zwischen 0 und 1, aber ohne 1. |
uniform(a, b) | Zufallszahl a <= Zahl <= b als Gleitkommazahl (*) uniform(2.5, 10.0) -> 3.18001… (Gleitkomazahl zwischen 0 und 20) |
(*) Beinhaltet obere Grenze
Zufällige Auswahl bei Listen (Bibliothek: random)
choice(Liste) | Einzelnes Element aus einer List |
sample(Liste, Anzahl) | Mehrere Element aus einer List (ohne Replacement) |
shuffle(Liste) | Elemente der Liste mischen |
Beispiele:
Liste = [«BMW», «Audi», «Volvo», ”Porsche”, “Ferrari”, “Renault”]
choice(Liste) BMW
sample(Liste,2) Volvo, Audi
shuffle (Liste) [«Volvo», “Renault”, “Ferrari”, «BMW», «Audi», ”Porsche”]
Initialisierung des Generators (Seed)
seed(a) | Initialisieren mit Zahl a |