Kapitel 6
Funktionen
190
6.15 Aufgaben
Aufgabe 1
Schreiben Sie eine Funktion konkat(), die beliebig viele String-Objekte als Argumente
akzeptiert und die Konkatenation dieser Strings zurückgibt.
Beispielaufrufe:
Aufgabe 2
Steganografie ist die Technik, eine geheime Information in einem Dokument so zu verste-
cken, dass sie nur von einer »eingeweihten« Person gefunden werden kann. Schreiben Sie
eine Funktion mit zwei Argumenten
s und n, die einen Klartext s auf folgende Weise durch
Steganografie unleserlich macht:
Der String s wird in Großbuchstaben umgewandelt.
Hinter jedes Zeichen werden n zufällige Großbuchstaben eingefügt.
Das Argument n ist optional (Default=1).
Beispielaufrufe:
>>> help(tueNichts)
Help on function tueNichts in module __main__:
tueNichts()
Diese Funktion macht nichts.
Sie verwendet keine Parameter,
hat keine Seiteneffekte und
gibt nichts zurück.
M. Weigend 13.1.2013
>>> konkat ('a', 'b', 'c')
abc
>>> konkat ('Sonnen', 'schein')
'Sonnenschein'
>>> verstecke('Um acht an der Uhr')
'UFMF LACCRHXTF GAXNJ VDCEYRA IUGHBRW'
>>> verstecke ('Um acht an der Uhr',2)
'UALMVD SPAHNCWDHAHTPH PJAMUNSY REDKNEQBRIB PIUBTHZBRWN'
191
6.15
Aufgaben
Hinweise zur Implementierung: Mithilfe einer Zufallszahl kann aus einer Zeichenkette ein
zufälliger Buchstabe ausgewählt werden. Verwenden Sie die Funktion
randint() aus dem
Modul
random. Der Aufruf random.randint(n,m) liefert eine ganze Zufallszahl zwischen
n und m. Beispiel:
Die Methode
upper() liefert zu einem String einen String mit lauter Großbuchstaben. Bei-
spiel:
Aufgabe 3
Die Quadratwurzel einer positiven Zahl x lässt sich durch folgendes rekursive Verfahren
(Heronsches Verfahren) bestimmen:
Man wähle einen Näherungswert z
1
, z.B. z
1
= 1.
Weitere Näherungen berechnet man mit: z
n+1
= 0.5(*z
n
+ x/z
n
) für n > 1.
Schreiben Sie eine rekursive Funktion
wurzel() mit zwei Argumenten, die die Quadrat-
wurzel nach dem heronschen Verfahren näherungsweise berechnet. Das erste Argument ist
die Zahl
x, deren Quadratwurzel berechnet wird. Das zweite Argument ist optional und ent-
hält die Anzahl
n der Näherungen, die berechnet werden sollen. Der Defaultwert für n soll
10 sein.
Beispielaufrufe:
Aufgabe 4
Ein klassisches Beispiel für die Anwendung eines rekursiven Verfahrens ist die Lösung des
Spiels »Die Türme von Hanoi«. Dieser Algorithmus darf in keinem Lehrbuch der Informa-
tik fehlen. Es ist wirklich verblüffend, auf welch einfache Weise man ein auf den ersten Blick
äußerst schwieriges Problem durch Rekursion lösen kann.
Das Spiel – das man in den meisten Spielwarenläden kaufen kann – besteht aus drei Stäben,
die auf einer Platte montiert sind. Auf dem ersten Stab befinden sich einige Lochscheiben,
deren Durchmesser nach oben hin abnimmt (siehe Abbildung 6.12). Sie stellen einen Turm
dar. Wenn Sie das Spiel nicht kennen und jetzt einmal ausprobieren wollen, malen Sie ein-
>>> import random
>>> random.randint(0,25)
12
>>> s = 'klein'
>>> s.upper()
'KLEIN'
>>> wurzel(2, 5)
1.4142135623746899
>>> wurzel(2)
1.4142135623730949
Kapitel 6
Funktionen
192
fach die Zahlen 1, 2 und 3 auf ein Blatt Papier und legen Sie auf die Eins einige Münzen
unterschiedlicher Größe, so dass immer eine kleinere Münze auf einer größeren liegt.
Abb. 6.12: Die Türme von Hanoi – Ausgangslage
Die Aufgabe besteht darin, die Scheiben vom ersten Stab auf den zweiten zu transportieren.
Dabei sind folgende zwei Regeln zu beachten:
Nur die oberste Scheibe eines Turmes darf bewegt werden.
Es ist verboten, eine größere Scheibe auf eine kleinere zu legen.
Entwickeln Sie eine rekursive Funktion, die auf dem Bildschirm ausgibt, wie die Scheiben
zu bewegen sind, damit ein Turm von Position 1 nach Position 2 versetzt wird. Die Funktion
habe folgenden Kopf:
Dabei ist
n die Anzahl der Scheiben des Turms, der bewegt werden soll
von die Anfangsposition des Turmes
nach die Zielposition, auf die der Turm gebracht werden soll
ueber die Zwischenposition, auf der während des Transports Teile des Turms abgelegt
werden können
Falls der Turm nur aus drei Scheiben besteht, könnte ein Aufruf folgendes Ergebnis liefern:
def bewege (n, von, nach, ueber):
>>> bewege (3, 1, 2, 3)
Lege eine Scheibe von 1 nach 3 .
Lege eine Scheibe von 1 nach 2 .
Lege eine Scheibe von 3 nach 2 .
Lege eine Scheibe von 1 nach 3 .
Lege eine Scheibe von 2 nach 1 .
Lege eine Scheibe von 2 nach 3 .
Lege eine Scheibe von 1 nach 3 .
1
2
3

Get Python 3 - Lernen und professionell anwenden 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.