Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
gf_informatik:programmieren_ii [2024-11-01 11:09] hofgf_informatik:programmieren_ii [2025-11-20 14:22] (aktuell) hof
Zeile 1: Zeile 1:
 ====== Programmieren II: Python Grundlagen ====== ====== Programmieren II: Python Grundlagen ======
 +<html><script type="module" src="https://bottom.ch/ksr/ed/bottom-editor.js"></script></html> 
 + 
 ===== 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.
 </WRAP> </WRAP>
 +Mehrere Anweisungen bilden zusammen eine **Sequenz**, die von oben nach unten ausgeführt wird.
 </WRAP> </WRAP>
 \\ \\ \\ \\
Zeile 47: Zeile 49:
     # wird Bedingung wieder neu überprüft.     # wird Bedingung wieder neu überprüft.
 </code> </code>
-Alle Zeilen Code, die zum Codeblock der Schleife gehören werden //gleichmässig eingerückt//. Verwende dazu die //Tab//-Taste oben links. +Alle Zeilen Code, die zum Codeblock der Schleife gehören werden //gleichmässig eingerückt//. Verwende dazu die //Tab//-Taste oben links (s. [[user:hof:copypaste#text-editing|Tastaturbefehle]]
 </WRAP> </WRAP>
 </WRAP> </WRAP>
 \\ \\ \\ \\
-Mit einer **Verzweigung** kann man das Programm eine Entscheidung treffen: Je nach dem, ob eine vorgegebene Bedingung erfüllt ist oder nicht, nimmt der Code einen anderen Verlauf.+Mit einer **Verzweigung** trifft das Programm eine Entscheidung: Je nach dem, ob eine vorgegebene Bedingung erfüllt ist oder nicht, nimmt der Code einen anderen Verlauf.
  
 <WRAP group> <WRAP group>
Zeile 90: Zeile 92:
 ==== Variablen, Verzweigungen, Schleifen in Python ==== ==== Variablen, Verzweigungen, Schleifen in Python ====
  
-Die oben aufgeführten Programmier-Konstrukte werden im [[gf_informatik:programmieren_ii:variablen_verzweigungen_schleifen|Skript]] im Detail erklär.+Die oben aufgeführten Programmier-Konstrukte werden im [[gf_informatik:programmieren_ii:variablen_verzweigungen_schleifen|Skript]] im Detail erklärt.
  
 ==== Aufgaben A ==== ==== Aufgaben A ====
Zeile 143: Zeile 145:
 == Teil I== == Teil I==
  
-<code python>+<html><bottom-editor>
 x = int(input('Gib eine Zahl ein')) x = int(input('Gib eine Zahl ein'))
 y = int(input('Gib eine Zahl ein')) y = int(input('Gib eine Zahl ein'))
 print(x + y) print(x + y)
-</code>+</bottom-editor></html>
  
 == Teil II== == Teil II==
  
 Einfach: Einfach:
-<code python>+<html><bottom-editor>
 x = int(input('Gib eine Zahl ein')) x = int(input('Gib eine Zahl ein'))
 y = int(input('Gib eine Zahl ein')) y = int(input('Gib eine Zahl ein'))
Zeile 160: Zeile 162:
 else: else:
     print(y)     print(y)
-</code>+</bottom-editor></html>
  
  
 === Aufgabe A2 === === Aufgabe A2 ===
-<code python>+<html><bottom-editor>
 n = int(input("Gib Startzahl von Countdown ein!")) n = int(input("Gib Startzahl von Countdown ein!"))
  
Zeile 172: Zeile 174:
  
 print("Los!") print("Los!")
-</code>+</bottom-editor></html>
  
 === Aufgabe A3 === === Aufgabe A3 ===
 == Teil I == == Teil I ==
-<code python>+<html><bottom-editor>
 a = int(input("Gib Zahl ein")) a = int(input("Gib Zahl ein"))
 b = int(input("Gib Zahl ein")) b = int(input("Gib Zahl ein"))
Zeile 185: Zeile 187:
 print(c) print(c)
 print(a) print(a)
-</code>+</bottom-editor></html>
  
 == Teil II == == Teil II ==
