Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:funktionen:aufgaben_c [2026-05-08 06:12] – angelegt gra | gf_informatik:funktionen:aufgaben_c [2026-05-08 06:27] (aktuell) – [NC5 – Crimson & Clover (optional)] gra | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | ==== Aufgaben | + | ==== Aufgaben |
| Die folgenden Aufgaben behandeln Funktionen mit und ohne Argumente oder Rückgabewerte. | Die folgenden Aufgaben behandeln Funktionen mit und ohne Argumente oder Rückgabewerte. | ||
| Zeile 22: | Zeile 22: | ||
| - Erstelle eine Liste mit vier bis sieben Farben. | - 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" | - 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 === | + | |
| + | |||
| + | === NC3 – Text rückwärts === | ||
| + | |||
| + | <box 100% round green|**Strings vs. Listen**> | ||
| + | |||
| + | **Texte** werden in python als **Strings** (engl. " | ||
| + | |||
| + | **Strings** haben gewisse Ähnlichkeit mit **Listen**: Auch in Listen sind mehrere Elemente aneinander gehängt. Hier vergleichen wir Listen mit Strings anhand einiger Befehle/ | ||
| + | |||
| + | <WRAP group> | ||
| + | <WRAP column half> | ||
| + | Befehle mit Listen: | ||
| + | <code python> | ||
| + | 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 | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | <WRAP column half> | ||
| + | Befehle mit Strings: | ||
| + | <code python> | ||
| + | my_text = "" | ||
| + | name = " | ||
| + | name = name + " Kant" # Dem Text einen Text anfügen | ||
| + | b = name[5] # Bestimmten Buchstaben im Text wählen | ||
| + | print(b) # Gibt ' | ||
| + | </ | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | Die Funktion '' | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | Schreibe eine Funktion '' | ||
| + | * Zum Beispiel soll der Aufruf '' | ||
| + | * **Verwende eine While-Schleife**, | ||
| + | * Hinweis: Python böte mit der [[https:// | ||
| + | * Teste deine Funktion. | ||
| + | |||
| + | === NC4 – Abstände ersetzen === | ||
| + | Schreibe eine Funktion '' | ||
| + | * Hinweis: Mit eckigen Klammern können wir zwar einen Buchstaben aus einem String // | ||
| + | |||
| + | === NC5 – Crimson & Clover | ||
| Crimson & Clover ist der Titel [[https:// | Crimson & Clover ist der Titel [[https:// | ||
| Zeile 100: | Zeile 150: | ||
| </ | </ | ||
| </ | </ | ||
| - | === NC4 – Text rückwärts === | ||
| - | <box 100% round green|**Strings vs. Listen**> | + | === NC6 – Wörter rückwärts (Challenge) === |
| + | Schreibe eine Funktion '' | ||
| - | **Texte** werden | + | == Schritt 1 == |
| + | Schreibe zuerst eine Funktion '' | ||
| + | |||
| + | == Schritt 2 == | ||
| + | Schreibe nun die Funktion '' | ||
| + | |||
| + | ==== Lösungen ==== | ||
| + | |||
| + | <nodisp 2> | ||
| + | ++++Lösungen zu Aufgaben NC:| | ||
| + | |||
| + | === NC1 === | ||
| + | < | ||
| + | from gturtle import* | ||
| + | karl = Turtle() | ||
| + | |||
| + | def hexagon(): | ||
| + | side_count = 0 | ||
| + | while side_count < 6: | ||
| + | karl.forward(50) | ||
| + | karl.right(60) | ||
| + | side_count = side_count + 1 | ||
| + | |||
| + | hex_count = 0 | ||
| + | while hex_count < 6: | ||
| + | hexagon() | ||
| + | karl.forward(50) | ||
| + | karl.left(60) | ||
| + | hex_count = hex_count + 1 | ||
| + | </ | ||
| + | === NC2 === | ||
| + | <code python> | ||
| + | import random | ||
| + | from gturtle import | ||
| + | flori = Turtle() | ||
| + | |||
| + | def punkte(min, max, colors): | ||
| + | i = 0 | ||
| + | anz = random.randint(min, | ||
| + | while i < anz: | ||
| + | xpos = random.randint(-250, | ||
| + | ypos = random.randint(-100, | ||
| + | flori.setPenColor(colors[random.randint(0, | ||
| + | flori.setPos(xpos, | ||
| + | flori.dot(20) | ||
| + | i = i + 1 | ||
| + | return i | ||
| + | |||
| + | farben = ["red", "blue", " | ||
| + | |||
| + | anz_punkte = punkte(5, 40, farben) | ||
| + | print(f" | ||
| + | </code> | ||
| - | **Strings** haben gewisse Ähnlichkeit mit **Listen**: Auch in Listen sind mehrere Elemente aneinander gehängt. Hier vergleichen wir Listen mit Strings anhand einiger Befehle/ | ||
| + | === NC3 === | ||
| <WRAP group> | <WRAP group> | ||
| <WRAP column half> | <WRAP column half> | ||
| - | Befehle | + | Variante |
| <code python> | <code python> | ||
| - | my_list = [] # Leere Liste erstellen | + | def text_reverse(text): |
| - | numbers | + | |
| - | numbers.append(81) # Der Liste ein Element anfügen | + | i = len(text)-1 |
| - | n = numbers[2] # Bestimmtes Element in Liste wählen | + | while i >= 0: |
| - | print(n) # Gibt 27 aus | + | new_text = new_text + text[i] |
| + | i = i-1 | ||
| + | return new_text | ||
| + | | ||
| + | print(text_reverse(" | ||
| </ | </ | ||
| - | |||
| </ | </ | ||
| <WRAP column half> | <WRAP column half> | ||
| - | Befehle | + | Kurze Variante |
| <code python> | <code python> | ||
| - | my_text = "" | + | def text_reverse(text): |
| - | name = " | + | |
| - | name = name + " Kant" # Dem Text einen Text anfügen | + | |
| - | b = name[5] # Bestimmten Buchstaben im Text wählen | + | print(text_reverse(" |
| - | print(b) # Gibt ' | + | |
| </ | </ | ||
| - | |||
| </ | </ | ||
| </ | </ | ||
| - | Die Funktion '' | ||
| + | === NC4 === | ||
| + | <code python> | ||
| + | def replace_spaces(text, | ||
| + | i = 0 | ||
| + | new_text = "" | ||
| + | while i < len(text): | ||
| + | if text[i] == ' ': | ||
| + | new_text = new_text + char | ||
| + | else: | ||
| + | new_text = new_text + text[i] | ||
| + | i = i + 1 | ||
| + | return new_text | ||
| - | </box> | + | print(replace_spaces(" |
| + | </code> | ||
| - | Schreibe eine Funktion '' | + | === NC5 === |
| - | * Zum Beispiel soll der Aufruf '' | + | <code python> |
| - | * **Verwende eine While-Schleife**, | + | import random |
| - | * Hinweis: Python böte mit der [[https:// | + | from gturtle import |
| - | * Teste deine Funktion. | + | tommy = Turtle() |
| + | tommy.hideTurtle() | ||
| + | tommy.clear(" | ||
| - | === NC5 – Abstände ersetzen === | + | def herzblatt(seite, farbe): |
| - | Schreibe eine Funktion '' | + | tommy.setFillColor(farbe) |
| - | * 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. | + | tommy.startPath() |
| + | tommy.forward(seite) | ||
| + | | ||
| + | tommy.left(90) | ||
| + | tommy.rightArc(seite/ | ||
| + | tommy.forward(seite) | ||
| + | tommy.fillPath() | ||
| + | tommy.right(90) | ||
| + | def kleeblatt3(radius): | ||
| + | i = 0 | ||
| + | while i < 3: | ||
| + | herzblatt(radius, | ||
| + | tommy.right(120) | ||
| + | i = i + 1 | ||
| - | === NC6 – Wörter rückwärts | + | def kleeblatt4(radius): |
| - | Schreibe eine Funktion '' | + | i = 0 |
| + | while i < 4: | ||
| + | herzblatt(radius, " | ||
| + | tommy.right(90) | ||
| + | i = i + 1 | ||
| + | |||
| + | i = 1 | ||
| + | while i < 30: | ||
| + | xpos = random.randint(-250,250) | ||
| + | ypos = random.randint(-100, 100) | ||
| + | size = random.randint(20,30) | ||
| + | tommy.setPos(xpos, | ||
| - | == Schritt 1 == | + | if i % 7 == 0: |
| - | Schreibe zuerst eine Funktion '' | + | kleeblatt4(size) |
| + | elif i % 3 == 0: | ||
| + | | ||
| + | else: | ||
| + | tommy.setPenColor(" | ||
| + | tommy.dot(size) | ||
| + | |||
| + | i = i + 1 | ||
| + | </ | ||
| - | == Schritt | + | === NC5 Zusatzaufgabe=== |
| - | Schreibe nun die Funktion '' | + | <code python> |
| + | import random | ||
| + | import math | ||
| + | from gturtle import * | ||
| + | tommy = Turtle() | ||
| + | tommy.hideTurtle() | ||
| + | tommy.clear(" | ||
| + | |||
| + | def herzblatt2(seite, | ||
| + | tommy.setFillColor(farbe1) | ||
| + | tommy.startPath() | ||
| + | tommy.forward(seite) | ||
| + | tommy.rightArc(seite/ | ||
| + | tommy.right(45) | ||
| + | tommy.forward(seite*math.sqrt(2)) | ||
| + | tommy.fillPath() | ||
| + | tommy.setFillColor(farbe2) | ||
| + | tommy.startPath() | ||
| + | tommy.left(135) | ||
| + | tommy.forward(seite) | ||
| + | tommy.leftArc(seite/ | ||
| + | tommy.left(45) | ||
| + | tommy.forward(seite*math.sqrt(2)) | ||
| + | tommy.fillPath() | ||
| + | |||
| + | def kleeblatt3(radius): | ||
| + | i = 0 | ||
| + | while i < 3: | ||
| + | herzblatt2(radius, | ||
| + | tommy.right(15) | ||
| + | i = i + 1 | ||
| + | |||
| + | def kleeblatt4(radius): | ||
| + | i = 0 | ||
| + | while i < 4: | ||
| + | herzblatt2(radius, | ||
| + | tommy.right(45) | ||
| + | i = i + 1 | ||
| + | |||
| + | i = 1 | ||
| + | while i < 30: | ||
| + | xpos = random.randint(-250, | ||
| + | ypos = random.randint(-100, | ||
| + | size = random.randint(20, | ||
| + | tommy.setPos(xpos, | ||
| + | |||
| + | if i % 7 == 0: | ||
| + | kleeblatt4(size) | ||
| + | elif i % 3 == 0: | ||
| + | kleeblatt3(size) | ||
| + | else: | ||
| + | tommy.setPenColor(" | ||
| + | tommy.dot(size) | ||
| + | |||
| + | i = i + 1 | ||
| + | </ | ||
| + | |||
| + | === NC6 === | ||
| + | <code python> | ||
| + | def word_list(text): | ||
| + | words = [] | ||
| + | | ||
| + | i = 0 | ||
| + | while i < len(text): | ||
| + | if text[i] == ' ': # Leerzeichen | ||
| + | words.append(word) | ||
| + | word = "" | ||
| + | else: | ||
| + | word = word + text[i] | ||
| + | i = i + 1 | ||
| + | words.append(word) | ||
| + | return words | ||
| + | |||
| + | def words_reverse(text): | ||
| + | words = word_list(text) | ||
| + | new_text = "" | ||
| + | i = len(words) - 1 | ||
| + | while i >= 0: | ||
| + | new_text = new_text + words[i] + " " | ||
| + | i = i - 1 | ||
| + | return new_text | ||
| + | |||
| + | print(words_reverse(" | ||
| + | </ | ||
| + | ++++ | ||
| + | </ | ||