Wiederholung von Berechnungen
Bisherige Vorgehensweise
Die wiederholte Berechnung von Populationswerte erfolgte bisher, indem die zentrale Berechnungsformel (in geeigneter Form als Anweisung dargestellt) wiederholt im Quelltext aufgeführt wurde.
def popKa5Schritte(anzKa, zKa):
neueAnzKa = anzKa
neueAnzKa = neueAnzKa + zKa*neueAnzKa
neueAnzKa = neueAnzKa + zKa*neueAnzKa
neueAnzKa = neueAnzKa + zKa*neueAnzKa
neueAnzKa = neueAnzKa + zKa*neueAnzKa
neueAnzKa = neueAnzKa + zKa*neueAnzKa
return neueAnzKa
Eleganter geht das mit einer Wiederholungsanweisung.
def popKa5Schritte(anzKa, zKa):
schritte = 5
zaehler = 0
neueAnzKa = anzKa
while zaehler < schritte:
neueAnzKa = neueAnzKa + zKa*neueAnzKa
zaehler = zaehler + 1
return neueAnzKa
Aufgabe 1
(a) Verfolge erst einmal, wie die Funktionsdefinition hier ausgeführt wird.
Kannst du alle Ausführungsschritte erklären? Mehr über Wiederholungsanweisungen erfährst du im Abschnitt Wiederholungen.
(b) Ändere die Funktionsdefinition so ab, dass eine Kaninchen-Fuchs-Population simuliert wird.
def popKaFu5Schritte(anzKa, anzFu, zKa, aFu):
...
return (anzKa5, anzFu5)
(c) Wenn man auch an Zwischenwerten interessiert ist, dann kann man sich diese auf dem Bildschirm ausgeben lassen.
Teste hierzu folgende Funktionsdefinition mit integrierten print
-Anweisungen.
def popKa5Schritte(anzKa, zKa):
schritte = 5
zaehler = 0
neueAnzKa = anzKa
print(zaehler, neueAnzKa)
while zaehler < schritte:
neueAnzKa = neueAnzKa + zKa*neueAnzKa
zaehler = zaehler + 1
print(zaehler, neueAnzKa)
return neueAnzKa
Beachte: Solche in Funktionsdefinitionen integrierte print
-Anweisungen liefern durchaus nützliche Zwischenwerte,
gelten aber als eher unelegant, da sie Seiteneffekte auf dem Bildschirm erzeugen. In den weiteren Abschnitten werden wir auf
diese Problematik noch genauer eingehen.
(d) Flexibler wird die Funktion zur Populationsentwicklung, wenn man die Anzahl der Schritte ebenfalls zur Verarbeitung übergeben kann.
Ändere die Funktionsdefinition passed ab. Passe auch die Funktion zur Simulation der gemeinsamen Kaninchen-Fuchs-Population entsprechend an.
(e) Mit der vordefinierten round
-Funktion lassen sich die etwas merkwürdigen Daten zur Anzahl von
Kaninchen und Füchsen vermeiden.
>>> round(1469.3280768)
1469
Benutze diese Funktion zur Verbesserung der Simulationen.