**Dies ist eine alte Version des Dokuments!**
Aufgaben zu Funktionen C – Gemischte Aufgaben zu Funktionen
Die folgenden Aufgaben behandeln Funktionen mit und ohne Argumente oder Rückgabewerte.
NC1 – Hexagons are the Bestagons
- Schreibe eine Funktion
hexagon(), die deine Turtle ein Sechseck zeichnen lässt. - Verwende anschliessend diese Funktion in einer while-Schleife, um sechs Sechsecke zu zeichnen, sodass in der Mitte ein siebtes entsteht (Siehe Bild).
Wenn du das geschafft hast, darfst du folgendes Video schauen: Hexagons are the Bestagons.
NC2 – Random Dots
- Schreibe eine Funktion
punkte(min, max, farben)gemäss folgenden Anforderungen:- Die Argumente
minundmaxgeben an, wie viele Punkte mindestens und höchstens gezeichnet werden. - Das Argument
farbenist eine Liste mit Farbnamen. - Die Funktion zeichnet eine zufällige Anzahl Punkte (20 px) im gewünschten Bereich.
- Für jedem Punkt wird eine zufällige Farbe aus der Farbliste gewählt.
- Die Position jedes Punktes wird ebenfalls zufällig bestimmt: Die x-Position im Bereich -250 bis 250, die y-Position im Bereich -100 bis 100.
- Die Funktion gibt zurück, wie viele Punkte sie gezeichnet hat.
- Schreibe ein Programm, das die Funktion
punkteverwendet:- Erstelle eine Liste mit vier bis sieben Farben.
- Rufe die Funktion auf (mit beliebigen Werten für min und max sowie mit der Farbliste) und gib eine Meldung in folgender Form aus: „Es wurden 14 Punkte gezeichnet“.
NC3 – Crimson & Clover
Crimson & Clover ist der Titel dieses Liedes von Tommy James and the Shondells.
Schritt 1 – Herzblatt
Schreibe eine Funktion herzblatt(seite, farbe), die ein farbiges Herzblatt gemäss der Zeichnung rechts malt:
- Das Argument
seitebestimmt die Seitenlänge des Quadrats im Herzblatt. - Das Argument
farbebestimmt die Farbe des Herzblatts. - Verwende die Turtle-Funktionen
setFillColor(color),startPath()undfillPath(). - Teste die Funktion.
Schritt 2 – Kleeblätter
Schreibe eine weitere Funktionen kleeblatt3(radius), die ein grünes, dreiblättriges Kleeblatt malt.
- Verwende die eben erstellte Funktion herzblatt.
- Das Argument
radiusbestimmt den (inneren) Radius, du kannst es einfach an die Funktionherzblattweitergeben. - Teste die Funktion.
Wiederhole Schritt 2 für eine Funktion kleeblatt4(radius), die ein dunkelgrünes, vierblättriges Kleeblatt malt.
Schritt 3 – Crimson & Clover
Schreibe ein Programm, das die Kleeblatt-Funktionen verwendet und eine zufällige Wiese aus ingesamt 30 Purpur-Punkten und Kleeblättern malt, ähnlich dem Bild rechts:
- Jede siebte Figur ist ein vierblättriges Kleeblatt.
- Jede dritte Figur ist dreiblättriges Kleeblatt.
- Alle anderen Figuren sind Purpur-Punkte.
- Die Grösse jedes Kleeblatts oder Punktes wird jeweils zufällig bestimmt.
- Beachte die Hinweise in Aufgabe NA4.
Zusatzaufgabe (Optional)
Verbessere deine Herzblatt-Funktion: herzblatt2(seite, farbe1, farbe2) soll ein zweifarbiges Herzblatt zeichnen. Wie im nebenstehenden Bild.
- Um ein Herz auf diese Weise zu zeichnen, benötigst du die Funktion
sqrt(), die die Quadratwurzel (square root) aus einer Zahl ermittelt. Hierzu musst du das Modulmathimportieren:
import math print(math.sqrt(4))
NC4 – Text rückwärts
Strings vs. Listen
Texte werden in python als Strings (engl. „Schnur“ oder „Kette“) bezeichnet. Ein Text besteht aus mehreren Buchstaben und ist damit eine Aneinanderreihung von Buchstaben – sozusagen eine Kette von Buchstaben.
Strings haben gewisse Ähnlichkeit mit Listen: Auch in Listen sind mehrere Elemente aneinander gehängt. Hier vergleichen wir Listen mit Strings anhand einiger Befehle/Operationen:
Befehle mit Listen:
my_list = [] # Leere Liste erstellen numbers = [3,9,27] # Liste mit Inhalt erstellen numbers.append(81) # Der Liste ein Element anfügen n = numbers[2] # Bestimmtes Element in Liste wählen print(n) # Gibt 27 aus
Befehle mit Strings:
my_text = "" # Leeren Text erstellen name = "Immanuel" # Text mit Inhalt erstellen name = name + " Kant" # Dem Text einen Text anfügen b = name[5] # Bestimmten Buchstaben im Text wählen print(b) # Gibt 'u' aus
Die Funktion len() funktioniert sowohl für Listen als auch für Strings.
Schreibe eine Funktion text_reverse(text), die einen Text rückwärts zurückgibt:
- Zum Beispiel soll der Aufruf
text_reverse(„Roti Rösli im Garte“)den Text „etraG mi ilsöR itoR“ zurückgeben. - Verwende eine While-Schleife, um durch den String (den Text) zu gehen.
- Hinweis: Python böte mit der String-Slicing-Syntax eine sehr kurze Lösung für diese Aufgabe. Wir verzichten hier aber auf String Slicing und bleiben vorerst bei der guten alten while-Schleife.
- Teste deine Funktion.
NC5 – Abstände ersetzen
Schreibe eine Funktion replace_spaces(text, char). Die Funktion ersetzt alle Abstände (spaces) in text durch das Zeichen char und gibt den neuen Text zurück. Zum Beispiel gibt der Aufruf replace_spaces(„Roti Rösli im Garte“, '-') den Text „Roti-Rösli-im-Garte“ zurück. Teste deine Funktion.
- Hinweis: Mit eckigen Klammern können wir zwar einen Buchstaben aus einem String auslesen. Anders als bei Listen können wir die eckigen Klammern aber nicht nutzen, um einen bestimmten Buchstaben eines Strings zu verändern.
NC6 – Wörter rückwärts (Challenge)
Schreibe eine Funktion words_reverse(text), die die Wortfolge eines Textes umdreht und den neuen Text zurückgibt. Zum Beispiel soll der Aufruf words_reverse(„Roti Rösli im Garte“) den Text „Garte im Rösli Roti“ zurückgeben.
Schritt 1
Schreibe zuerst eine Funktion word_list(text), die jedes einzelne Wort in text in einer Liste auflistet und diese Liste zurückgibt. Teste die Funktion.
Schritt 2
Schreibe nun die Funktion words_reverse(text) mithilfe der Funktion word_list(text). Teste die Funktion.









