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 [2025-10-06 12:29] – [Stringformatierung] hof | gf_informatik:programmieren_ii [2026-04-08 18:16] (aktuell) – hof | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Programmieren II: Python Grundlagen ====== | ====== Programmieren II: Python Grundlagen ====== | ||
| + | < | ||
| + | |||
| ===== Von Struktogrammen zu Python ===== | ===== Von Struktogrammen zu Python ===== | ||
| Zeile 144: | 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 161: | 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 173: | 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 186: | 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 197: | 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 315: | 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 331: | Zeile 346: | ||
| 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. | 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. | ||
| - | <code python> | + | <html>< |
| age = 42 | age = 42 | ||
| first_name = ' | first_name = ' | ||
| Zeile 337: | Zeile 352: | ||
| print(f' | print(f' | ||
| - | </code> | + | </bottom-editor></ |
| Zeile 353: | 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 483: | Zeile 499: | ||
| === Aufgabe B1 === | === Aufgabe B1 === | ||
| - | <code python> | + | <html>< |
| + | from math import sqrt | ||
| # 1. | # 1. | ||
| print(7777+8888) | print(7777+8888) | ||
| Zeile 492: | Zeile 509: | ||
| # 4. | # 4. | ||
| print(sqrt(1764)) # ja, ist Quadratzahl | print(sqrt(1764)) # ja, ist Quadratzahl | ||
| - | </code> | + | </bottom-editor></ |
| 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 === | === Aufgabe B2 === | ||
| - | <code python> | + | <html>< |
| name = input(" | name = input(" | ||
| city = input(" | city = input(" | ||
| - | age = 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!") | ||
| - | </code> | + | </bottom-editor></ |
| === Aufgabe B3 === | === Aufgabe B3 === | ||
| Zeile 511: | Zeile 529: | ||
| === Aufgabe B4 === | === Aufgabe B4 === | ||
| - | <code python> | + | <html>< |
| + | from math import sqrt | ||
| x = 7 | x = 7 | ||
| x = x*2 | x = x*2 | ||
| Zeile 522: | Zeile 541: | ||
| print(x) | print(x) | ||
| - | </code> | + | </bottom-editor></ |
| === Aufgabe B5 === | === Aufgabe B5 === | ||
| Zählen von $0$ bis $9$: | Zählen von $0$ bis $9$: | ||
| - | <code python> | + | <html>< |
| i = 0 | i = 0 | ||
| while i < 10: | while i < 10: | ||
| print(i) | print(i) | ||
| i = i + 1 | i = i + 1 | ||
| - | </code> | + | </bottom-editor></ |
| Zählen von $0$ bis $99$, es muss nur $10$ durch $9$ ersetzt werden. | Zählen von $0$ bis $99$, es muss nur $10$ durch $9$ ersetzt werden. | ||
| - | <code python> | + | |
| + | <html>< | ||
| i = 0 | i = 0 | ||
| while i < 100: | while i < 100: | ||
| print(i) | print(i) | ||
| i = i + 1 | i = i + 1 | ||
| - | </code> | + | </bottom-editor></ |
| 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. | 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 === | === Aufgabe B6 === | ||
| - | <code python> | + | <html>< |
| my_age_in_years = 14 | my_age_in_years = 14 | ||
| Zeile 551: | Zeile 573: | ||
| my_age_in_seconds = my_age_in_hours * 3600 | my_age_in_seconds = my_age_in_hours * 3600 | ||
| - | print(" | + | print(f"I am {my_age_in_years} years old." |
| - | print(" | + | print(f"I am {my_age_in_days} day old." |
| - | print(" | + | print(f"I am {my_age_in_hours} hours old." |
| - | print(" | + | print(f"I am {my_age_in_seconds} seconds old." |
| - | </code> | + | </bottom-editor></ |
| ++++ | ++++ | ||
| Zeile 574: | Zeile 596: | ||
| 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 612: | Zeile 634: | ||
| === Aufgabe C1 === | === Aufgabe C1 === | ||
| - | <code python> | + | <html>< |
| - | 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) | ||
| - | </code> | + | sides = sides - 1 |
| + | </bottom-editor></ | ||
| === Aufgabe C2 === | === Aufgabe C2 === | ||
| - | <code python> | + | <html>< |
| - | 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) | ||
| - | | + | |
| - | </code> | + | </bottom-editor></ |
| === Aufgabe C3 === | === Aufgabe C3 === | ||
| - | <code python> | + | <html>< |
| - | 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) | + | |
| - | | + | </bottom-editor></ |
| - | i = i + 1 | + | |
| - | </code> | + | |
| === Aufgabe C4 === | === Aufgabe C4 === | ||
| - | <code python> | + | <html><bottom-editor layout=" |
| - | </code> | + | from turtle import * |
| + | |||
| + | kurt = Turtle() | ||
| + | kurt.speed(8) | ||
| + | |||
| + | side = 100 # Länge der kürzeren Seite | ||
| + | side_ratio = 2 # Soviel länger ist die längere Seite | ||
| + | step_size = 5 # Soviel wird die Länge kürzer pro Durchgang | ||
| + | while side > 0: | ||
| + | kurt.forward(side * side_ratio) | ||
| + | kurt.left(90) | ||
| + | kurt.forward(side) | ||
| + | kurt.left(90) | ||
| + | side = side - step_size | ||
| + | </ | ||
| ++++ | ++++ | ||
| </ | </ | ||
| Zeile 675: | Zeile 710: | ||
| 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 723: | Zeile 758: | ||
| == 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 763: | Zeile 798: | ||
| === Aufgabe D1 === | === Aufgabe D1 === | ||
| - | <code python> | + | <html>< |
| age = int(input(" | age = int(input(" | ||
| Zeile 772: | Zeile 807: | ||
| else: | else: | ||
| print(" | print(" | ||
| - | </code> | + | </bottom-editor></ |
| === Aufgabe D2 === | === Aufgabe D2 === | ||
| - | <code python> | + | <html>< |
| x = int(input(" | x = int(input(" | ||
| Zeile 785: | Zeile 820: | ||
| else: | else: | ||
| print(" | print(" | ||
| - | </code> | + | </bottom-editor></ |
| === Aufgabe D3 === | === Aufgabe D3 === | ||
| - | <code python> | + | <html>< |
| from turtle import * | from turtle import * | ||
| turi = Turtle() | turi = Turtle() | ||
| + | turi.speed(8) | ||
| turi.hideturtle() | turi.hideturtle() | ||
| Zeile 824: | Zeile 860: | ||
| turi.end_fill() | turi.end_fill() | ||
| - | </code> | + | </bottom-editor></ |
| === Aufgabe D4 === | === Aufgabe D4 === | ||
| - | <code python> | + | <html>< |
| - | </code> | + | 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' | ||
| + | </ | ||
| ++++ | ++++ | ||
| </ | </ | ||