260
Funktionen mit Wert
Kapitel
1
0
Doch noch kürzer geht es mit dem
%
-Operator, weil der Rest immer kleiner
ist als der Divisor – ja, der Divisor ist die Zahl, durch die dividiert wird:
>>> (2 + 1) % 4
3
>>> (3 + 1) % 4
0
Also tut folgende Funktion genau das Gewünschte:
def nachfolger(spieler, anzahl):
return (spieler + 1) % anzahl
Du kannst das leicht testen:
>>> spielerzahl = 3
>>> for spieler in range(spielerzahl):
print(spieler, nachfolger(spieler, spielerzahl))
0 1
1 2
2 0
Fak!
Apropos Mathe! In diesem Buch werden wir nur noch eine mathematische
Funktion behandeln, deren Werte nicht durch eine einzige einfache Rech-
nung ermittelt werden können. Diese Funktion kommt in (fast) jedem Buch
zur Einführung ins Programmieren vor.
Natürlich lernen wir bei dieser Gelegenheit auch wieder einiges über
Python.
Es gibt eine recht bekannte Geschichte über den berühmten Mathematiker
Carl Friedrich Gauß. Als der neun Jahre alt war, hat sein Klassenlehrer der
Klasse einmal die Aufgabe gestellt, die ersten 100 natürlichen Zahlen zu
addieren. Die Schüler sollten also 1 + 2 + 3 + ... + 97 + 98 + 99 + 100 aus-
rechnen.
Der Lehrer hatte mehrere Jahrgangsstufen gleichzeitig zu unterrichten und
wollte einen Teil der Klasse für einige Zeit beschäftigen. Da damals die
Schüler immer das taten, was die Lehrer verlangten, begannen sie sofort
mit der Arbeit. Aber bereits nach ganz kurzer Zeit zeigte der kleine C. F.
seinem Lehrer, wie damals üblich auf eine Schiefertafel geschrieben, das
richtige Ergebnis.
261
Fak!
Es stellte sich heraus, dass C. F. das richtige Ergebnis mit einer Formel be-
rechnet hatte, die er sich schnell ausgedacht hatte. Das hatte sein Lehrer
nicht erwartet. Er zog daraus den Schluss, dass er selbst ihm in Mathematik
nichts weiter beibringen konnte, und ermöglichte ihm bei einem anderen
Lehrer eine weitergehende mathematische Ausbildung.
Da das beschriebene Problem mit einer Formel lösbar ist, möchte ich hier
kein Programm beschreiben, das die ersten hundert positiven natürlichen
Zahlen Stück für Stück addiert.
Vielleicht willst du aber selbst deine Programmierfertigkeiten auf eine
Probe stellen? Dann schreibe du doch ein solches Programm. Am besten
eine Funktion
summe(n)
, die die Summe der ersten n positiven natürlichen
Zahlen ausrechnet und zurückgibt. Deine Funktion
summe()
sollte
jedenfalls auch C. F.’s Ergebnis liefern:
>>> summe(100)
5050
Wenn dich diese Aufgabe nicht freut oder wenn du sie auf die Schnelle
nicht lösen kannst, so ist das auch nicht weiter schlimm. Durchdenke zu-
nächst die Lösung der folgenden Fragestellung, die ganz ähnlich gelagert
ist. Vielleicht hast du hinterher Lust, die Sache doch noch (einmal) anzuge-
hen.
Aufgabenstellung:
Programmiere eine Funktion, die zu jeder positiven
natürlichen Zahl n das Produkt aller positiven natürlichen Zahlen von 1 bis
n ausgibt.
Diese Aufgabe ist interessanter, weil es keine Formel gibt, die das Ergebnis
sofort liefert.
Zum Beispiel: der Funktionswert für das Argument 12 soll
1
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12 sein. Wie viel das ist?
>>> 1
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
479001600
Diese Funktion hat in der Mathematik einen eigenen Namen, genauer sogar
zwei. Sie heißt
Faktorielle
oder auch
Fakultät
. Die Faktorielle der Zahl n
wird oft so aufgeschrieben: n!
Wir haben also gerade 12! (gesprochen: »12-Faktorielle« oder »12-
Fakultät«) berechnet: 12! = 479001600.
Weil diese Funktion oft gebraucht wird, gibt es für sie sogar eine eigene
Taste auf deinem Taschenrechner. Üblicherweise ist sie mit n! oder mit x!
beschriftet.

Get Python für Kids now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.