Newer
Older
"\n",
"recurse(3, 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Was würde passieren, wenn wir diese Funktion so aufrufen würden: `recurse(-1, 0)`?\n",
"\n",
"2. Schreiben Sie einen Docstring der alles erklärt, was man wissen sollte, um diese Funktion nutzen zu können (und nicht mehr!)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Die folgenden Aufgaben nutzen das `turtle`-Modul welches in [Kapitel 4](seminar04.ipynb) beschrieben wurde.\n",
"\n",
"#### Aufgabe 5\n",
"Lesen Sie sich die folgende Funktion durch und versuchen Sie herauszufinden, was sie tut (schauen Sie sich auch die [Beispiele in Kapitel 4](seminar04.ipynb#4.12-%C3%9Cbung) an). Rufen Sie erst dann die Funktion auf und schauen Sie, ob Sie richtig liegen."
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def draw(t, length, n):\n",
" if n == 0:\n",
" return\n",
" angle = 50\n",
" t.fd(length*n)\n",
" t.lt(angle)\n",
" draw(t, length, n-1)\n",
" t.rt(2*angle)\n",
" draw(t, length, n-1)\n",
" t.lt(angle)\n",
" t.bk(length*n)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"#### Aufgabe 6\n",
"\n",
"Die [Koch-Kurve](https://de.wikipedia.org/wiki/Koch-Kurve) ist ein [Fraktal](https://de.wikipedia.org/wiki/Fraktal), welches ungefähr so aussieht:\n",
"\n",
"\n",
"\n",
"Um eine Koch-Kurve der Länge x zu zeichnen, müssen wir nur folgendes tun:\n",
"1. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
"2. Um 60° nach links drehen.\n",
"3. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
"2. Um 120° nach rechts drehen.\n",
"3. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
"2. Um 60° nach links drehen.\n",
"3. Eine Koch-Kurve der Länge x/3 zeichnen.\n",
"\n",
"Eine Ausnahme gibt es, falls x kleiner als 3 ist: dann zeichnen wir einfach eine Strecke der Länge 3.\n",
"\n",
"1. Schreiben Sie eine Funktion `koch`, die eine Schildkröte und eine Länge als Argumente erwartet und die Schildkröte nutzt, um eine Koch-Kurve der gegebenen Länge zu zeichnen.\n",
"2. Schreiben Sie eine Funktion `schneeflocke`, die drei Koch-Kurven zeichnet, so dass sich der Umriss einer Schneeflocke ergibt.\n",
"\n",
" Lösung: http://thinkpython2.com/code/koch.py\n",
"3. Die Koch-Kurve kann auf verschiedene Art und Wiese verallgemeinert werden. Schauen Sie sich die [Beispiele auf Wikipedia](https://en.wikipedia.org/wiki/Koch_snowflake#Variants_of_the_Koch_curve) an und implementieren Sie ihren Favoriten."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import turtle\n",
"# Implementieren Sie hier die Funktion koch\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"([Eric Baird](https://commons.wikimedia.org/wiki/File:Koch_Curve_in_Three_Dimensions_%28%22Delta%22_fractal%29.jpg))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
" Speichern Sie dieses Notebook, so dass Ihre Änderungen nicht verlorengehen (nicht auf einem Pool-Rechner). Klicken Sie dazu oben links auf das Disketten-Icon und nutzen Sie beispielsweise einen USB-Stick, E-Mail, Google Drive, Dropbox oder Ihre [HU-Box](https://box.hu-berlin.de/). "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Herzlichen Glückwunsch! Sie haben das 5. Kapitel geschafft. Weiter geht es in [6: Ertragreiche Funktionen](seminar06.ipynb)."