Ü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.

X

Fehler melden

X

Suche