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_ii [2026-04-27 12:38] – hof | gf_informatik:programmieren_ii [2026-04-28 18:02] (aktuell) – hof | ||
|---|---|---|---|
| Zeile 429: | Zeile 429: | ||
| - Ist $1764$ eine Quadratzahl oder nicht? Beispiel für Quadratzahlen: | - Ist $1764$ eine Quadratzahl oder nicht? Beispiel für Quadratzahlen: | ||
| - | + | < | |
| - | === Aufgabe B2: Personendetails === | + | < |
| - | + | < | |
| - | Studiere das [[# | + | assert output_lines() == ["16665", "74120", |
| - | + | </template> | |
| - | Schreibe ein Programm, in welchem eine Person der Reihe nach aufgefordert wird, ihren Namen, Wohnort und Alter (als *Zahl*, nicht String) einzugeben. Die Werte werden in passenden Variablen gespeichert. Die Details zur Person werden dann in einem schön formatierten String ausgegeben, z.B. "Fritz wohnt in Romanshorn und ist 42 Jahre alt!" | + | <template data-type=" |
| - | + | ||
| - | === Aufgabe B3: Verbotenes Wort === | + | |
| - | + | ||
| - | Studiere das [[# | + | |
| - | + | ||
| - | Schreibe ein Programm, in welchem man aufgefordert wird, ein Wort einzugeben. Alle Eingaben sind ok bis auf eine: Die des verbotenen Wortes **"Voldemort"**. Gibt man dieses Wort ein, soll eine deutliche Warnung angezeigt werden mit der Aufforderung, | + | |
| - | + | ||
| - | === Aufgabe B4: Kettenrechnung === | + | |
| - | + | ||
| - | Weise der Variablen `x` den Wert $7$ zu. Verändere nun die Variable nacheinander wie folgt: | + | |
| - | - verdopple sie | + | |
| - | - multipliziere mit 100 | + | |
| - | - dividiere ganzzahlig (keine Nachkommazahlen) durch 80 | + | |
| - | - rechne hoch drei | + | |
| - | - subtrahiere 13 | + | |
| - | - ziehe die Quadratwurzel | + | |
| - | - dividiere durch 10 | + | |
| - | + | ||
| - | Nun solltest du wieder 7 erhalten. | + | |
| - | + | ||
| - | + | ||
| - | === Aufgabe B5: Zähler === | + | |
| - | + | ||
| - | 1. Gib alle Zahlen $0,1,2, \ldots, 9$ mithilfe einer *Schleife* aus. | + | |
| - | 1. Gib nun alle Werte von $0$ bis und mit $99$ aus. Hast du den Code im ersten Schritt richtig programmiert, | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | === Aufgabe B6: Alter === | + | |
| - | + | ||
| - | Berechne dein Alter in Tagen, Stunden und Sekunden. Speichere zuerst dein Alter in Jahren in einer passenden Variablen, z.B. | + | |
| - | <code python> | + | |
| - | my_age_in_years = 14 | + | |
| - | </code> | + | |
| - | Berechne nun das Alter in: | + | |
| - | - Tagen | + | |
| - | - Stunden | + | |
| - | - Sekunden | + | |
| - | + | ||
| - | Effekte wie Schaltjahre oder Schaltsekunden darfst du bei der Berechnung nicht berücksichtigen. | + | |
| - | + | ||
| - | Jeder Wert soll in einer Variablen mit passendem Namen, z.B. `my_age_in_seconds` gespeichert werden. Gib nun die berechneten Werte in formatierten Strings als Sätze aus, z.B.: | + | |
| - | - "I am 14 years old." | + | |
| - | - "I am ... days old." | + | |
| - | | + | |
| - | + | ||
| - | Wichtig! Ändert man nun den Wert von `my_age_in_years`, so müssen sich alle daraus berechneten Werte entsprechend anpassen! | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | === Aufgabe B7: Ganzzahldivision === | + | |
| - | + | ||
| - | Es sollen zwei Zahlen eingegeben werden. Der Code berechnet dann die Ganzzahldivision inklusive Rest der beiden Zahlen und gibt diese in einem formatierten String aus. | + | |
| - | + | ||
| - | Beispiel: Werden $23$ und $5$ eingegeben, so ist die Ausgabe: | + | |
| - | + | ||
| - | <nodisp 1> | + | |
| - | ++++Lösungen Aufgaben B| | + | |
| - | + | ||
| - | ==== Lösungen B ==== | + | |
| - | + | ||
| - | === Aufgabe B1 === | + | |
| - | + | ||
| - | <bottom-editor> | + | |
| from math import sqrt | from math import sqrt | ||
| # 1. | # 1. | ||
| Zeile 508: | Zeile 444: | ||
| # 4. | # 4. | ||
| print(sqrt(1764)) # ja, ist Quadratzahl | print(sqrt(1764)) # ja, ist Quadratzahl | ||
| - | </ | + | </ |
| + | </ | ||
| Bemerkung: Einzelne Werte können auch in Variablen gespeichert werden. Dann kann mit den Variablen gerechnet werden. Es macht den Code aber nur länger. | Bemerkung: Einzelne Werte können auch in Variablen gespeichert werden. Dann kann mit den Variablen gerechnet werden. Es macht den Code aber nur länger. | ||
| - | === Aufgabe B2 === | ||
| - | <bottom-editor> | + | === Aufgabe B2: Personendetails === |
| + | |||
| + | Studiere das [[# | ||
| + | |||
| + | <bottom-exercise id=" | ||
| + | <div slot=" | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | < | ||
| name = input(" | name = input(" | ||
| city = input(" | city = input(" | ||
| age = int(input(" | age = int(input(" | ||
| print(name + " wohnt in " + city + " und ist " + str(age) + " Jahre alt!") | print(name + " wohnt in " + city + " und ist " + str(age) + " Jahre alt!") | ||
| - | </ | + | </ |
| + | </ | ||
| - | === Aufgabe B3 === | + | === Aufgabe B3: Verbotenes Wort === |
| - | <code python> | + | Studiere das [[# |
| - | </ | + | |
| - | === Aufgabe B4 === | + | < |
| + | <div slot=" | ||
| + | </ | ||
| - | <bottom-editor> | + | <template data-type=" |
| + | < | ||
| + | wort = str(input(" | ||
| + | if wort != " | ||
| + | print(" | ||
| + | else: | ||
| + | print(" | ||
| + | </ | ||
| + | </bottom-exercise> | ||
| + | |||
| + | === Aufgabe B4: Kettenrechnung === | ||
| + | |||
| + | < | ||
| + | <div slot=" | ||
| + | Weise der Variablen < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | Nun solltest du wieder 7 erhalten. | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| from math import sqrt | from math import sqrt | ||
| x = 7 | x = 7 | ||
| Zeile 540: | Zeile 514: | ||
| print(x) | print(x) | ||
| - | </ | + | </ |
| + | </ | ||
| - | === Aufgabe B5 === | ||
| - | Zählen von $0$ bis $9$: | + | === Aufgabe B5: Zähler === |
| - | < | + | |
| - | i = 0 | + | |
| - | while i < 10: | + | |
| - | print(i) | + | |
| - | i = i + 1 | + | |
| - | </ | + | |
| - | Zählen von $0$ bis $99$, es muss nur $10$ durch $9$ ersetzt werden. | ||
| - | <html><bottom-editor> | + | <bottom-exercise id=" |
| + | <div slot=" | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| + | < | ||
| i = 0 | i = 0 | ||
| - | while i < 100: | + | while i < 10: # oder 100 |
| print(i) | print(i) | ||
| i = i + 1 | i = i + 1 | ||
| - | </ | + | </ |
| + | </ | ||
| - | Beachte, Code kann auch z.B. mit `while i <= 9` geschrieben werden. Die Notation `while i < 10` hat aber den Vorteil, dass man sofort sieht, wieviele Zahlen ($10$) angezeigt werden. Natürlich muss dafür $i$ bei $0$ starten. | ||
| - | === Aufgabe B6 === | ||
| - | <html><bottom-editor> | + | === Aufgabe B6: Alter === |
| + | |||
| + | <bottom-exercise id=" | ||
| + | <div slot=" | ||
| + | Berechne dein Alter in Tagen, Stunden und Sekunden. Speichere zuerst dein Alter in Jahren in einer passenden Variablen, z.B. | ||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| my_age_in_years = 14 | my_age_in_years = 14 | ||
| Zeile 573: | Zeile 569: | ||
| print(f" | print(f" | ||
| - | print(f" | + | print(f" |
| print(f" | print(f" | ||
| print(f" | print(f" | ||
| - | </ | + | </ |
| + | </ | ||
| - | ++++ | + | |
| - | </nodisp> | + | === Aufgabe B7: Ganzzahldivision === |
| + | |||
| + | < | ||
| + | <div slot=" | ||
| + | Es sollen zwei Zahlen eingegeben werden. Der Code berechnet dann die Ganzzahldivision inklusive Rest der beiden Zahlen und gibt diese in einem formatierten String aus. | ||
| + | |||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | </ | ||
| + | < | ||
| + | zahl1 = int(input(" | ||
| + | zahl2 = int(input(" | ||
| + | quotient = zahl1 // zahl2 | ||
| + | rest = zahl1 % zahl2 | ||
| + | print(f' | ||
| + | </ | ||
| + | </bottom-exercise> | ||
| ==== Aufgaben C ==== | ==== Aufgaben C ==== | ||
| Zeile 589: | Zeile 603: | ||
| === Aufgabe C1 === | === Aufgabe C1 === | ||
| - | Lasse eine Turtle ein Quadrat ablaufen, diesmal aber mithilfe der **while**-Schleife. | + | < |
| + | <div slot=" | ||
| + | Lasse eine Turtle ein Quadrat ablaufen, diesmal aber mithilfe der < | ||
| + | </ | ||
| + | < | ||
| + | from turtle import * | ||
| + | turi = Turtle() | ||
| + | turi.hideturtle() | ||
| + | |||
| + | sides = 4 | ||
| + | while sides > 0: | ||
| + | turi.forward(100) | ||
| + | turi.left(90) | ||
| + | sides = sides - 1 | ||
| + | </ | ||
| + | </ | ||
| === Aufgabe C2 === | === Aufgabe C2 === | ||
| Zeile 606: | Zeile 636: | ||
| ++++ | ++++ | ||
| </ | </ | ||
| - | === Aufgabe C3 === | ||
| - | |||
| - | Zeichne folgende Figur: | ||
| - | |||
| - | {{ : gf_informatik: | ||
| - | |||
| - | === Aufgabe C4 (optional) === | ||
| - | |||
| - | Zeichne folgende Figur: | ||
| - | |||
| - | {{ : gf_informatik: | ||
| - | |||
| - | === Zusatzaufgabe C (Uhr) === | ||
| - | |||
| - | Nutze TurtleGraphics, | ||
| - | * SBB-Uhr: https:// | ||
| - | * Digitaluhr: https:// | ||
| - | |||
| - | Schicke das Endresultat per Teams der Lehrperson. | ||
| - | |||
| - | <nodisp 1> | ||
| - | ++++Lösungen Aufgaben C| | ||
| - | |||
| - | ==== Aufgaben C ==== | ||
| - | |||
| - | === Aufgabe C1 === | ||
| - | |||
| - | < | ||
| - | from turtle import * | ||
| - | turi = Turtle() | ||
| - | turi.hideturtle() | ||
| - | |||
| - | sides = 4 | ||
| - | while sides > 0: | ||
| - | turi.forward(100) | ||
| - | turi.left(90) | ||
| - | sides = sides - 1 | ||
| - | </ | ||
| - | |||
| - | === Aufgabe C2 === | ||
| - | < | + | <bottom-exercise id=" |
| + | < | ||
| from turtle import * | from turtle import * | ||
| Zeile 666: | Zeile 657: | ||
| monika.left(90) | monika.left(90) | ||
| length = length - 2 | length = length - 2 | ||
| - | </ | + | </ |
| + | </ | ||
| === Aufgabe C3 === | === Aufgabe C3 === | ||
| - | < | + | Zeichne folgende Figur: |
| + | |||
| + | {{ : gf_informatik: | ||
| + | |||
| + | <bottom-exercise id=" | ||
| + | < | ||
| from turtle import * | from turtle import * | ||
| t = Turtle() | t = Turtle() | ||
| Zeile 679: | Zeile 676: | ||
| t.circle(radius, | t.circle(radius, | ||
| radius = radius - 4 | radius = radius - 4 | ||
| - | </ | + | </ |
| + | </ | ||
| - | === Aufgabe C4 === | + | === Aufgabe C4 (optional) |
| + | |||
| + | Zeichne folgende Figur: | ||
| + | |||
| + | {{ : gf_informatik: | ||
| - | < | + | <bottom-exercise id=" |
| + | < | ||
| from turtle import * | from turtle import * | ||
| Zeile 699: | Zeile 702: | ||
| kurt.left(90) | kurt.left(90) | ||
| side = side - step_size | side = side - step_size | ||
| - | </ | + | </ |
| - | ++++ | + | </ |
| - | </nodisp> | + | |
| + | === Zusatzaufgabe C (Uhr) === | ||
| + | |||
| + | Nutze TurtleGraphics, | ||
| + | * SBB-Uhr: https:// | ||
| + | * Digitaluhr: https:// | ||
| + | |||
| + | Schicke das Endresultat per Teams der Lehrperson. | ||
| ==== Aufgaben D ==== | ==== Aufgaben D ==== | ||
| Zeile 714: | Zeile 725: | ||
| === Aufgabe D1 === | === Aufgabe D1 === | ||
| + | |||
| + | < | ||
| + | <div slot=" | ||
| Das Programm soll: | Das Programm soll: | ||
| - | * den Benutzer nach dem Alter fragen | + | < |
| - | | + | <li>den Benutzer nach dem Alter fragen |
| - | + | | |
| - | Programmiere die Schnaps, Bier & Sirup Aufgabe mit einer if-elif-else-Verzweigung. | + | </ul> |
| - | + | <p>Programmiere die Schnaps, Bier & Sirup Aufgabe mit einer if-elif-else-Verzweigung. | |
| - | === Aufgabe D2 === | + | </div> |
| - | + | <template data-type=" | |
| - | Die Benutzerin wird aufgefordert, | + | |
| - | === Aufgabe D3 === | + | |
| - | + | ||
| - | == Teil I == | + | |
| - | + | ||
| - | Der Benutzer wird aufgeforder, | + | |
| - | + | ||
| - | * " | + | |
| - | * " | + | |
| - | * " | + | |
| - | * " | + | |
| - | + | ||
| - | Die Turtle zeichnet dann die entsprechende Figur. Vermeide Code-Repetitionen, | + | |
| - | + | ||
| - | Wird etwas anderes eingegeben, so soll eine der folgenden Varianten zum Zug kommen (entscheide selbst): | + | |
| - | + | ||
| - | * Variante 1: einfach eine Rückmeldung, | + | |
| - | * Variante 2: Turtle läuft ein Fragezeichen ab | + | |
| - | + | ||
| - | == Teil II == | + | |
| - | + | ||
| - | Erweitere nun deinen Code wie folgt: | + | |
| - | + | ||
| - | 1. Nach der Eingabe für die Form soll der Benutzer die Farbe für den Stift und die Füllfarbe auswählen können (//Tipp:// `farbe = str(input(" | + | |
| - | 1. Der Stift wird auf die entsprechende Farbe gesetzt: `t.color(farbe)`. | + | |
| - | 1. Flächen füllen mit `t.begin_fill()` und `t.end_fill()`. | + | |
| - | + | ||
| - | === Aufgabe D4 === | + | |
| - | + | ||
| - | == Schritt 1 == | + | |
| - | + | ||
| - | Schreibe ein kleines **Mathe-Quiz-Spiel**. Der Benutzer soll eine Additionsrechnung erhalten, die er lösen soll. Nachdem er das Resultat eingegeben hat, soll er die Rückmeldung erhalten, ob das Resultat korrekt war oder nicht. | + | |
| - | + | ||
| - | == Schritt 2 == | + | |
| - | + | ||
| - | Erweitere nun dein Mathe-Quiz. In diesem soll die Aufgabe per Zufall generiert werden. Nutze den [[# | + | |
| - | + | ||
| - | Dazu musst du das // | + | |
| - | + | ||
| - | <code python> | + | |
| - | import random # schreibe dies ganz oben in deinem Code | + | |
| - | ... | + | |
| - | x = random.randint(0, | + | |
| - | ... | + | |
| - | </code> | + | |
| - | + | ||
| - | == Schritt 3 == | + | |
| - | + | ||
| - | Erweitere nun dein Spiel wie folgt: Insgesamt sollen 10 Runden gespielt werden, wobei in jeder Runde eine Zufallsaufgabe generiert wird (wie in Schritt 2). Es soll mitgezählt werden, wie viele Aufgaben richtig gelöst wurden. Am Schluss soll der Spieler eine entsprechende Rückmeldung erhalten, z.B.: | + | |
| - | '' | + | |
| - | + | ||
| - | == Schritt 4 == | + | |
| - | + | ||
| - | Gleich wie Schritt 3, die Rückmeldung soll aber erweitert werden. Je nach erreichter Anzahl Punkte soll eine andere Meldung erscheinen: | + | |
| - | + | ||
| - | |**Erreichte Punkte**|**Meldung**| | + | |
| - | |10|Perfekt, | + | |
| - | |8-9|Sehr gut, du hast fast alle Aufgaben richtig gelöst!| | + | |
| - | |6-7|Nicht schlecht, du hast mehr als die Hälfte der Aufgaben richtig gelöst!| | + | |
| - | |5|Genügend, | + | |
| - | |1-4|Ungenügend, | + | |
| - | |0|Leider hast du alle Aufgaben falsch gelöst. Zurück in die Primarschule!| | + | |
| - | + | ||
| - | + | ||
| - | === Aufgabe D5 (optional) === | + | |
| - | + | ||
| - | Mache eine Kopie von deinem Mathe-Quiz. Erweitere deinen Code nun so, dass neben der Addition auch Subtraktionen und Multiplikationen vorkommen können. Die Division sollte weggelassen werden, da es dort schnell Aufgaben gibt, die man kaum lösen kann. Welche der drei Operationen an der Reihe ist, soll ebenfalls der Zufall entscheiden. | + | |
| - | + | ||
| - | <nodisp 1> | + | |
| - | ++++Lösungen Aufgaben D| | + | |
| - | + | ||
| - | ==== Aufgaben D ==== | + | |
| - | + | ||
| - | === Aufgabe D1 === | + | |
| - | + | ||
| - | < | + | |
| age = int(input(" | age = int(input(" | ||
| Zeile 806: | Zeile 744: | ||
| else: | else: | ||
| print(" | print(" | ||
| - | </ | + | </ |
| + | </ | ||
| === Aufgabe D2 === | === Aufgabe D2 === | ||
| - | <html><bottom-editor> | + | <bottom-exercise id=" |
| + | <div slot=" | ||
| + | Die Benutzerin wird aufgefordert, | ||
| + | </ | ||
| + | < | ||
| x = int(input(" | x = int(input(" | ||
| Zeile 819: | Zeile 762: | ||
| else: | else: | ||
| print(" | print(" | ||
| - | </ | + | </ |
| + | </ | ||
| === Aufgabe D3 === | === Aufgabe D3 === | ||
| - | < | + | == Teil I == |
| + | |||
| + | <bottom-exercise id=" | ||
| + | <div slot=" | ||
| + | Der Benutzer wird aufgefordert, | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | |||
| + | < | ||
| + | < | ||
| + | < | ||
| + | </ | ||
| + | </ | ||
| + | < | ||
| from turtle import * | from turtle import * | ||
| Zeile 859: | Zeile 825: | ||
| turi.end_fill() | turi.end_fill() | ||
| - | </ | + | </ |
| + | </ | ||
| + | |||
| + | == Teil II == | ||
| + | |||
| + | Erweitere nun deinen Code wie folgt: | ||
| + | |||
| + | 1. Nach der Eingabe für die Form soll der Benutzer die Farbe für den Stift und die Füllfarbe auswählen können (//Tipp:// `farbe = str(input(" | ||
| + | 1. Der Stift wird auf die entsprechende Farbe gesetzt: `t.color(farbe)`. | ||
| + | 1. Flächen füllen mit `t.begin_fill()` und `t.end_fill()`. | ||
| === Aufgabe D4 === | === Aufgabe D4 === | ||
| - | <html>< | + | == Schritt 1 == |
| + | |||
| + | Schreibe ein kleines **Mathe-Quiz-Spiel**. Der Benutzer soll eine Additionsrechnung erhalten, die er lösen soll. Nachdem er das Resultat eingegeben hat, soll er die Rückmeldung erhalten, ob das Resultat korrekt war oder nicht. | ||
| + | |||
| + | == Schritt 2 == | ||
| + | |||
| + | Erweitere nun dein Mathe-Quiz. In diesem soll die Aufgabe per Zufall generiert werden. Nutze den [[# | ||
| + | |||
| + | Dazu musst du das // | ||
| + | |||
| + | <code python> | ||
| + | import random # schreibe dies ganz oben in deinem Code | ||
| + | ... | ||
| + | x = random.randint(0, | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | == Schritt 3 == | ||
| + | |||
| + | Erweitere nun dein Spiel wie folgt: Insgesamt sollen 10 Runden gespielt werden, wobei in jeder Runde eine Zufallsaufgabe generiert wird (wie in Schritt 2). Es soll mitgezählt werden, wie viele Aufgaben richtig gelöst wurden. Am Schluss soll der Spieler eine entsprechende Rückmeldung erhalten, z.B.: | ||
| + | '' | ||
| + | |||
| + | == Schritt 4 == | ||
| + | |||
| + | Gleich wie Schritt 3, die Rückmeldung soll aber erweitert werden. Je nach erreichter Anzahl Punkte soll eine andere Meldung erscheinen: | ||
| + | |||
| + | |**Erreichte Punkte**|**Meldung**| | ||
| + | |10|Perfekt, | ||
| + | |8-9|Sehr gut, du hast fast alle Aufgaben richtig gelöst!| | ||
| + | |6-7|Nicht schlecht, du hast mehr als die Hälfte der Aufgaben richtig gelöst!| | ||
| + | |5|Genügend, | ||
| + | |1-4|Ungenügend, | ||
| + | |0|Leider hast du alle Aufgaben falsch gelöst. Zurück in die Primarschule!| | ||
| + | |||
| + | <bottom-exercise id=" | ||
| + | < | ||
| import random | import random | ||
| Zeile 880: | Zeile 890: | ||
| print(f' | print(f' | ||
| - | </ | + | </ |
| + | </ | ||
| + | |||
| + | === Aufgabe D5 (optional) === | ||
| + | |||
| + | Mache eine Kopie von deinem Mathe-Quiz. Erweitere deinen Code nun so, dass neben der Addition auch Subtraktionen und Multiplikationen vorkommen können. Die Division sollte weggelassen werden, da es dort schnell Aufgaben gibt, die man kaum lösen kann. Welche der drei Operationen an der Reihe ist, soll ebenfalls der Zufall entscheiden. | ||
| - | ++++ | ||
| - | </ | ||