Übungen
Aufgabe 1: Funktionsdefinitionen analysieren
(a) Gegeben ist die folgende Funktionsdefinition. Was leistet die Funktion r
?
Versuche zunächst, das Verhalten der Funktion herauszufinden, indem du die Anweisungen
für verschiedene Übergabewerte selbst durchspielst. Formuliere eine Vermutung.
Teste anschließend deine Vermutung, indem du Funktionsaufrufe von Python auswerten lässt.
def r(a, b):
while a >= b:
a = a - b
return a
(b) Gegeben ist die folgende Funktionsdefinition. Was leistet die Funktion d
?
Versuche zunächst, das Verhalten der Funktion herauszufinden, indem du die Anweisungen
für verschiedene Übergabewerte selbst durchspielst. Formuliere eine Vermutung.
Teste anschließend deine Vermutung, indem du Funktionsaufrufe von Python auswerten lässt.
def d(a, b):
z = 0
while a >= b:
a = a - b
z = z + 1
return z
(c) Gegeben ist die folgende Funktionsdefinition. Was leistet die Funktion g
?
Versuche zunächst, das Verhalten der Funktion herauszufinden, indem du die Anweisungen
für verschiedene Übergabewerte selbst durchspielst. Formuliere eine Vermutung.
Teste anschließend deine Vermutung, indem du Funktionsaufrufe von Python auswerten lässt.
def g(a, b):
while b > 0:
h = a % b
a = b
b = h
return a
Aufgabe 2: Typische Fehler bei Wiederholungen
(a) Mit der folgenden Funktion soll ermittelt werden, wie lange es dauert, bis ein Startkapital bei einer vorgegebenen Verzinsung ein Endkapitalwert erreicht hat. Aber, irgend etwas stimmt nicht. Finde und korrigiere den Fehler.
Funktionsdefinition:
def laufzeit(startkapital, zinssatz, endkapital):
kapital = startkapital
while kapital < endkapital:
zinsen = kapital * (zinssatz/100)
kapital = kapital + zinsen
zaehler = zaehler + 1
return zaehler
Funktionsaufruf:
>>> laufzeit(1000, 4, 2000)
...
(b) Mit der folgenden Funktion soll ermittelt werden, wie hoch ein Kapital bei einer
vorgegebenen Verzinsung wächst. Auch hier stimmt etwas nicht. Teste den Funktionsaufruf.
Beachte: Mit [Strg][C]
kannst du die Ausführung beenden.
Korrigiere den Fehler.
Funktionsdefinition:
def neuesKapital(startkapital, zinssatz, jahre):
kapital = startkapital
jahr = 0
while jahr < jahre:
zinsen = kapital * (zinssatz/100)
kapital = kapital + zinsen
return kapital
Funktionsaufruf:
neuesKapital(1000, 5, 20)
...
Aufgabe 3: Statistische Untersuchungen zum Würfeln
In den folgenden Aufgaben geht es um die Simulation von Würfelexperimenten.
Wir benutzen hierzu die Funktion random
aus dem Baustein random
.
Mit dieser Funktion lassen sich wie folgt (Pseudo-) Zufallszahlen erzeugen.
>>> from random import randint
>>> randint(1, 6)
2
>>> randint(1, 6)
6
>>> w = randint(1, 6)
>>> w
1
>>> w = randint(1, 6)
>>> w
6
(a) Was leistet die folgende Funktion? Beschreibe das Verhalten der Funktion in Worten. Kannst du jede Zeile der Funktionsfdefinition erklären?
Funktionsdefinition:
from random import randint
def relHaeufigkeitAugensumme(anzahlWiederholungen, augensumme):
zaehler = 0
anzahlTreffer = 0
while zaehler < anzahlWiederholungen:
w1 = randint(1, 6)
w2 = randint(1, 6)
summe = w1 + w2
if summe == augensumme:
anzahlTreffer = anzahlTreffer + 1
zaehler = zaehler + 1
relHaeufigkeit = anzahlTreffer / anzahlWiederholungen
return relHaeufigkeit
Funktionsaufruf:
>>> relHaeufigkeitAugensumme(100, 2)
0.01
(b) Entwickle analog zu (a) eine Funktion, mit der man folgendes Problem bearbeiten kann: Drei Würfel sollen geworfen werden. Wie oft kommt es durchschnittlich vor, dass die drei Würfel verschiedene Augenzahlen anzeigen.
(c) Vier Würfel werden geworfen. Lohnt es sich, darauf zu wetten, dass keine 6 darunter vorkommt? Entwickle zur Lösung dieses Problems eine geeignete Funktion.
(d) Zwei Würfel werden 24 mal geworfen. Lohnt es sich, darauf zu wetten, dass keine Doppelsechs darunter vorkommt? Entwickle zur Lösung dieses Problems eine geeignete Funktion.
(e) Dir wird folgendes Spiel angeboten: Es werden drei Würfel geworfen. Fällt keine 6, so musst du 1 Euro zahlen. Fällt dagegen mindestens eine 6, so erhältst du so viele Euro, wie du 6en geworfen hast. Ermittle mit einer geeigneten Funktion, ob das Angebot gut ist.
(f) Entwickle analog zu (e) selbst ein Spiel, bei dem gewürfelt wird. Ermittle mit einer geeigneten Funktion, ob das Spiel fair ist.