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 [2024-10-31 09:37] – [Zusatzaufgaben A] hof | gf_informatik:programmieren_ii [2025-11-20 14:22] (aktuell) – hof | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Programmieren II: Python Grundlagen ====== | ====== Programmieren II: Python Grundlagen ====== | ||
| + | < | ||
| + | |||
| ===== Von Struktogrammen zu Python ===== | ===== Von Struktogrammen zu Python ===== | ||
| Zeile 30: | Zeile 31: | ||
| * `name` ist ein **String**, also //Text//. Dafür werden Anführungs- & Schlusszeichen (`'` oder `"`) verwendet. | * `name` ist ein **String**, also //Text//. Dafür werden Anführungs- & Schlusszeichen (`'` oder `"`) verwendet. | ||
| </ | </ | ||
| + | Mehrere Anweisungen bilden zusammen eine **Sequenz**, | ||
| </ | </ | ||
| \\ \\ | \\ \\ | ||
| Zeile 47: | Zeile 49: | ||
| # wird Bedingung wieder neu überprüft. | # wird Bedingung wieder neu überprüft. | ||
| </ | </ | ||
| - | Alle Zeilen Code, die zum Codeblock der Schleife gehören werden // | + | Alle Zeilen Code, die zum Codeblock der Schleife gehören werden // |
| </ | </ | ||
| </ | </ | ||
| \\ \\ | \\ \\ | ||
| - | Mit einer **Verzweigung** | + | Mit einer **Verzweigung** |
| <WRAP group> | <WRAP group> | ||
| Zeile 90: | Zeile 92: | ||
| ==== Variablen, Verzweigungen, | ==== Variablen, Verzweigungen, | ||
| - | Die oben aufgeführten Programmier-Konstrukte werden im [[gf_informatik: | + | Die oben aufgeführten Programmier-Konstrukte werden im [[gf_informatik: |
| ==== Aufgaben A ==== | ==== Aufgaben A ==== | ||
| Zeile 143: | Zeile 145: | ||
| == Teil I== | == Teil I== | ||
| - | <code python> | + | <html>< |
| x = int(input(' | x = int(input(' | ||
| y = int(input(' | y = int(input(' | ||
| print(x + y) | print(x + y) | ||
| - | </code> | + | </bottom-editor></ |
| == Teil II== | == Teil II== | ||
| Einfach: | Einfach: | ||
| - | <code python> | + | <html>< |
| x = int(input(' | x = int(input(' | ||
| y = int(input(' | y = int(input(' | ||
| Zeile 160: | Zeile 162: | ||
| else: | else: | ||
| print(y) | print(y) | ||
| - | </code> | + | </bottom-editor></ |
| === Aufgabe A2 === | === Aufgabe A2 === | ||
| - | <code python> | + | <html>< |
| n = int(input(" | n = int(input(" | ||
| Zeile 172: | Zeile 174: | ||
| print(" | print(" | ||
| - | </code> | + | </bottom-editor></ |
| === Aufgabe A3 === | === Aufgabe A3 === | ||
| == Teil I == | == Teil I == | ||
| - | <code python> | + | <html>< |
| a = int(input(" | a = int(input(" | ||
| b = int(input(" | b = int(input(" | ||
| Zeile 185: | Zeile 187: | ||
| print(c) | print(c) | ||
| print(a) | print(a) | ||
| - | </code> | + | </bottom-editor></ |
| == Teil II == | == Teil II == | ||
| - | <code python> | + | <html>< |
| n = int(input(" | n = int(input(" | ||
| summe = 0 | summe = 0 | ||
| Zeile 196: | Zeile 198: | ||
| summe = summe + zahl | summe = summe + zahl | ||
| print(summe) | print(summe) | ||
| - | </code> | + | </bottom-editor></ |
| === Aufgabe A4 === | === Aufgabe A4 === | ||
| - | TBD | + | < |
| + | zahl = int(input(" | ||
| + | kandidat = 2 | ||
| + | while kandidat < zahl: | ||
| + | a = zahl | ||
| + | b = kandidat | ||
| + | while b <= a: | ||
| + | a = a - b | ||
| + | if a == 0: | ||
| + | print(" | ||
| + | quit() | ||
| + | kandidat = kandidat + 1 | ||
| + | print(" | ||
| + | </ | ||
| ++++ | ++++ | ||
| Zeile 286: | Zeile 302: | ||
| | Division (Nachkommastellen) | `5/2` | `2.5` | | | Division (Nachkommastellen) | `5/2` | `2.5` | | ||
| | Ganzzahldivision | `5//2` | `2` | | | Ganzzahldivision | `5//2` | `2` | | ||
| - | | Hoch (z.B. 2 hoch 5) | `5**2` | `25` | | + | | Hoch (z.B. 5 hoch 2) | `5**2` | `25` | |
| | Wurzel (z.B. Wurzel von 2, sqrt für square-root) | `sqrt(2)` | `1.4142135...` | | | Wurzel (z.B. Wurzel von 2, sqrt für square-root) | `sqrt(2)` | `1.4142135...` | | ||
| | Modulo (Rest der Ganzzahl-Division) | `5%2`| `1` | | | Modulo (Rest der Ganzzahl-Division) | `5%2`| `1` | | ||
| + | |||
| + | **Achtung: | ||
| + | <code python> | ||
| + | from math import * | ||
| + | </ | ||
| ++++Leitfragen| | ++++Leitfragen| | ||
| Zeile 309: | Zeile 330: | ||
| Oft möchte man mehrere Strings und Zahlen zu einem einzelnen String kombinieren. Einzelne Strings können mit `+` zusammengefügt werden. Möchte man eine Zahl-Variable `x` an einen String anfügen, so muss man diese zuerst in einen String umwandeln: `str(x)`. Ein String, der aus mehreren einzelnen Strings und Zahlen zusammengesetzt wurde, nennt man einen **formatierten String**. Wird der String mit print ausgegeben, so spricht man von einer **formatierten Ausgabe**. Beispiel: | Oft möchte man mehrere Strings und Zahlen zu einem einzelnen String kombinieren. Einzelne Strings können mit `+` zusammengefügt werden. Möchte man eine Zahl-Variable `x` an einen String anfügen, so muss man diese zuerst in einen String umwandeln: `str(x)`. Ein String, der aus mehreren einzelnen Strings und Zahlen zusammengesetzt wurde, nennt man einen **formatierten String**. Wird der String mit print ausgegeben, so spricht man von einer **formatierten Ausgabe**. Beispiel: | ||
| - | <code python> | + | <html>< |
| firstname = " | firstname = " | ||
| lastname = " | lastname = " | ||
| print(" | print(" | ||
| - | </code> | + | </bottom-editor></ |
| Beachte, dass der **Plus-Operator** `+` komplett **unterschiedliche Bedeutungen** haben kann, je nach Situation, in der er angewendet wird: | Beachte, dass der **Plus-Operator** `+` komplett **unterschiedliche Bedeutungen** haben kann, je nach Situation, in der er angewendet wird: | ||
| Zeile 321: | Zeile 342: | ||
| Praktisch sind auch die Befehle `s.lower()` und `s.upper()`, | Praktisch sind auch die Befehle `s.lower()` und `s.upper()`, | ||
| + | |||
| + | === Stringformatierung === | ||
| + | Um eine schöne Ausgabe mit verschiedenen Variablen egal welchen Typs zu erhalten, verwendet man Format-Strings. Sobald vor dem ersten Anführungszeichen der Buchstabe `f` steht, können Variablen mittels geschweifter Klammern in den String eingebettet werden. | ||
| + | |||
| + | < | ||
| + | age = 42 | ||
| + | first_name = ' | ||
| + | last_name = ' | ||
| + | |||
| + | print(f' | ||
| + | </ | ||
| Zeile 336: | Zeile 368: | ||
| Mithilfe des **random**-Moduls können ganz einfach Zufallszahlen erzeugt werden. Folgender Code simuliert den Wurf eines Würfels: | Mithilfe des **random**-Moduls können ganz einfach Zufallszahlen erzeugt werden. Folgender Code simuliert den Wurf eines Würfels: | ||
| - | <code python> | + | <html>< |
| import random | import random | ||
| z = random.randint(1, | z = random.randint(1, | ||
| print(z) | print(z) | ||
| - | </code> | + | </bottom-editor></ |
| Beachte, dass die Zufallsfunktion **randint** heisst. Dies steht für ' | Beachte, dass die Zufallsfunktion **randint** heisst. Dies steht für ' | ||
| Zeile 459: | Zeile 492: | ||
| Beispiel: Werden $23$ und $5$ eingegeben, so ist die Ausgabe: "23 : 5 = 4 Rest 3" | Beispiel: Werden $23$ und $5$ eingegeben, so ist die Ausgabe: "23 : 5 = 4 Rest 3" | ||
| - | < | + | < |
| ++++Lösungen Aufgaben B| | ++++Lösungen Aufgaben B| | ||
| Zeile 557: | Zeile 590: | ||
| Kannst du auch eine Spirale zeichnen? Beim Quadrat bleiben Seitenlänge und Winkel immer gleich - welcher der beiden Werte ändert sich bei der Spirale? | Kannst du auch eine Spirale zeichnen? Beim Quadrat bleiben Seitenlänge und Winkel immer gleich - welcher der beiden Werte ändert sich bei der Spirale? | ||
| - | Zeichne erst eine Spirale. Zeichne dann ein zweite Spirale ähnlich wie im Bild. Zeichne dazu mit einer while-Schleife die eine. Versetze dann die Position deiner Turtle mit `setX` und `setY` (oder `setPos`) | + | Zeichne erst eine Spirale. Zeichne dann ein zweite Spirale ähnlich wie im Bild. Zeichne dazu mit einer while-Schleife die eine. Versetze dann die Position deiner Turtle mit `teleport` und zeichne die Zweite Spirale mit einer neuen while-Schleife. |
| {{ : gf_informatik: | {{ : gf_informatik: | ||
| - | < | + | < |
| ++++Tipps| | ++++Tipps| | ||
| Zeile 588: | Zeile 621: | ||
| Schicke das Endresultat per Teams der Lehrperson. | Schicke das Endresultat per Teams der Lehrperson. | ||
| - | < | + | < |
| ++++Lösungen Aufgaben C| | ++++Lösungen Aufgaben C| | ||
| Zeile 596: | Zeile 629: | ||
| <code python> | <code python> | ||
| - | from gturtle | + | from turtle |
| turi = Turtle() | turi = Turtle() | ||
| - | turi.hideTurtle() | + | turi.hideturtle() |
| - | i = 0 | + | sides = 4 |
| - | while i < 4: | + | while sides > 0: |
| - | turi.forward(200) | + | turi.forward(100) |
| turi.left(90) | turi.left(90) | ||
| + | sides = sides - 1 | ||
| </ | </ | ||
| Zeile 609: | Zeile 643: | ||
| <code python> | <code python> | ||
| - | from gturtle | + | from turtle |
| monika = Turtle() | monika = Turtle() | ||
| - | monika.hideTurtle() | + | monika.hideturtle() |
| - | monika.setPos(-200,0) | + | monika.teleport(-100,0) |
| - | i = 0 | + | length |
| - | while i < 39: | + | while length > 0: |
| - | monika.forward(10*i) | + | monika.forward(length) |
| monika.left(90) | monika.left(90) | ||
| - | | + | |
| | | ||
| - | monika.setPos(200,0) | + | monika.teleport(100,0) |
| - | i = 0 | + | length |
| - | while i < 96: | + | while length > 0: |
| - | monika.forward(4*i) | + | monika.forward(length) |
| monika.left(90) | monika.left(90) | ||
| - | | + | |
| </ | </ | ||
| Zeile 632: | Zeile 666: | ||
| <code python> | <code python> | ||
| - | from gturtle | + | from turtle |
| t = Turtle() | t = Turtle() | ||
| - | t.hideTurtle() | + | t.hideturtle() |
| - | i = 0 | + | radius |
| - | l = 5 | + | while radius > 0: |
| - | while i < 150: | + | t.circle(radius, 180) |
| - | t.rightArc(l,20) | + | |
| - | | + | |
| - | i = i + 1 | + | |
| </ | </ | ||
| === Aufgabe C4 === | === Aufgabe C4 === | ||
| - | < | + | <html>< |
| - | </code> | + | </iframe> |
| + | </ | ||
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 658: | Zeile 690: | ||
| Bei diesen Aufgaben geht es um folgendes: | Bei diesen Aufgaben geht es um folgendes: | ||
| - | | + | |
| * etwas längere Programme schreiben | * etwas längere Programme schreiben | ||
| Zeile 706: | Zeile 738: | ||
| == Schritt 2 == | == Schritt 2 == | ||
| - | Erweitere nun dein Mathe-Quiz. In diesem soll die Aufgabe per Zufall generiert werden. Nutze den Zufallsgenerator von Python, um die beiden Zahlen, die addiert werden sollen, zufällig zu wählen. | + | Erweitere nun dein Mathe-Quiz. In diesem soll die Aufgabe per Zufall generiert werden. Nutze den [[# |
| Dazu musst du das // | Dazu musst du das // | ||
| Zeile 739: | Zeile 771: | ||
| 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. | 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. | ||
| - | < | + | < |
| ++++Lösungen Aufgaben D| | ++++Lösungen Aufgaben D| | ||
| Zeile 812: | Zeile 844: | ||
| <code python> | <code python> | ||
| + | import random | ||
| + | |||
| + | questions = 0 | ||
| + | correct = 0 | ||
| + | |||
| + | while questions < 10: | ||
| + | questions = questions + 1 | ||
| + | |||
| + | x = random.randint(1, | ||
| + | y = random.randint(1, | ||
| + | result = x + y | ||
| + | answer = int(input(f' | ||
| + | if answer == result: | ||
| + | correct = correct + 1 | ||
| + | |||
| + | print(f' | ||
| </ | </ | ||
| ++++ | ++++ | ||
| </ | </ | ||