Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:programmieren_iv_gra [2025-04-19 10:21] – [Auftrag 3 – Begriffe kennenlernen] gra | gf_informatik:programmieren_iv_gra [2025-05-09 10:23] (aktuell) – [NC2 – Crimson & Clover] gra | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
++++Lernziele (hidden):| | ++++Lernziele (hidden):| | ||
- | | + | |
+ | * Funktionen definieren: Mit/Ohne Arugmente, mit/ohne Rückgabewerte. | ||
+ | * Begriffe erklären. | ||
+ | * Logische Operatoren korrekt verwenden. | ||
++++ | ++++ | ||
Zeile 11: | Zeile 14: | ||
===== - Einführung ===== | ===== - Einführung ===== | ||
- | Du kennst Variablen – darin kannst du einen Wert speichern. Und du kennst Listen – darin kannst du mehrere Werte speichern. Aber du hast dich villeicht schon gefragt: <color # | + | Du kennst Variablen – darin kannst du einen Wert speichern. Und du kennst Listen – darin kannst du mehrere Werte speichern. Aber du hast dich villeicht schon gefragt: <color # |
=== Auftrag 1 – Bereits bekannte Funktionen anschauen === | === Auftrag 1 – Bereits bekannte Funktionen anschauen === | ||
- | In Python sind viele Funktionen schon eingebaut. Du hast ein paar davon schon oft verwendet – zun Beispiel: | + | In Python sind viele Funktionen schon eingebaut. Du hast ein paar davon schon oft verwendet – zum Beispiel |
<code python> | <code python> | ||
print(" | print(" | ||
- | input(" | + | name = input(" |
- | len("Apfel") | + | n_letters = len(name) |
+ | print(f"Dein Name hat {n_letters} Buchstaben.") | ||
</ | </ | ||
- | == Aufgabe | + | == Aufgabe == |
- | Einzeln: Beantworte | + | Zu zweit: Besprecht |
- | - Was ist allen Funktionen gemeinsam? | + | - Was ist allen drei Funktionen gemeinsam? |
- | - Worin unterscheiden sich die Funkionen? | + | - Worin unterscheiden sich die Funktionen // |
- | == Aufgabe B == | + | ===== - Theorie ===== |
- | Kopiere obige Codezeilen nach [[https:// | + | |
- | | + | |
- | - Statt der Länge des Wortes " | + | |
- | - Diese Länge soll in einer Variable gespeichert werden. | + | |
- | - Am Ende soll eine Nachricht in folgendem Format ausgegeben werden: <color # | + | |
- | Du solltest jetzt ein **vierzeilgies Programm** haben. Jede Zeile enthält eine Funktion. | + | |
- | * Schaue dir deine Antworten zu Aufgabe A nochmals an und ergänze sie, wenn dir noch mehr auffällt. | + | |
- | === Auftag | + | === Auftrag |
- | Mit folgendem Code zeichnet die Turlte ein Sechseck (Hexagon): | + | Mit folgendem Code zeichnet die Turtle einen violeten Punkt, dreht 90 Grad nach rechts und fährt um 40 Pixel weiter: |
+ | <WRAP group> | ||
+ | <WRAP column twothirds> | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | karl = Turtle() | ||
+ | |||
+ | karl.setPenColor(" | ||
+ | karl.dot(40) | ||
+ | karl.right(90) | ||
+ | karl.forward(40) | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP column third> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Die letzten vier Codezeilen aus obigem Code packen wir nun in eine Funktion namens " | ||
<WRAP group> | <WRAP group> | ||
Zeile 44: | Zeile 59: | ||
from gturtle import * | from gturtle import * | ||
karl = Turtle() | karl = Turtle() | ||
- | side_count = 0 | + | |
- | while side_count < 6: | + | def purple_dot(): |
- | karl.forward(50) | + | karl.setPenColor(" |
- | karl.right(60) | + | karl.dot(40) |
- | | + | karl.right(90) |
+ | | ||
+ | |||
+ | purple_dot() | ||
+ | purple_dot() | ||
+ | purple_dot() | ||
+ | purple_dot() | ||
</ | </ | ||
</ | </ | ||
<WRAP column third> | <WRAP column third> | ||
- | {{: | + | {{: |
</ | </ | ||
</ | </ | ||
- | Wir möchten jetz **sechs** Sechsecke zeichnen, sodass in der Mitte ein siebtes entsteht ([[https://youtu.be/ | + | **Beachte:** |
+ | * Um eine Funktion zu erstellen, benötigst du das Schüsselwort '' | ||
+ | * Dann folgt der Funktionsname mit anschliessenden Klammern und ein Doppelpunkt: | ||
+ | * alle Codezeilen, die nun eingerückt folgen, gehören zu dieser Funktion. | ||
+ | * Du musst die Funktion | ||
+ | |||
+ | == Aufgabe == | ||
+ | <WRAP group> | ||
+ | <WRAP column twothirds> | ||
+ | |||
+ | Kopiere obigen Code mit der Funktion " | ||
+ | |||
+ | * Die Funktion soll neu " | ||
+ | * Dein Code soll sechs blaue 20-Pixel-Punkte im Sechseck zeichnen: Siehe Bild: | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP column third> | ||
+ | {{: | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === Auftrag 3 – Eine Funktion mit Argument erstellen und verwenden === | ||
+ | |||
+ | Wir können einer Funktion auch ein **Argument** (oder mehrere) mitgeben. Argumente kommen **in die Klammern** rein. In folgendem Beispiel wird als Argument die Farbe übergeben. | ||
<WRAP group> | <WRAP group> | ||
Zeile 65: | Zeile 111: | ||
karl = Turtle() | karl = Turtle() | ||
- | # Funktion | + | def my_dot(color): |
- | # Alles darunter Eingerückte gehört | + | karl.setPenColor(color) |
+ | karl.dot(40) | ||
+ | karl.right(90) | ||
+ | karl.forward(40) | ||
+ | |||
+ | my_dot(" | ||
+ | my_dot(" | ||
+ | my_dot(" | ||
+ | my_dot(" | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP column third> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | == Aufgabe == | ||
+ | <WRAP group> | ||
+ | <WRAP column twothirds> | ||
+ | |||
+ | Kopiere obigen Code und verändere ihn wie folgt: | ||
+ | |||
+ | * Die Funktion hat ein Argument namens dot_size. Es wird also die Grösse des Punkts mitgegeben. | ||
+ | * Dein Code zeichnet vier purpurne((" | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP column third> | ||
+ | {{: | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | === Auftrag 4 – Eine Funktion mit Argumenten und Rückgabewert erstellen und verwenden === | ||
+ | Folgende Funktion namens '' | ||
+ | <code python> | ||
+ | def schnitt(zahl1, zahl2): | ||
+ | summe = zahl1 + zahl2 | ||
+ | return summe/2 | ||
+ | |||
+ | print(schnitt(4, | ||
+ | </ | ||
+ | |||
+ | **Beachte: | ||
+ | * Das Schlüsselwort '' | ||
+ | - Die Funktion wird sofort verlassen. | ||
+ | - Die Funktion gibt den Wert zurück, der hinter '' | ||
+ | * Wenn kein Wert hinter return steht, gibt die Funktion '' | ||
+ | |||
+ | |||
+ | == Aufgabe == | ||
+ | Erstelle eine Funktion namens '' | ||
+ | |||
+ | === Auftrag 5 – Wichtige Begriffe erklären === | ||
+ | Besprecht zu zweit die folgenden Fragen zu Funktionen. Vergleicht anschliessend mit den Lösungen unten. Lest diese //genau// und fragt bei Bedarf nach! | ||
+ | - Was ist ein **Argument**? | ||
+ | - Was ist ein **Rückgabewert**? | ||
+ | - Was ist eine **Definition**? | ||
+ | - Was ist ein **Aufruf**? | ||
+ | |||
+ | |||
+ | ===== - Aufgaben N – Funktionen ===== | ||
+ | In folgenden Aufgaben sollst du Funktionen erstellen (= definieren) und verwenden (=aufrufen). | ||
+ | |||
+ | ==== Aufgaben NA – Einfache Funktionen (Unterprogramme) ohne Rückgabewerte ==== | ||
+ | Die folgenden Aufgaben behandeln Funktionen mit und ohne Argumente – aber ohne Rückgabewerte. | ||
+ | |||
+ | === NA1 – Blumen === | ||
+ | Schreibe eine Funktion namens '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Hinweis: Eine Blume wie im Bild kann aus sechs 30-px-Punkten ('' | ||
+ | |||
+ | === NA2 – Bunte Blumen === | ||
+ | Ändere die Funktion '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === NA3 – Blumenreihen === | ||
+ | == Schritt 1 == | ||
+ | Ändere die Funktion '' | ||
+ | <code python> | ||
+ | x = 0 | ||
+ | while x < 600: | ||
+ | blume(" | ||
+ | x = x + 100 | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | == Schritt 2 == | ||
+ | Lösche den vorhin ergänzten Code (die vier Zeilen mit der while-Schleife) und füge stattdessen folgende Codezeilen unterhalb deiner Funktion '' | ||
+ | <code python> | ||
+ | colors = [" | ||
+ | xpositions = [0, | ||
+ | ypositions = [0, | ||
+ | </ | ||
+ | |||
+ | Schreibe einen möglichst kurzen Code mit while-Schleife, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === NA4 – Wer hat die schönste Blumenwiese? | ||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP column twothirds> | ||
+ | Nutze deine Funktion '' | ||
+ | * Die Hintergrundfarbe kannst du mit der Turtle-Funktion '' | ||
+ | * Die Farbcodes finden sich [[https:// | ||
+ | * Erstelle eine Liste mit verschiedenen Farbnamen. Daraus wählst du später für jede Blume ein zufälliges Element. | ||
+ | * Wähle die x-Positionen im Bereich -250 bis 250, und die y-Positionen im Bereich -100 bis 100, sodass ein Bild im Breitformat entsteht. | ||
+ | * Mit der Funktion '' | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP column third> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ==== Aufgaben NB – Funktionen (Unterprogramme) mit Rückgabewerten ==== | ||
+ | |||
+ | === NB1 – Franken in Kronen === | ||
+ | Schreibe eine Funktion | ||
+ | Teste deine Funktion. | ||
+ | |||
+ | === NB2 – Maximalwert aus zwei Zahlen === | ||
+ | Schreibe eine Funktion '' | ||
+ | |||
+ | === NB3 – Pfannkuchen === | ||
+ | <WRAP group> | ||
+ | <WRAP column twothirds> | ||
+ | Schreibe eine Funktion '' | ||
+ | Hier die Mengen für eine Person: | ||
+ | * 50 g Mehl | ||
+ | * 0.125 Teelöffel Salz | ||
+ | * 1 dl Milch | ||
+ | * 1 Ei | ||
+ | **Hinweis: | ||
+ | |||
+ | Teste deine Funktion mit folgendem Code: | ||
+ | |||
+ | </ | ||
+ | <WRAP column third> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <code python> | ||
+ | n = input(" | ||
+ | mehl, salz, milch, ei = zutaten_pfannkuchen(n) | ||
+ | print(f" | ||
+ | </ | ||
+ | |||
+ | === NB4 – Minimalwert aus drei Zahlen === | ||
+ | |||
+ | <box 100% round green|**Logische Verknüpfungen**> | ||
+ | |||
+ | Mit den Schlüsselworten '' | ||
+ | |||
+ | <code python> | ||
+ | a = input(" | ||
+ | b = input(" | ||
+ | |||
+ | if a > 0 and b > 0: | ||
+ | print(" | ||
+ | |||
+ | if a > 0 or b > 0: | ||
+ | print(" | ||
+ | |||
+ | if not(a > 0 or b > 0): | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | * Erste Verzweigung: | ||
+ | * Zweite Verzweigung: | ||
+ | * Dritte Verzweigung: | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | Schreibe eine Funktion '' | ||
+ | |||
+ | <code python> | ||
+ | print(min_von_drei(1, | ||
+ | print(min_von_drei(5, | ||
+ | print(min_von_drei(9, | ||
+ | </ | ||
+ | |||
+ | === NB5 – Maximalwert aus Liste === | ||
+ | Schreibe eine Funktion '' | ||
+ | |||
+ | <code python> | ||
+ | list1 = [11, 16, 5, 12, 3, 13] | ||
+ | list2 = [13, 2, 5, 10, 1, 17, 5, 25] | ||
+ | list3 = [-25, -13, -3, -33] | ||
+ | </ | ||
+ | |||
+ | === NB6 – Gerade oder ungerade === | ||
+ | Schreibe eine Funktion '' | ||
+ | |||
+ | <code python> | ||
+ | zahl = input(" | ||
+ | |||
+ | if ist_gerade(zahl): | ||
+ | print(" | ||
+ | else: | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | **Frage:** Bisher hatten wir in einer if-Verzeigung immer eine Bedingung mit Vergleichsoperatoren stehen. Zum Beispiel //x > 4// oder //x % 2 == 0// etc. In diesem Code steht bloss die Funktion ist_gerade(). Wie erklärst du, dass hier keine Bedingung nötig ist? Bespreche deine Antwort mit der Lehrperson. | ||
+ | |||
+ | === NB7 – Pizzabestellung === | ||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP column twothirds> | ||
+ | |||
+ | Schreibe eine Funktion '' | ||
+ | |||
+ | </ | ||
+ | <WRAP column third> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | **Frage:** Wenn ihr zu viert seid: Bestellt ihr besser 4 oder 5 Pizzas? | ||
+ | |||
+ | === NA8 – Nächte im Hotel === | ||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP column twothirds> | ||
+ | Schreibe eine Funktion '' | ||
+ | Preise **pro Nacht**: | ||
+ | ^ Klasse | ||
+ | | Standard | ||
+ | | Ausblick | ||
+ | | Balkon | ||
+ | |||
+ | **Hinweise: | ||
+ | * Deine Funktion muss zuerst die Anzahl Einzel- und Doppelzimmer berechnen (ausgehend von der Anzahl Personen): Es ist maximal ein Einzelzimmer nötig. | ||
+ | * Falls für die Klasse etwas anderes als " | ||
+ | |||
+ | </ | ||
+ | <WRAP column third> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | Teste deine Funktion mit folgendem Code: | ||
+ | <code python> | ||
+ | # Reise 1: 2 Personen, 2 Nächte, Standard: Preis = 320 | ||
+ | print(hotel_preise(2, | ||
+ | # Reise 2: 5 Personen, 3 Nächte, Ausblick: Preis = 1500 | ||
+ | print(hotel_preise(5, | ||
+ | # Reise 3: 6 Personen, 4 Nächte, Balkon: Preis = 3120 | ||
+ | print(hotel_preise(6, | ||
+ | # Reise 4: 1 Person, 1 Nacht, falsche Angabe: Preis = 200 | ||
+ | print(hotel_preise(1, | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Aufgaben NC – Funktionen mit und ohne Rückgabewerte ==== | ||
+ | === NC1 – Hexagons are the Bestagons === | ||
+ | - Schreibe eine Funktion '' | ||
+ | - Verwende anschliessend | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Wenn du das geschafft hast, darfst du folgendes Video schauen: [[https:// | ||
+ | |||
+ | === NC2 – Crimson & Clover === | ||
+ | Crimson & Clover ist der Titel [[https:// | ||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | == Schritt 1 – Herzblatt == | ||
+ | <WRAP group> | ||
+ | <WRAP column half> | ||
+ | Schreibe eine Funktion '' | ||
+ | * Das Argument '' | ||
+ | * Das Argument '' | ||
+ | * Verwende die Turtle-Funktionen '' | ||
+ | * Teste die Funktion. | ||
+ | |||
+ | </ | ||
+ | <WRAP column quater> | ||
+ | |||
+ | {{: | ||
+ | |||
+ | </ | ||
+ | <WRAP column quater> | ||
+ | {{: | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | == Schritt 2 – Kleeblätter == | ||
+ | <WRAP group> | ||
+ | <WRAP column half> | ||
+ | Schreibe eine weitere Funktionen '' | ||
+ | * Verwende die eben erstellte Funktion herzblatt. | ||
+ | * Das Argument '' | ||
+ | * Teste die Funktion. | ||
+ | |||
+ | Wiederhole Schritt 2 für eine Funktion '' | ||
+ | |||
+ | </ | ||
+ | <WRAP column quater> | ||
+ | {{: | ||
+ | </ | ||
+ | <WRAP column quater> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | == Schritt 3 – Crimson & Clover == | ||
+ | <WRAP group> | ||
+ | <WRAP column half> | ||
+ | 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. | ||
+ | </ | ||
+ | |||
+ | <WRAP column half> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | == Zusatzaufgabe == | ||
+ | <WRAP group> | ||
+ | <WRAP column half> | ||
+ | |||
+ | Verbessere deine Herzblatt-Funktion: | ||
+ | * Um ein Herz auf diese Weise zu zeichnen, benötigst du die Funktion '' | ||
+ | <code python> | ||
+ | import math | ||
+ | print(math.sqrt(4)) | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP column half> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ===== - Aufgaben O – Funktionen für Fortgeschrittene ===== | ||
+ | === O1 – Weitere Nächte im Hotel === | ||
+ | |||
+ | <WRAP group> | ||
+ | <WRAP column twothirds> | ||
+ | Schreibe eine neue Funktion '' | ||
+ | Preise **pro Nacht**: | ||
+ | ^ Tarif (Anreisetag) | ||
+ | | Sonntag bis Donnerstag | ||
+ | | Freitag und Samstag | ||
+ | |||
+ | </ | ||
+ | <WRAP column third> | ||
+ | {{: | ||
+ | </ | ||
+ | </ | ||
+ | **Hinweise: | ||
+ | * Deine Funktion muss zuerst die Anzahl Einzel- und Doppelzimmer berechnen (ausgehend von der Anzahl Personen): Es ist maximal ein Einzelzimmer nötig. | ||
+ | * Die Angabe des Anreisetags erfolgt als Text, z. B. " | ||
+ | * Erstelle in der Funktion eine Liste '' | ||
+ | * Wenn du die Position des Anreisetag weisst, kannst du für jede Nacht beurteilen, ob Wochenendtarif gilt oder nicht – aber wie? Versuche es erst ohne Hilfe von KI. | ||
+ | |||
+ | Teste deine Funktion mit folgendem Code: | ||
+ | <code python> | ||
+ | # Reise 1: 2 Personen, 2 Nächte ab Freitag: Preis = 400 | ||
+ | print(hotel_preise2(2, | ||
+ | # Reise 2: 3 Personen, 4 Nächte ab Mittwoch: Preis = 1220 | ||
+ | print(hotel_preise2(3, | ||
+ | # Reise 3: 1 Person, 10 Nächte ab Donnerstag: Preis = 1320 | ||
+ | print(hotel_preise2(1, | ||
+ | </ | ||
+ | |||
+ | === O2 – RGB-Palette === | ||
+ | - Schreibe eine Funktion '' | ||
+ | * Die drei Argumente können jeweils einen Wert zwischen 0 und 5 einnehmen: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | - Ergänze einen Code, der alle 216 Farben, die mit dieser Funktion gezeichnet werden können, in einer Farbpallete wie im Bild unten aufzeichnet. | ||
+ | {{: | ||
+ | * In jedem der sechs Quadrate nimmt der Blau-Anteil jeweils von links nach rechts und der Grün-Anteil von oben nach unten zu. | ||
+ | * Über die sechs Quadrate hinweg nimmt der Rot-Anteil von links nach rechts zu. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== - Lösungen ===== | ||
+ | |||
+ | **Achtung: | ||
+ | |||
+ | <nodisp 1> | ||
+ | |||
+ | ++++Lösungen zu den Aufträgen (Einstieg und Theorie)| | ||
+ | |||
+ | === Auftrag 1 === | ||
+ | - Alle Funktionen haben Klammern. | ||
+ | - Die Funktionen '' | ||
+ | |||
+ | === Auftrag 2 === | ||
+ | <WRAP group> | ||
+ | <WRAP column half> | ||
+ | Variante 1 | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | karl = Turtle() | ||
+ | |||
+ | def blue_dot(): | ||
+ | karl.setPenColor(" | ||
+ | karl.dot(20) | ||
+ | karl.right(60) | ||
+ | karl.forward(20) | ||
+ | |||
+ | blue_dot() | ||
+ | blue_dot() | ||
+ | blue_dot() | ||
+ | blue_dot() | ||
+ | blue_dot() | ||
+ | blue_dot() | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | <WRAP column half> | ||
+ | Variante 2 | ||
+ | |||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | karl = Turtle() | ||
+ | |||
+ | def blue_dot(): | ||
+ | karl.setPenColor(" | ||
+ | karl.dot(20) | ||
+ | karl.right(60) | ||
+ | karl.forward(20) | ||
+ | |||
+ | count = 0 | ||
+ | while count < 6: | ||
+ | blue_dot() | ||
+ | count = count + 1 | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | === Auftrag 3 === | ||
+ | |||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | karl = Turtle() | ||
+ | |||
+ | def my_dot(dot_size): | ||
+ | karl.setPenColor(" | ||
+ | karl.dot(dot_size) | ||
+ | karl.right(90) | ||
+ | karl.forward(40) | ||
+ | |||
+ | my_dot(20) | ||
+ | my_dot(30) | ||
+ | my_dot(40) | ||
+ | my_dot(30) | ||
+ | </ | ||
+ | |||
+ | === Auftrag 4 === | ||
+ | |||
+ | <code python> | ||
+ | # Funktion erstellen: | ||
+ | def quader(l, b, h): | ||
+ | return l * b * h | ||
+ | |||
+ | #Funktion dreimal aufrufen und Resultat ausgeben: | ||
+ | print(quader(2, | ||
+ | print(quader(3, | ||
+ | print(quader(4, | ||
+ | </ | ||
+ | |||
+ | === Auftrag 5 === | ||
+ | |||
+ | - Ein **Argument** ist das, was der Funktion // | ||
+ | - Ein **Rückgabewert** ist das, was die Funktion // | ||
+ | - In der **Defintion** erstellst du die Funktion. Hierzu benötigst du das Schlüsselwort '' | ||
+ | - Im **Aufruf** rufst du die Funktion auf. Eine bereits definierte oder bekannte Funktion kannst du beliebig oft aufrufen. | ||
+ | |||
+ | ++++ | ||
+ | </ | ||
+ | |||
+ | <nodisp 2> | ||
+ | ++++Lösungen zu Aufgaben NA:| | ||
+ | === NA1 === | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | flori = Turtle() | ||
+ | |||
+ | def blume(): | ||
+ | flori.setPenColor(" | ||
+ | i = 0 | ||
+ | while i < 6: | ||
+ | flori.rightArc(20, | ||
+ | flori.dot(30) | ||
+ | i = i + 1 | ||
+ | |||
+ | blume() | ||
+ | flori.setPos(60, | ||
+ | blume() | ||
+ | flori.setPos(100, | ||
+ | blume() | ||
+ | </ | ||
+ | |||
+ | === NA2 === | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | flori = Turtle() | ||
+ | |||
+ | def blume(color): | ||
+ | flori.setPenColor(color) | ||
+ | i = 0 | ||
+ | while i < 6: | ||
+ | flori.rightArc(20, | ||
+ | flori.dot(30) | ||
+ | i = i + 1 | ||
+ | |||
+ | blume(" | ||
+ | flori.setPos(60, | ||
+ | blume(" | ||
+ | flori.setPos(80, | ||
+ | blume(" | ||
+ | flori.setPos(140, | ||
+ | blume(" | ||
+ | </ | ||
+ | |||
+ | === NA3 – Schritt 1 === | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | flori = Turtle() | ||
+ | |||
+ | def blume(color, | ||
+ | flori.setPenColor(color) | ||
+ | flori.setPos(xpos, | ||
+ | i = 0 | ||
+ | while i < 6: | ||
+ | flori.rightArc(20, | ||
+ | flori.dot(30) | ||
+ | i = i + 1 | ||
+ | x = 0 | ||
+ | while x < 600: | ||
+ | blume(" | ||
+ | x = x + 100 | ||
+ | </ | ||
+ | |||
+ | === NA3 – Schritt 2 === | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | flori = Turtle() | ||
+ | |||
+ | def blume(color, | ||
+ | flori.setPenColor(color) | ||
+ | flori.setPos(xpos, | ||
+ | i = 0 | ||
+ | while i < 6: | ||
+ | flori.rightArc(20, | ||
+ | flori.dot(30) | ||
+ | i = i + 1 | ||
+ | |||
+ | colors = [" | ||
+ | xpositions = [0, | ||
+ | ypositions = [0, | ||
+ | |||
+ | i = 0 | ||
+ | while i < 6: | ||
+ | blume(colors[i], | ||
+ | i = i + 1 | ||
+ | </ | ||
+ | |||
+ | === NA4 === | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | flori = Turtle() | ||
+ | flori.hideTurtle() | ||
+ | flori.clear(" | ||
+ | |||
+ | def blume(color, | ||
+ | flori.setPenColor(color) | ||
+ | flori.setPos(xpos, | ||
+ | i = 0 | ||
+ | while i < 6: | ||
+ | flori.rightArc(20, | ||
+ | flori.dot(30) | ||
+ | i = i + 1 | ||
+ | |||
+ | colors = [" | ||
+ | |||
+ | i = 0 | ||
+ | while i < 20: | ||
+ | col_pos = random.randint(0, | ||
+ | blume(colors[col_pos], | ||
+ | i = i + 1 | ||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++Lösungen zu Aufgaben NB:| | ||
+ | === NB1 === | ||
+ | <code python> | ||
+ | def chf_in_nok(chf): | ||
+ | return chf * 12.57 | ||
+ | |||
+ | print(chf_in_nok(3)) | ||
+ | </ | ||
+ | |||
+ | === NB2 === | ||
+ | <code python> | ||
+ | def max_von_zwei(a, | ||
+ | if a > b: | ||
+ | return a | ||
+ | else: | ||
+ | return b | ||
+ | |||
+ | print(max_von_zwei(2, | ||
+ | print(max_von_zwei(3, | ||
+ | </ | ||
+ | |||
+ | === NB3 === | ||
+ | <code python> | ||
+ | def zutaten_pfannkuchen(n): | ||
+ | return n * 50, n * 0.125, n, n | ||
+ | |||
+ | n = input(" | ||
+ | mehl, salz, milch, ei = zutaten_pfannkuchen(n) | ||
+ | print(f" | ||
+ | </ | ||
+ | |||
+ | === NB4 === | ||
+ | <code python> | ||
+ | def min_von_drei(a, | ||
+ | if a < b and a < c: | ||
+ | return a | ||
+ | elif b < a and b < c: | ||
+ | return b | ||
+ | else: | ||
+ | return c | ||
+ | |||
+ | print(min_von_drei(1, | ||
+ | print(min_von_drei(5, | ||
+ | print(min_von_drei(9, | ||
+ | </ | ||
+ | |||
+ | === NB5 === | ||
+ | <code python> | ||
+ | list1 = [11, 16, 5, 12, 3, 13] | ||
+ | list2 = [13, 2, 5, 10, 1, 17, 5, 25] | ||
+ | list3 = [-25, -13, -3, -33] | ||
+ | |||
+ | def max_in_liste(liste): | ||
+ | max_wert = liste[0] | ||
+ | i = 1 | ||
+ | while i < len(liste): | ||
+ | if liste[i] > max_wert: | ||
+ | max_wert = liste[i] | ||
+ | i = i + 1 | ||
+ | return max_wert | ||
+ | |||
+ | print(max_in_liste(list1)) | ||
+ | print(max_in_liste(list2)) | ||
+ | print(max_in_liste(list3)) | ||
+ | </ | ||
+ | |||
+ | === NB6 === | ||
+ | <code python> | ||
+ | def ist_gerade(n): | ||
+ | if n % 2 == 0: | ||
+ | return True | ||
+ | return False | ||
+ | |||
+ | print(ist_gerade(4)) | ||
+ | print(ist_gerade(5)) | ||
+ | </ | ||
+ | |||
+ | === NB7 === | ||
+ | <code python> | ||
+ | def pizza_lieferung(personen): | ||
+ | if personen * 12 >= 50: | ||
+ | return personen * 12 | ||
+ | else: | ||
+ | return personen * 12 + 20 | ||
+ | |||
+ | print(pizza_lieferung(4)) | ||
+ | print(pizza_lieferung(5)) | ||
+ | </ | ||
+ | |||
+ | === NB8 === | ||
+ | <code python> | ||
+ | |||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++Lösungen zu Aufgaben NC:| | ||
+ | |||
+ | === NC1 === | ||
+ | <code python> | ||
+ | from gturtle import* | ||
+ | karl = Turtle() | ||
def hexagon(): | def hexagon(): | ||
side_count = 0 | side_count = 0 | ||
Zeile 76: | Zeile 835: | ||
hex_count = 0 | hex_count = 0 | ||
while hex_count < 6: | while hex_count < 6: | ||
- | hexagon() | + | hexagon() |
karl.forward(50) | karl.forward(50) | ||
karl.left(60) | karl.left(60) | ||
hex_count = hex_count + 1 | hex_count = hex_count + 1 | ||
</ | </ | ||
- | </ | ||
- | <WRAP column third> | + | === NC2 === |
- | {{: | + | <code python> |
- | </ | + | import random |
- | === Auftrag 3 – Begriffe kennenlernen === | + | from gturtle import * |
- | Argument, Rückgabewert, | + | tommy = Turtle() |
+ | tommy.hideTurtle() | ||
+ | tommy.clear(" | ||
+ | def herzblatt(seite, | ||
+ | tommy.setFillColor(farbe) | ||
+ | tommy.startPath() | ||
+ | tommy.forward(seite) | ||
+ | tommy.rightArc(seite/ | ||
+ | tommy.left(90) | ||
+ | tommy.rightArc(seite/ | ||
+ | tommy.forward(seite) | ||
+ | tommy.fillPath() | ||
+ | tommy.right(90) | ||
- | ===== - Aufgaben N ===== | + | def kleeblatt3(radius): |
+ | i = 0 | ||
+ | while i < 3: | ||
+ | herzblatt(radius, | ||
+ | tommy.right(120) | ||
+ | i = i + 1 | ||
- | ===== - Lösungen ===== | + | def kleeblatt4(radius): |
+ | i = 0 | ||
+ | while i < 4: | ||
+ | herzblatt(radius, | ||
+ | tommy.right(90) | ||
+ | i = i + 1 | ||
+ | |||
+ | i = 1 | ||
+ | while i < 30: | ||
+ | xpos = random.randint(-250, | ||
+ | ypos = random.randint(-100, 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 | ||
+ | </ | ||
+ | === NC3 === | ||
+ | <code python> | ||
+ | </ | ||
+ | === NC4 === | ||
+ | <code python> | ||
+ | |||
+ | </ | ||
+ | ++++ | ||
+ | |||
+ | ++++Lösungen zu Aufgaben O:| | ||
+ | |||
+ | === O1 === | ||
+ | <code python> | ||
+ | def hotel_preise2(personen, | ||
+ | doppelzimmer = personen // 2 | ||
+ | einzelzimmer = personen % 2 | ||
+ | tage = [" | ||
+ | starttag = tage.index(anreisetag) | ||
+ | preis = 0 | ||
+ | nacht = 0 | ||
+ | | ||
+ | while nacht < naechte: | ||
+ | aktueller_tag_index = (starttag + nacht) % 7 | ||
+ | aktueller_tag = tage[aktueller_tag_index] | ||
+ | | ||
+ | if aktueller_tag in [" | ||
+ | preis = preis + doppelzimmer * 200 + einzelzimmer * 150 | ||
+ | else: | ||
+ | preis = preis + doppelzimmer * 140 + einzelzimmer * 120 | ||
+ | | ||
+ | nacht = nacht + 1 | ||
+ | | ||
+ | return preis | ||
+ | |||
+ | # Reise 1: 2 Personen, 2 Nächte ab Freitag: Preis = 400 | ||
+ | print(hotel_preise2(2, | ||
+ | # Reise 2: 3 Personen, 4 Nächte ab Mittwoch: Preis = 1220 | ||
+ | print(hotel_preise2(3, | ||
+ | # Reise 3: 1 Person, 10 Nächte ab Donnerstag: Preis = 1320 | ||
+ | print(hotel_preise2(1, | ||
+ | </ | ||
+ | |||
+ | === O2 === | ||
+ | <code python> | ||
+ | from gturtle import * | ||
+ | paula = Turtle() | ||
+ | |||
+ | def rgb_dot(red, | ||
+ | hexcodes = [" | ||
+ | colorcode = hexcodes[red] + hexcodes[green] + hexcodes[blue] | ||
+ | paula.setPenColor(colorcode) | ||
+ | paula.dot(40) | ||
+ | | ||
+ | paula.right(90) | ||
+ | xpos = 0 | ||
+ | ypos = 0 | ||
+ | |||
+ | for r in range(6): | ||
+ | |||
+ | for g in range(6): | ||
+ | | ||
+ | for b in range(6): | ||
+ | paula.setPos(xpos, | ||
+ | rgb_dot(r, | ||
+ | xpos = xpos + 50 | ||
+ | | ||
+ | xpos = xpos - 300 | ||
+ | ypos = ypos - 50 | ||
+ | | ||
+ | xpos = xpos + 350 | ||
+ | ypos = 0 | ||
+ | </ | ||
+ | |||
+ | === O3 === | ||
+ | <code python> | ||
+ | |||
+ | </ | ||
+ | |||
+ | === O4 === | ||
+ | <code python> | ||
+ | |||
+ | </ | ||
+ | ++++ | ||
+ | </ |