-<code python>+<html><bottom-editor>
 n = int(input("Gib Zahl ein")) n = int(input("Gib Zahl ein"))
 summe = 0 summe = 0
Zeile 196: Zeile 198:
     summe = summe + zahl     summe = summe + zahl
 print(summe) print(summe)
-</code>+</bottom-editor></html>
  
 === Aufgabe A4 === === Aufgabe A4 ===
-TBD+<html><bottom-editor> 
 +zahl = int(input("Eine Zahl eingeben: ")) 
 +kandidat = 2 
 +while kandidat < zahl: 
 +    a = zahl 
 +    b = kandidat 
 +    while b <= a: 
 +        a = a - b 
 +    if a == 0: 
 +        print("Zahl ist keine Primzahl"
 +        quit() 
 +    kandidat = kandidat + 1 
 +print("Zahl ist eine Primzahl"
 +</bottom-editor></html> 
  
 ++++ ++++
Zeile 314: 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><bottom-editor>
 firstname = "Albert" firstname = "Albert"
 lastname = "Einstein" lastname = "Einstein"
 print("Full name is " + firstname + " " + lastname + "!") print("Full name is " + firstname + " " + lastname + "!")
-</code>+</bottom-editor></html>
  
 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 326: Zeile 342:
  
 Praktisch sind auch die Befehle `s.lower()` und `s.upper()`, mit denen ein String `s` in kleinbuchstaben, resp. GROSSBUCHSTABEN umgewandelt werden. Praktisch sind auch die Befehle `s.lower()` und `s.upper()`, mit denen ein String `s` in kleinbuchstaben, resp. GROSSBUCHSTABEN umgewandelt werden.
 +
 +=== 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.
 +
 +<html><bottom-editor>
 +age = 42
 +first_name = 'Albert'
 +last_name = 'Einstein'
 +
 +print(f'My name is {first_name} {last_name} and I am {age} years old')
 +</bottom-editor></html>
  
  
Zeile 341: 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><bottom-editor>
 import random import random
  
 z = random.randint(1,6) # bestimmt eine Zufallszahl aus Bereich 1,2,3,4,5,6 z = random.randint(1,6) # bestimmt eine Zufallszahl aus Bereich 1,2,3,4,5,6
 print(z) print(z)
-</code>+</bottom-editor></html> 
 Beachte, dass die Zufallsfunktion **randint** heisst. Dies steht für '**rand**om **int**eger', also 'zufällige ganze Zahl'. Ganze Zahlen sind Zahlen ohne Nachkommastellen, also $\ldots, -3,-2,-1,0,1,2,3,\ldots$. Beachte, dass die Zufallsfunktion **randint** heisst. Dies steht für '**rand**om **int**eger', also 'zufällige ganze Zahl'. Ganze Zahlen sind Zahlen ohne Nachkommastellen, also $\ldots, -3,-2,-1,0,1,2,3,\ldots$.
  
Zeile 464: 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"
  
-<nodisp 2>+<nodisp 1>
 ++++Lösungen Aufgaben B| ++++Lösungen Aufgaben B|
  
Zeile 562: 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 `setXund `setY` (oder `setPos`) und zeichne die Zweite Spirale mit einer neuen while-Schleife.+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:spiralen_duo.png?250 |}} {{ : gf_informatik:spiralen_duo.png?250 |}}
  
-<nodisp 2>+<nodisp 0>
 ++++Tipps| ++++Tipps|
  
Zeile 593: Zeile 621:
 Schicke das Endresultat per Teams der Lehrperson. Schicke das Endresultat per Teams der Lehrperson.
  
-<nodisp 2>+<nodisp 1>
 ++++Lösungen Aufgaben C| ++++Lösungen Aufgaben C|
  
Zeile 601: Zeile 629:
  
 <code python> <code python>
-from gturtle import *+from turtle import *
 turi = Turtle() turi = Turtle()
-turi.hideTurtle()+turi.hideturtle()
  
-0 +sides 4 
-while i < 4+while sides > 0
-    turi.forward(200)+    turi.forward(100)
     turi.left(90)     turi.left(90)
 +    sides = sides - 1
 </code> </code>
  
Zeile 614: Zeile 643:
  
 <code python> <code python>
-from gturtle import *+from turtle import *
  
 monika = Turtle() monika = Turtle()
-monika.hideTurtle()+monika.hideturtle()
  
-monika.setPos(-200,0) +monika.teleport(-100,0) 
-0 +length 100 
-while i < 39+while length > 0
-    monika.forward(10*i)+    monika.forward(length)
     monika.left(90)     monika.left(90)
-    i + 1+    length length - 5
          
-monika.setPos(200,0) +monika.teleport(100,0) 
-0 +length 100 
-while i < 96+while length > 0
-    monika.forward(4*i)+    monika.forward(length)
     monika.left(90)     monika.left(90)
-    i + 1+    length length - 2
 </code> </code>
  
Zeile 637: Zeile 666:
  
 <code python> <code python>
-from gturtle import *+from turtle import *
 t = Turtle() t = Turtle()
-t.hideTurtle()+t.hideturtle()
  
-+radius 50 
-l = 5 +while radius > 0
-while i < 150+    t.circle(radius180
-    t.rightArc(l,20+    radius = radius - 4
-    l + 2 # increase radius  +
-    i = i + 1+
 </code> </code>
  
 === Aufgabe C4 === === Aufgabe C4 ===
  
-<code python+<html><iframe src="https://webtigerpython.ethz.ch/?layout=%5B%22Editor%22%2C%20%22Canvas%22%5D&lang=en&full_screen=false&dark_mode=false&device=-&code=NobwRAdghgtgpmAXGGUCWEB0AHAnmAGjABMoAXKJMAMwCcB7GAAjIFdayAbOJtGbehyYAqADoRxAa3ZkmAXiYAVGdwAUASnHiAzmmI8FARgAMxpuYsBiJgBkAJxADmPfbSaSAP7QBecWnAgmAGU4NDI4HT04AH1acjR6eSYAJnNrIPoANzQ4TiZOB2c3NG1ZYhz8wr8eELCIiFK4bGjdXySAVitgrJy8gHc0WmImcp57Jx5PHz8mbAYmABF2AGMAC0coJy0IPtW0biZdfSYAPiZjRHELdxlMakE%2BqCHVI55hQ6jY%2BPpNQItpDiYbjUMiqACcxl%2B1wBZDuDyexBeUSh%2F1uwNBEJR5leSRxAFpDuFmq0EABfAC6QA%3D" allow="usb;clipboard-write" style="border: 1px solid lightgray; height: 500px; width: 100%"
-</code+</iframe
 +</html>
 ++++ ++++
 </nodisp> </nodisp>
Zeile 663: Zeile 690:
 Bei diesen Aufgaben geht es um folgendes: Bei diesen Aufgaben geht es um folgendes:
  
-   Schleifen mit elif zu programmieren+   Verzweigungen mit elif zu programmieren
    * etwas längere Programme schreiben    * etwas längere Programme schreiben
  
Zeile 711: 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 [[#zufallszahlen|Zufallsgenerator]] von Python, um die beiden Zahlen, die addiert werden sollen, zufällig zu wählen.
  
 Dazu musst du das //random//-Modul einbinden. Dazu musst du das //random//-Modul einbinden.
Zeile 744: 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.
  
-<nodisp 2>+<nodisp 1>
 ++++Lösungen Aufgaben D| ++++Lösungen Aufgaben D|
  
Zeile 817: Zeile 844:
  
 <code python> <code python>
 +import random
 +
 +questions = 0
 +correct = 0
 +
 +while questions < 10:
 +    questions = questions + 1
 +
 +    x = random.randint(1, 20)
 +    y = random.randint(1, 20)
 +    result = x + y
 +    answer = int(input(f'Was ergibt {x} + {y} ?'))
 +    if answer == result:
 +        correct = correct + 1
 +
 +print(f'Du hast {correct} von 10 Aufgaben richtig gelöst!')
 </code> </code>
  
 ++++ ++++
 </nodisp> </nodisp>
  • gf_informatik/programmieren_ii.1730459340.txt.gz
  • Zuletzt geändert: 2024-11-01 11:09
  • von hof