"* Geben Sie bitte Ihrem **Notebook einen Namen**, sodass es Ihnen und Ihrem Partner zugeordnet werden kann (z.B. *hausaufgabe2_nachname1_nachname2.ipynb*)\n",
"* Geben Sie bitte Ihrem **Notebook einen Namen**, sodass es Ihnen und Ihrem Partner zugeordnet werden kann (z.B. *hausaufgabe2_nachname1_nachname2.ipynb*)\n",
"* Für das Aufwärmen sind in den Seminar-Notebooks schon Musterlösungen gegeben, die nur geringfügig angepasst werden müssen. Falls Sie eine davon nutzen, **ändern Sie zumindest die Namen der Argumente, Literale und Variablen.** \n",
"* Für das Aufwärmen sind in den Seminar-Notebooks schon Musterlösungen gegeben, die nur geringfügig angepasst werden müssen. Falls Sie eine davon nutzen, **ändern Sie zumindest die Namen der Argument und Variablen.** \n",
"* Fügen Sie außerdem **Kommentare** zu ihrem Code hinzu, mit denen Sie erklären, was die Funktion macht (Schleife, Bedingungen, etc. beschreiben). Dies kann man durch zwei Varianten machen:\n",
"* Fügen Sie außerdem **Kommentare** zu ihrem Code hinzu, mit denen Sie erklären, was die Funktion macht (Schleife, Bedingungen, etc. beschreiben). Dies kann man durch zwei Varianten machen:\n",
" - \\# \n",
" - \\# \n",
" - Mit Hilfe der Raute kann ein Kommentar in einem Codeblock stehen, um einzelne Codesgemente zu beschreiben und zu interpretieren\n",
" - Kommentare zu einzelnen Codeblöcken\n",
" - z.B. : #.B. Kommentar zu einzelnen Code-Segmenten\n",
" - ''' '''\n",
" - ''' '''\n",
" - Hier kann ein Kommentar stehen, der die Funktion als Ganzes beschreibt\n",
" - Funktionsbeschreibung\n",
" - z.B. ''' Beschreibung einer Funktion \n",
" \n",
" \n",
"* Schauen Sie sich das notebook **[FAQ.ipynb](FAQ.ipynb)** an, hier sind turtle-Methoden beschrieben, die Sie in dieser Hausaufgabe benötigen. \n",
"* Schauen Sie sich das notebook **[FAQ.ipynb](FAQ.ipynb)** an, hier sind turtle-Methoden beschrieben, die Sie in dieser Hausaufgabe nutzen können. \n",
"* In jedem Codeblock steht eine **Testfunktion**, die am Ende die von Ihnen definierte Funktion aufruft. Dies sollte funktionieren (dort kann man auch direkt ablesen, wieviele und welche Argumente gebraucht werden). Anfangs können Sie den Aufruf gerne auskommentieren, damit nicht immer eine Fehlermeldung angezeigt wird (danach wieder Kommentare entfernen).\n",
"* In jedem Codeblock steht eine **Testfunktion**, die am Ende die von Ihnen definierte Funktion aufruft. Dies sollte funktionieren (dort kann man auch direkt ablesen, wieviele und welche Argumente gebraucht werden). Anfangs können Sie den Aufruf gerne auskommentieren, damit nicht immer eine Fehlermeldung angezeigt wird (danach wieder Kommentare entfernen).\n",
"* Schreiben Sie bitte zu jeder definierten Funktion einen **Funktionsaufruf mit eigens definierten *turtle-Objekten* und Parametern**.\n",
"* Schreiben Sie bitte zu jeder definierten Funktion einen **Funktionsaufruf mit eigens definierten *turtle-Objekten* und Parametern**.\n",
"* Nutzen Sie **Schleifen** in allen Aufgaben, in denen Sie geometrische Figuren zeichnen müssen (Sie haben diese in den Seminaren kennengelernt)!\n",
"* Nutzen Sie **Schleifen** in allen Aufgaben, in denen Sie geometrische Figuren zeichnen müssen (Sie haben diese in den Seminaren kennengelernt)!\n",
"* Verwenden Sie die von Ihnen **geschriebenen Funktionen aus vorherigen Aufgabenteilen in den Folgeaufgaben**, um Code zu sparen und Fehler zu vermeiden (zum Beispiel die Nutzung der Funktion triangle in den Aufgaben 2-7).\n",
"* Sie dürfen natürlich auch andere Funktionen des turtle-Moduls nutzen (siehe https://docs.python.org/3/library/turtle.html).\n",
"* Bitte geben Sie nur **eine Lösung pro Aufgabe** ab.\n",
"* **Zusatz** = freiwillig\n",
"\n",
"\n",
"\n",
"\n",
"Wir wünschen viel Erfolg beim Lösen der Aufgaben!"
"Wir wünschen viel Erfolg beim Lösen der Aufgaben!"
]
]
},
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Hilfsfunktion:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from random import randint \n",
"\n",
"def setcolor(t,n): \n",
" ''' nimmt eine Turte und eine Ganzzahl entgegen und ändert die Farbe der gezeichneten Linien (n = 1) oder die \n",
" Farbe der gezeichneten Linien und die Farbe der turtle selbst (n = 2) bei jedem Aufruf zufällig'''\n",
" turtle.colormode(255) # um RGB-Farben anzuwenden, muss man vorher diesen Colormode aktivieren\n",
" if n==1: #setze n=1, um die Schildkröte und Formen in der gleichen Farbe zu färben\n",
" t.color(randint(0,255),randint(0,255),randint(0,255)) #generiert eine zufällige Farbe für die turtle\n",
" if n==2: # setze n=2, um Schildkröte und Formen in unterschiedlichen Farben zu färben\n",
" # Aufruf der Hilfsfunktion am Ende der Schleife, \n",
" #um im nächsten Schleifendurchlauf die Linie und die turtle neu zu färben\n",
" setcolor(caro, 2) \n",
"\n",
"turtle.mainloop()\n",
"turtle.bye()"
]
},
{
{
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
...
@@ -36,7 +85,8 @@
...
@@ -36,7 +85,8 @@
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" - **Aufgabe 1:** Schreiben Sie eine Funktion `square`, die zwei Parameter `t` und `length` erwartet. `t` ist eine Schildkröte, `length` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein Quadrat mit Seitenlänge `length` zu zeichnen. "
"### Aufgabe 0\n",
"Schreiben Sie eine Funktion `square`, die zwei Parameter `t` und `length` erwartet. `t` ist eine Schildkröte, `length` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein Quadrat mit Seitenlänge `length` zu zeichnen. "
]
]
},
},
{
{
...
@@ -65,9 +115,10 @@
...
@@ -65,9 +115,10 @@
"## Aufgaben\n",
"## Aufgaben\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"### Aufgabe 1\n",
" - **Aufgabe 1:** Schreiben Sie eine Funktion `triangle`, die zwei Parameter `t` und `l` erwartet. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein gleichseitiges Dreieck mit Seitenlänge `l` zu zeichnen. \n",
"Schreiben Sie eine Funktion `triangle`, die zwei Parameter `t` und `l` erwartet. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein gleichseitiges Dreieck mit Seitenlänge `l` zu zeichnen. \n",
" - **Aufgabe 2:** Schreiben Sie einen Funktionsaufruf, der `otto` und `40` an `triangle` übergibt und rufen Sie ihr Programm auf."
"### Aufgabe 2\n",
"Schreiben Sie einen Funktionsaufruf, der `otto` und `40` an `triangle` übergibt und rufen Sie ihr Programm auf."
]
]
},
},
{
{
...
@@ -90,29 +141,21 @@
...
@@ -90,29 +141,21 @@
"turtle.bye()"
"turtle.bye()"
]
]
},
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Hilfsfunktion:"
]
},
{
{
"cell_type": "code",
"cell_type": "code",
"execution_count": null,
"execution_count": null,
"metadata": {},
"metadata": {},
"outputs": [],
"outputs": [],
"source": [
"source": [
"#Wenn Sie diese Funktion mit Ihrer turtle aufrufen, wird die turtle eine zufällige Farbe annehmen \n",
"import turtle\n",
"from random import randint #zuerst müssen wir uns die Methode randint aus der Bibliothek \"random\" importieren\n",
"# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu\n",
"def setcolor(t,n): \n",
"\n",
" turtle.colormode(255) # um RGB-Farben anzuwenden, muss man vorher diesen Colormode aktivieren\n",
"\n",
" if n==1: #setze n=1, um die Schildkröte und Formen in der gleichen Farbe zu färben\n",
"\n",
" t.color(randint(0,255),randint(0,255),randint(0,255)) #generiert eine zufällige Farbe für die turtle\n",
"# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu\n",
" if n==2: # setze n=2, um Schildkröte und Formen in unterschiedlichen Farben zu färben\n",
"'''Diese Funktion kann genutzt werden, um Ihrer turtle zufällige Farben zu geben. Für mehr Infos, schauen Sie in das FAQ. Dort sind Beispiele implementiert.'''"
]
]
},
},
{
{
...
@@ -132,30 +175,23 @@
...
@@ -132,30 +175,23 @@
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
"source": [
"source": [
"- **Aufgabe 3:** Nutzen Sie die Funktionen, um die Schildkröte in einer Farbe Ihrer Wahl zu färben. Dies können Sie direkt in Ihrem Code aus Aufgabe 2 einbauen. Sie können aber auch einen neuen Codeblock erstellen."
"### Aufgabe 3\n",
]
"#### 3.1.\n",
},
"Nutzen Sie die Funktionen, um die Schildkröte in einer Farbe Ihrer Wahl zu färben. Dies können Sie direkt in Ihrem code aus Aufgabe 2 einbauen. Sie können aber auch einen neuen Codeblock erstellen.\n",
{
"#### 3.2\n",
"cell_type": "markdown",
"Nutzen Sie die Funktionen, um Ihr Dreieck in einer Farbe Ihrer Wahl zu färben.\n",
"metadata": {},
"#### 3.3\n",
"source": [
"3. Nutzen Sie die Funktionen, um an jeder Ecke Ihres Dreiecks eine Schildkröte zu platzieren."
"- **Aufgabe 4:** Nutzen Sie die Funktionen, um Ihr Dreieck in einer Farbe Ihrer Wahl zu färben. Dies können Sie direkt in Ihrem Code aus Aufgabe 2 einbauen. Sie können aber auch einen neuen Codeblock erstellen."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"- **Aufgabe 5:** Nutzen Sie die Funktionen, um an jeder Ecke Ihres Dreiecks eine Schildkröte zu platzieren. Dies können Sie direkt in Ihrem Code aus Aufgabe 2 einbauen. Sie können aber auch einen neuen Codeblock erstellen."
]
]
},
},
{
{
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
"source": [
"source": [
"- **Aufgabe 6:** Schreiben Sie eine Funktion `repeat_triangle`, die **vier Dreiecke nebeneinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>\n",
"### Aufgabe 4\n",
" - *Zusatz*: Jedes Dreieck soll eine eigene Farbe haben.\n",
"Schreiben Sie eine Funktion `repeat_triangle`, die **vier Dreiecke nebeneinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>\n",
" - *Zusatz*: Verändern Sie die Funktion so, dass sie eine variable Anzahl von Dreiecken zeichnen kann, die als Argument übergeben wird.\n",
"- *Zusatz*: Jedes Dreieck soll eine eigene Farbe haben.\n",
"- *Zusatz*: Verändern Sie die Funktion so, dass sie eine variable Anzahl von Dreiecken zeichnen kann, die als Argument übergeben wird.\n",
"- **Aufgabe 7:** Schreiben Sie eine Funktion `pile_triangle`, die **vier Dreiecke übereinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>\n",
"### Aufgabe 5\n",
" - *Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.\n",
"Schreiben Sie eine Funktion `pile_triangle`, die **vier Dreiecke übereinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>\n",
" - *Zusatz*: Verändern Sie die Funktion so, dass sie eine variable Anzahl von Dreiecken zeichnen kann, die als Argument übergeben wird.\n",
"- *Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.\n",
"- *Zusatz*: Verändern Sie die Funktion so, dass sie eine variable Anzahl von Dreiecken zeichnen kann, die als Argument übergeben wird.\n",
"\n",
"\n",
"\n",
"\n",
"- Eine mögliche Lösung könnte so aussehen: \n",
"- Eine mögliche Lösung könnte so aussehen: \n",
...
@@ -219,9 +256,10 @@
...
@@ -219,9 +256,10 @@
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
"source": [
"source": [
"- **Aufgabe 8:** Schreiben Sie eine Funktion `tiled_triangle`, die **drei Dreiecke übereinander und drei Dreiecke nebeneinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>\n",
"### Aufgabe 6\n",
" - *Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.\n",
"Schreiben Sie eine Funktion `tiled_triangle`, die **drei Dreiecke übereinander und drei Dreiecke nebeneinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>\n",
" - *Für Profis* : Färben Sie auch die Zwischenräume, die hier entstehen\n",
"- *Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.\n",
"- *Zusatz* : Färben Sie auch die Zwischenräume, die hier entstehen\n",
" \n",
" \n",
"\n",
"\n",
"- Eine mögliche Lösung könnte so aussehen:\n",
"- Eine mögliche Lösung könnte so aussehen:\n",
...
@@ -252,7 +290,8 @@
...
@@ -252,7 +290,8 @@
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
"source": [
"source": [
"- **Aufgabe 9:** Schreiben Sie eine Funktion `tiled_triangle`, die **n Dreiecke übereinander und m Dreiecke nebeneinander** zeichnet. Sie soll vier Argumente `t`, `l`, `n` und `m` erhalten. `t` ist eine Schildkröte, `l`, `n` und `m` Ganzzahlen. Die Funktion soll die Schildkröte nutzen, um `n` gleichseitige Dreiecke mit Seitenlänge `l` übereinander und `m` gleichseitige Dreiecke mit Seitenlänge `l` nebeneinander zu zeichnen. <br>"
"### Aufgabe 7\n",
"Schreiben Sie eine Funktion `tiled_triangle`, die **n Dreiecke übereinander und m Dreiecke nebeneinander** zeichnet. Sie soll vier Argumente `t`, `l`, `n` und `m` erhalten. `t` ist eine Schildkröte, `l`, `n` und `m` Ganzzahlen. Die Funktion soll die Schildkröte nutzen, um `n` gleichseitige Dreiecke mit Seitenlänge `l` übereinander und `m` gleichseitige Dreiecke mit Seitenlänge `l` nebeneinander zu zeichnen. <br>"
]
]
},
},
{
{
...
@@ -281,8 +320,9 @@
...
@@ -281,8 +320,9 @@
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
"source": [
"source": [
"- **Aufgabe 10:** Stellen Sie sich vor, sie müssen `tiled_triangle` so verändern, dass die Funktion ein zusätzliches Argument erhält, nämlich die Anzahl der Ecken. (`tiled_triangle(t,l,m,n,ecken)`) Die geometrische Form (bis jetzt das Dreieck) soll also in Zukunft verallgemeinert werden. Die Funktion selbst müssen Sie nicht schreiben. An welchen Stellen könnte es aber Schwierigkeiten in Ihrer jetzigen Funktion geben?\n",
"### Aufgabe 8\n",
" - *Zusatz*: Schreiben Sie die oben beschriebene Funktion"
"Stellen Sie sich vor, sie müssen `tiled_triangle` so verändern, dass die Funktion ein zusätzliches Argument erhält, nämlich die Anzahl der Ecken. (`tiled_triangle(t,l,m,n,ecken)`) Die geometrische Form (bis jetzt das Dreieck) soll also in Zukunft verallgemeinert werden. Die Funktion selbst müssen Sie nicht schreiben. An welchen Stellen könnte es aber Schwierigkeiten in Ihrer jetzigen Funktion geben?\n",
"- *Zusatz*: Versuchen Sie, eine solche Funktion zu implementieren (VORSICHT: Es gibt hierzu noch keine \"schöne\" Lösung!)."
]
]
},
},
{
{
...
@@ -299,8 +339,27 @@
...
@@ -299,8 +339,27 @@
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
"source": [
"source": [
"- **Aufgabe 11:** Überraschen Sie mich. Seien Sie **kreativ** und malen Sie mit turtle, auf was Sie Lust haben :) Die einzige Vorgabe ist es, eine ***for*-Schleife**, eine ***while*-Schleife** und eine ***if*-Anweisung** zu benutzen. Gerne können diese verschachtelt sein. Kommentieren Sie Ihren Code. Beschreiben Sie, was die Schleifen und Anweisungen machen. \n",
"### Aufgabe 11\n",
" - Google kann für Inspirationen helfen, mit \"google python turtle drawings\" o.ä. sollten Sie viele Ideen zu sehen bekommen"
"Überraschen Sie mich. Seien Sie **kreativ** und malen Sie mit turtle, auf was Sie Lust haben :) \n",
"\n",
"Es gibt einige Vorgaben, die im Code enthalten sein müssen:\n",
"- mindestens eine ***Schleife**\n",
"- mindestens eine ***if/else-Anweisung**\n",
"- der Code muss in (mehreren) **Funktionen** verkapselt sein. \n",
"- Die Funktionen müssen **aufgerufen** werden.\n",
"\n",
"Kommentieren Sie Ihren Code. Beschreiben Sie, was die Schleifen, if-Anweisungen und Funktionen machen.\n",
"\n",
"PS: Google kann inspieren: \"google python turtle drawings\" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Hier soll ihr Code stehen"
]
]
}
}
],
],
...
...
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# 2. Hausaufgabe
# 2. Hausaufgabe
Geben Sie diese Hausaufgabe gemeinsam mit Ihrem/r Partner/in ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei (hausaufgabe2_nachname1_nachname2.ipynb) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode und Markdown-Textboxen im Jupyter-Notebook ([Syntax-Beispiele](https://de.wikipedia.org/wiki/Markdown#Auszeichnungsbeispiele)) um ihr Programm zu kommentieren.
Geben Sie diese Hausaufgabe gemeinsam mit Ihrem/r Partner/in ab. Füllen Sie dazu dieses Notebook aus und speichern Sie es ab (Disketten-Icon oben links). Laden Sie dann die Datei (hausaufgabe2_nachname1_nachname2.ipynb) in Moodle hoch. Verwenden Sie Kommentare im Python-Quellcode und Markdown-Textboxen im Jupyter-Notebook ([Syntax-Beispiele](https://de.wikipedia.org/wiki/Markdown#Auszeichnungsbeispiele)) um ihr Programm zu kommentieren.
* Geben Sie bitte Ihrem **Notebook einen Namen**, sodass es Ihnen und Ihrem Partner zugeordnet werden kann (z.B. *hausaufgabe2_nachname1_nachname2.ipynb*)
* Geben Sie bitte Ihrem **Notebook einen Namen**, sodass es Ihnen und Ihrem Partner zugeordnet werden kann (z.B. *hausaufgabe2_nachname1_nachname2.ipynb*)
* Für das Aufwärmen sind in den Seminar-Notebooks schon Musterlösungen gegeben, die nur geringfügig angepasst werden müssen. Falls Sie eine davon nutzen, **ändern Sie zumindest die Namen der Argumente, Literale und Variablen.**
* Für das Aufwärmen sind in den Seminar-Notebooks schon Musterlösungen gegeben, die nur geringfügig angepasst werden müssen. Falls Sie eine davon nutzen, **ändern Sie zumindest die Namen der Argument und Variablen.**
* Fügen Sie außerdem **Kommentare** zu ihrem Code hinzu, mit denen Sie erklären, was die Funktion macht (Schleife, Bedingungen, etc. beschreiben). Dies kann man durch zwei Varianten machen:
* Fügen Sie außerdem **Kommentare** zu ihrem Code hinzu, mit denen Sie erklären, was die Funktion macht (Schleife, Bedingungen, etc. beschreiben). Dies kann man durch zwei Varianten machen:
-\#
-\#
- Mit Hilfe der Raute kann ein Kommentar in einem Codeblock stehen, um einzelne Codesgemente zu beschreiben und zu interpretieren
- Kommentare zu einzelnen Codeblöcken
- z.B. : #.B. Kommentar zu einzelnen Code-Segmenten
- ''' '''
- ''' '''
- Hier kann ein Kommentar stehen, der die Funktion als Ganzes beschreibt
- Funktionsbeschreibung
- z.B. ''' Beschreibung einer Funktion
* Schauen Sie sich das notebook **[FAQ.ipynb](FAQ.ipynb)** an, hier sind turtle-Methoden beschrieben, die Sie in dieser Hausaufgabe benötigen.
* Schauen Sie sich das notebook **[FAQ.ipynb](FAQ.ipynb)** an, hier sind turtle-Methoden beschrieben, die Sie in dieser Hausaufgabe nutzen können.
* In jedem Codeblock steht eine **Testfunktion**, die am Ende die von Ihnen definierte Funktion aufruft. Dies sollte funktionieren (dort kann man auch direkt ablesen, wieviele und welche Argumente gebraucht werden). Anfangs können Sie den Aufruf gerne auskommentieren, damit nicht immer eine Fehlermeldung angezeigt wird (danach wieder Kommentare entfernen).
* In jedem Codeblock steht eine **Testfunktion**, die am Ende die von Ihnen definierte Funktion aufruft. Dies sollte funktionieren (dort kann man auch direkt ablesen, wieviele und welche Argumente gebraucht werden). Anfangs können Sie den Aufruf gerne auskommentieren, damit nicht immer eine Fehlermeldung angezeigt wird (danach wieder Kommentare entfernen).
* Schreiben Sie bitte zu jeder definierten Funktion einen **Funktionsaufruf mit eigens definierten *turtle-Objekten* und Parametern**.
* Schreiben Sie bitte zu jeder definierten Funktion einen **Funktionsaufruf mit eigens definierten *turtle-Objekten* und Parametern**.
* Nutzen Sie **Schleifen** in allen Aufgaben, in denen Sie geometrische Figuren zeichnen müssen (Sie haben diese in den Seminaren kennengelernt)!
* Nutzen Sie **Schleifen** in allen Aufgaben, in denen Sie geometrische Figuren zeichnen müssen (Sie haben diese in den Seminaren kennengelernt)!
* Verwenden Sie die von Ihnen **geschriebenen Funktionen aus vorherigen Aufgabenteilen in den Folgeaufgaben**, um Code zu sparen und Fehler zu vermeiden (zum Beispiel die Nutzung der Funktion triangle in den Aufgaben 2-7).
* Sie dürfen natürlich auch andere Funktionen des turtle-Moduls nutzen (siehe https://docs.python.org/3/library/turtle.html).
* Bitte geben Sie nur **eine Lösung pro Aufgabe** ab.
***Zusatz** = freiwillig
Wir wünschen viel Erfolg beim Lösen der Aufgaben!
Wir wünschen viel Erfolg beim Lösen der Aufgaben!
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Hilfsfunktion:
%% Cell type:code id: tags:
```
from random import randint
def setcolor(t,n):
''' nimmt eine Turte und eine Ganzzahl entgegen und ändert die Farbe der gezeichneten Linien (n = 1) oder die
Farbe der gezeichneten Linien und die Farbe der turtle selbst (n = 2) bei jedem Aufruf zufällig'''
turtle.colormode(255) # um RGB-Farben anzuwenden, muss man vorher diesen Colormode aktivieren
if n==1: #setze n=1, um die Schildkröte und Formen in der gleichen Farbe zu färben
t.color(randint(0,255),randint(0,255),randint(0,255)) #generiert eine zufällige Farbe für die turtle
if n==2: # setze n=2, um Schildkröte und Formen in unterschiedlichen Farben zu färben
#um im nächsten Schleifendurchlauf die Linie und die turtle neu zu färben
setcolor(caro, 2)
turtle.mainloop()
turtle.bye()
```
%% Cell type:markdown id: tags:
## Aufwärmen
## Aufwärmen
-**Aufgabe 1:** Schreiben Sie eine Funktion `square`, die zwei Parameter `t` und `length` erwartet. `t` ist eine Schildkröte, `length` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein Quadrat mit Seitenlänge `length` zu zeichnen.
### Aufgabe 0
Schreiben Sie eine Funktion `square`, die zwei Parameter `t` und `length` erwartet. `t` ist eine Schildkröte, `length` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein Quadrat mit Seitenlänge `length` zu zeichnen.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
```
```
import turtle
import turtle
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
otto = turtle.Turtle()
otto = turtle.Turtle()
square(t = otto, length = 100)
square(t = otto, length = 100)
turtle.mainloop()
turtle.mainloop()
turtle.bye()
turtle.bye()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## Aufgaben
## Aufgaben
### Aufgabe 1
-**Aufgabe 1:** Schreiben Sie eine Funktion `triangle`, die zwei Parameter `t` und `l` erwartet. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein gleichseitiges Dreieck mit Seitenlänge `l` zu zeichnen.
Schreiben Sie eine Funktion `triangle`, die zwei Parameter `t` und `l` erwartet. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um ein gleichseitiges Dreieck mit Seitenlänge `l` zu zeichnen.
-**Aufgabe 2:** Schreiben Sie einen Funktionsaufruf, der `otto` und `40` an `triangle` übergibt und rufen Sie ihr Programm auf.
### Aufgabe 2
Schreiben Sie einen Funktionsaufruf, der `otto` und `40` an `triangle` übergibt und rufen Sie ihr Programm auf.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
```
```
import turtle
import turtle
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
otto = turtle.Turtle()
otto = turtle.Turtle()
triangle(otto, 100)
triangle(otto, 100)
turtle.mainloop()
turtle.mainloop()
turtle.bye()
turtle.bye()
```
```
%% Cell type:markdown id: tags:
### Hilfsfunktion:
%% Cell type:code id: tags:
%% Cell type:code id: tags:
```
```
#Wenn Sie diese Funktion mit Ihrer turtle aufrufen, wird die turtle eine zufällige Farbe annehmen
import turtle
from random import randint #zuerst müssen wir uns die Methode randint aus der Bibliothek "random" importieren
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
def setcolor(t,n):
turtle.colormode(255) # um RGB-Farben anzuwenden, muss man vorher diesen Colormode aktivieren
if n==1: #setze n=1, um die Schildkröte und Formen in der gleichen Farbe zu färben
t.color(randint(0,255),randint(0,255),randint(0,255)) #generiert eine zufällige Farbe für die turtle
if n==2: # setze n=2, um Schildkröte und Formen in unterschiedlichen Farben zu färben
'''Diese Funktion kann genutzt werden, um Ihrer turtle zufällige Farben zu geben. Für mehr Infos, schauen Sie in das FAQ. Dort sind Beispiele implementiert.'''
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
turtle.mainloop()
turtle.bye()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### eingebaute turtle-Methoden:
### eingebaute turtle-Methoden:
- Dokumention von python: https://docs.python.org/3/library/turtle.html
- Dokumention von python: https://docs.python.org/3/library/turtle.html
- Dort finden Sie alle Funktionen, die Sie auf Ihre Schildkröte anwenden können. Wichtig für die Hausaufgabe sind (neben denen, die Sie schon kennengelernt haben):
- Dort finden Sie alle Funktionen, die Sie auf Ihre Schildkröte anwenden können. Wichtig für die Hausaufgabe sind (neben denen, die Sie schon kennengelernt haben):
-`t.shape('turtle')`: ändert die Gestalt der "Schildkröte" in eine Schildkröte.
-`t.shape('turtle')`: ändert die Gestalt der "Schildkröte" in eine Schildkröte.
- Die Farbe der Schildkröte und der Färbung der Muster wählt man mit `t.color(c)`, wobei `c` eine Zeichenkette ist (z.B. 'red', 'green', etc.)
- Die Farbe der Schildkröte und der Färbung der Muster wählt man mit `t.color(c)`, wobei `c` eine Zeichenkette ist (z.B. 'red', 'green', etc.)
-`t.begin_fill()` ... `t.end_fill()`: Färbt das Muster, was die Schildkröte zwischen den beiden Anweisungen gezeichnet hat, ein.
-`t.begin_fill()` ... `t.end_fill()`: Färbt das Muster, was die Schildkröte zwischen den beiden Anweisungen gezeichnet hat, ein.
-`t.stamp()`: Platziert bei Aufruf eine Schildkröte an der Stelle, an der die Schildkröte sich zu diesem Zeitpunkt befindet.
-`t.stamp()`: Platziert bei Aufruf eine Schildkröte an der Stelle, an der die Schildkröte sich zu diesem Zeitpunkt befindet.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
-**Aufgabe 3:** Nutzen Sie die Funktionen, um die Schildkröte in einer Farbe Ihrer Wahl zu färben. Dies können Sie direkt in Ihrem Code aus Aufgabe 2 einbauen. Sie können aber auch einen neuen Codeblock erstellen.
### Aufgabe 3
#### 3.1.
%% Cell type:markdown id: tags:
Nutzen Sie die Funktionen, um die Schildkröte in einer Farbe Ihrer Wahl zu färben. Dies können Sie direkt in Ihrem code aus Aufgabe 2 einbauen. Sie können aber auch einen neuen Codeblock erstellen.
#### 3.2
-**Aufgabe 4:** Nutzen Sie die Funktionen, um Ihr Dreieck in einer Farbe Ihrer Wahl zu färben. Dies können Sie direkt in Ihrem Code aus Aufgabe 2 einbauen. Sie können aber auch einen neuen Codeblock erstellen.
Nutzen Sie die Funktionen, um Ihr Dreieck in einer Farbe Ihrer Wahl zu färben.
#### 3.3
3. Nutzen Sie die Funktionen, um an jeder Ecke Ihres Dreiecks eine Schildkröte zu platzieren.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
-**Aufgabe 5:** Nutzen Sie die Funktionen, um an jeder Ecke Ihres Dreiecks eine Schildkröte zu platzieren. Dies können Sie direkt in Ihrem Code aus Aufgabe 2 einbauen. Sie können aber auch einen neuen Codeblock erstellen.
### Aufgabe 4
Schreiben Sie eine Funktion `repeat_triangle`, die **vier Dreiecke nebeneinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>
%% Cell type:markdown id: tags:
-*Zusatz*: Jedes Dreieck soll eine eigene Farbe haben.
-*Zusatz*: Verändern Sie die Funktion so, dass sie eine variable Anzahl von Dreiecken zeichnen kann, die als Argument übergeben wird.
-**Aufgabe 6:** Schreiben Sie eine Funktion `repeat_triangle`, die **vier Dreiecke nebeneinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>
-*Zusatz*: Jedes Dreieck soll eine eigene Farbe haben.
-*Zusatz*: Verändern Sie die Funktion so, dass sie eine variable Anzahl von Dreiecken zeichnen kann, die als Argument übergeben wird.
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
otto = turtle.Turtle()
otto = turtle.Turtle()
repeat_triangle(otto, 80)
repeat_triangle(otto, 80)
turtle.mainloop()
turtle.mainloop()
turtle.bye()
turtle.bye()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
-**Aufgabe 7:** Schreiben Sie eine Funktion `pile_triangle`, die **vier Dreiecke übereinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>
### Aufgabe 5
-*Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.
Schreiben Sie eine Funktion `pile_triangle`, die **vier Dreiecke übereinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>
-*Zusatz*: Verändern Sie die Funktion so, dass sie eine variable Anzahl von Dreiecken zeichnen kann, die als Argument übergeben wird.
-*Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.
-*Zusatz*: Verändern Sie die Funktion so, dass sie eine variable Anzahl von Dreiecken zeichnen kann, die als Argument übergeben wird.
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
otto = turtle.Turtle()
otto = turtle.Turtle()
pile_triangle(otto, 80)
pile_triangle(otto, 80)
turtle.mainloop()
turtle.mainloop()
turtle.bye()
turtle.bye()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
-**Aufgabe 8:** Schreiben Sie eine Funktion `tiled_triangle`, die **drei Dreiecke übereinander und drei Dreiecke nebeneinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>
### Aufgabe 6
-*Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.
Schreiben Sie eine Funktion `tiled_triangle`, die **drei Dreiecke übereinander und drei Dreiecke nebeneinander** zeichnet. Sie soll zwei Argumente `t` und `l` erhalten. `t` ist eine Schildkröte, `l` eine Ganzzahl. Die Funktion soll die Schildkröte nutzen, um die gleichseitigen Dreiecke mit Seitenlänge `l` zu zeichnen. Die Farbe der Dreiecke soll nicht schwarz sein. <br>
-*Für Profis* : Färben Sie auch die Zwischenräume, die hier entstehen
-*Zusatz* : Jedes Dreieck soll eine eigene Farbe haben.
-*Zusatz* : Färben Sie auch die Zwischenräume, die hier entstehen
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
otto = turtle.Turtle()
otto = turtle.Turtle()
tiled_triangle(otto, 80)
tiled_triangle(otto, 80)
turtle.mainloop()
turtle.mainloop()
turtle.bye()
turtle.bye()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
-**Aufgabe 9:** Schreiben Sie eine Funktion `tiled_triangle`, die **n Dreiecke übereinander und m Dreiecke nebeneinander** zeichnet. Sie soll vier Argumente `t`, `l`, `n` und `m` erhalten. `t` ist eine Schildkröte, `l`, `n` und `m` Ganzzahlen. Die Funktion soll die Schildkröte nutzen, um `n` gleichseitige Dreiecke mit Seitenlänge `l` übereinander und `m` gleichseitige Dreiecke mit Seitenlänge `l` nebeneinander zu zeichnen. <br>
### Aufgabe 7
Schreiben Sie eine Funktion `tiled_triangle`, die **n Dreiecke übereinander und m Dreiecke nebeneinander** zeichnet. Sie soll vier Argumente `t`, `l`, `n` und `m` erhalten. `t` ist eine Schildkröte, `l`, `n` und `m` Ganzzahlen. Die Funktion soll die Schildkröte nutzen, um `n` gleichseitige Dreiecke mit Seitenlänge `l` übereinander und `m` gleichseitige Dreiecke mit Seitenlänge `l` nebeneinander zu zeichnen. <br>
%% Cell type:code id: tags:
%% Cell type:code id: tags:
```
```
import turtle
import turtle
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Implementieren Sie hier ihre Funktion und schreiben Sie Kommentare dazu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
# Testen Sie hier ihre Funktion; fügen Sie auch eigene Tests hinzu
otto = turtle.Turtle()
otto = turtle.Turtle()
tiled_triangle(otto, 80,4,6)
tiled_triangle(otto, 80,4,6)
turtle.mainloop()
turtle.mainloop()
turtle.bye()
turtle.bye()
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
-**Aufgabe 10:** Stellen Sie sich vor, sie müssen `tiled_triangle` so verändern, dass die Funktion ein zusätzliches Argument erhält, nämlich die Anzahl der Ecken. (`tiled_triangle(t,l,m,n,ecken)`) Die geometrische Form (bis jetzt das Dreieck) soll also in Zukunft verallgemeinert werden. Die Funktion selbst müssen Sie nicht schreiben. An welchen Stellen könnte es aber Schwierigkeiten in Ihrer jetzigen Funktion geben?
### Aufgabe 8
-*Zusatz*: Schreiben Sie die oben beschriebene Funktion
Stellen Sie sich vor, sie müssen `tiled_triangle` so verändern, dass die Funktion ein zusätzliches Argument erhält, nämlich die Anzahl der Ecken. (`tiled_triangle(t,l,m,n,ecken)`) Die geometrische Form (bis jetzt das Dreieck) soll also in Zukunft verallgemeinert werden. Die Funktion selbst müssen Sie nicht schreiben. An welchen Stellen könnte es aber Schwierigkeiten in Ihrer jetzigen Funktion geben?
-*Zusatz*: Versuchen Sie, eine solche Funktion zu implementieren (VORSICHT: Es gibt hierzu noch keine "schöne" Lösung!).
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
-
-
-
-
-
-
-
-
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
-**Aufgabe 11:** Überraschen Sie mich. Seien Sie **kreativ** und malen Sie mit turtle, auf was Sie Lust haben :) Die einzige Vorgabe ist es, eine ***for*-Schleife**, eine ***while*-Schleife** und eine ***if*-Anweisung** zu benutzen. Gerne können diese verschachtelt sein. Kommentieren Sie Ihren Code. Beschreiben Sie, was die Schleifen und Anweisungen machen.
### Aufgabe 11
- Google kann für Inspirationen helfen, mit "google python turtle drawings" o.ä. sollten Sie viele Ideen zu sehen bekommen
Überraschen Sie mich. Seien Sie **kreativ** und malen Sie mit turtle, auf was Sie Lust haben :)
Es gibt einige Vorgaben, die im Code enthalten sein müssen:
- mindestens eine ***Schleife**
- mindestens eine ***if/else-Anweisung**
- der Code muss in (mehreren) **Funktionen** verkapselt sein.
- Die Funktionen müssen **aufgerufen** werden.
Kommentieren Sie Ihren Code. Beschreiben Sie, was die Schleifen, if-Anweisungen und Funktionen machen.
PS: Google kann inspieren: "google python turtle drawings"