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 [2025-10-23 05:33] – [Zusatzaufgaben A] hofgf_informatik:programmieren_ii [2026-04-28 18:02] (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 135: Zeile 134:
 Übersetze die Struktogramme der [[gf_informatik:algorithmen_i#aufgabe_c4_zusatzaufgabeteilertest|Zusatzaufgaben C4 / C5]] auf Python. Übersetze die Struktogramme der [[gf_informatik:algorithmen_i#aufgabe_c4_zusatzaufgabeteilertest|Zusatzaufgaben C4 / C5]] auf Python.
  
-<nodisp 2>+<nodisp 1>
  
 ++++Lösungen Aufgaben A| ++++Lösungen Aufgaben A|
Zeile 145: Zeile 144:
 == Teil I== == Teil I==
  
-<code python>+<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>
  
 == Teil II== == Teil II==
  
 Einfach: Einfach:
-<code python>+<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 162: Zeile 161:
 else: else:
     print(y)     print(y)
-</code>+</bottom-editor>
  
  
 === Aufgabe A2 === === Aufgabe A2 ===
-<code python>+<bottom-editor>
 n = int(input("Gib Startzahl von Countdown ein!")) n = int(input("Gib Startzahl von Countdown ein!"))
  
Zeile 174: Zeile 173:
  
 print("Los!") print("Los!")
-</code>+</bottom-editor>
  
 === Aufgabe A3 === === Aufgabe A3 ===
 == Teil I == == Teil I ==
-<code python>+<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 187: Zeile 186:
 print(c) print(c)
 print(a) print(a)
-</code>+</bottom-editor>
  
 == Teil II == == Teil II ==
-<code python>+<bottom-editor>
 n = int(input("Gib Zahl ein")) n = int(input("Gib Zahl ein"))
 summe = 0 summe = 0
Zeile 198: Zeile 197:
     summe = summe + zahl     summe = summe + zahl
 print(summe) print(summe)
-</code>+</bottom-editor>
  
 === Aufgabe A4 === === Aufgabe A4 ===
-<html><bottom-editor>+<bottom-editor>
 zahl = int(input("Eine Zahl eingeben: ")) zahl = int(input("Eine Zahl eingeben: "))
 kandidat = 2 kandidat = 2
Zeile 214: Zeile 213:
     kandidat = kandidat + 1     kandidat = kandidat + 1
 print("Zahl ist eine Primzahl") print("Zahl ist eine Primzahl")
-</bottom-editor></html>+</bottom-editor>
  
  
Zeile 330: Zeile 329:
 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:
  
-<html><bottom-editor>+<bottom-editor>
 firstname = "Albert" firstname = "Albert"
 lastname = "Einstein" lastname = "Einstein"
 print("Full name is " + firstname + " " + lastname + "!") print("Full name is " + firstname + " " + lastname + "!")
-</bottom-editor></html>+</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 346: Zeile 345:
 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.
  
-<html><bottom-editor>+<bottom-editor>
 age = 42 age = 42
 first_name = 'Albert' first_name = 'Albert'
Zeile 352: Zeile 351:
  
 print(f'My name is {first_name} {last_name} and I am {age} years old') print(f'My name is {first_name} {last_name} and I am {age} years old')
-</bottom-editor></html>+</bottom-editor>
  
  
Zeile 368: Zeile 367:
  
 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:
-<html><bottom-editor>+<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)
-</bottom-editor></html>+</bottom-editor>
  
 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 430: Zeile 429:
    - Ist $1764$ eine Quadratzahl oder nicht? Beispiel für Quadratzahlen: $49$, weil $7^2 = 49$    - Ist $1764$ eine Quadratzahl oder nicht? Beispiel für Quadratzahlen: $49$, weil $7^2 = 49$
  
- +<bottom-exercise id="b1"> 
-=== Aufgabe B2: Personendetails === +<template data-type="starter"></template> 
- +<template data-type="test"> 
-Studiere das [[#strings_zeichenketten|Kapitel zu Strings.]] +assert output_lines() == ["16665""74120""49""42.0"] 
- +</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="solution"> 
- +from math import sqrt
-=== Aufgabe B3: Verbotenes Wort === +
- +
-Studiere das [[#vergleichsoperatoren|Kapitel zu Vergleichsoperatoren.]] +
- +
-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, dieses Wort nie wieder einzugeben! Ansonsten erhält man die Rückmeldung, dass das Wort in Ordnung sei. Verwende dazu den Ungleich-Operator. +
- +
-=== 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 Nachkommazahlendurch 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. +
-   1Gib nun alle Werte von $0$ bis und mit $99$ aus. Hast du den Code im ersten Schritt richtig programmiert, musst du nur einen *einzigen Wert* ändern. +
- +
- +
- +
-=== 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: "23 : 5 = 4 Rest 3" +
- +
-<nodisp 2+
-++++Lösungen Aufgaben B| +
- +
-==== Lösungen B ==== +
- +
-=== Aufgabe B1 === +
- +
-<code python>+
 # 1. # 1.
 print(7777+8888) print(7777+8888)
Zeile 508: Zeile 444:
 # 4. # 4.
 print(sqrt(1764)) # ja, ist Quadratzahl print(sqrt(1764)) # ja, ist Quadratzahl
-</code>+</template> 
 +</bottom-exercise> 
 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 === 
  
-<code python>+=== Aufgabe B2: Personendetails === 
 + 
 +Studiere das [[#strings_zeichenketten|Kapitel zu Strings.]] 
 + 
 +<bottom-exercise id="b2"> 
 +<div slot="prompt">Schreibe ein Programm, in welchem eine Person der Reihe nach aufgefordert wird, ihren Namen, Wohnort und Alter (als <em>Zahl</em>, 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!" 
 +</div> 
 + 
 +<template data-type="starter"></template> 
 +<template data-type="solution">
 name = input("Wie heisst du?") name = input("Wie heisst du?")
 city = input("Wo wohnst du?") city = input("Wo wohnst du?")
-age  = input("Wie alt bist du?")+age  = int(input("Wie alt bist du?"))
 print(name + " wohnt in " + city + " und ist " + str(age) + " Jahre alt!") print(name + " wohnt in " + city + " und ist " + str(age) + " Jahre alt!")
-</code>+</template> 
 +</bottom-exercise>
  
-=== Aufgabe B3 ===+=== Aufgabe B3: Verbotenes Wort ===
  
-<code python> +Studiere das [[#vergleichsoperatoren|Kapitel zu Vergleichsoperatoren.]]
-</code>+
  
-=== Aufgabe B4 ===+<bottom-exercise id="b3"> 
 +<div slot="prompt">Schreibe ein Programm, in welchem man aufgefordert wird, ein Wort einzugeben. Alle Eingaben sind ok bis auf eine: Die des verbotenen Wortes <b>"Voldemort"</b>. Gibt man dieses Wort ein, soll eine deutliche Warnung angezeigt werden mit der Aufforderung, dieses Wort nie wieder einzugeben! Ansonsten erhält man die Rückmeldung, dass das Wort in Ordnung sei. Verwende dazu den Ungleich-Operator! 
 +</div> 
 + 
 +<template data-type="starter"></template> 
 +<template data-type="solution"> 
 +wort = str(input("Gib ein Wort ein!")) 
 +if wort != "Voldemort": 
 +    print("OK"
 +else: 
 +    print("Das Wort ist bööööööse!"
 +</template> 
 +</bottom-exercise> 
 + 
 +=== Aufgabe B4: Kettenrechnung ===
  
-<code python>+<bottom-exercise id="b4"> 
 +<div slot="prompt"> 
 +Weise der Variablen <code>x</code> den Wert <code>7</code> zu. Verändere nun die Variable nacheinander wie folgt: 
 +<ul> 
 +   <li>verdopple sie 
 +   <li>multipliziere mit 100 
 +   <li>dividiere ganzzahlig (keine Nachkommazahlen) durch 80 
 +   <li>rechne hoch drei 
 +   <li>subtrahiere 13 
 +   <li>ziehe die Quadratwurzel 
 +   <li>dividiere durch 10 
 +</ul> 
 +Nun solltest du wieder 7 erhalten. 
 +</div> 
 +<template data-type="starter"></template> 
 +<template data-type="solution"> 
 +from math import sqrt
 x = 7 x = 7
 x = x*2 x = x*2
Zeile 538: Zeile 514:
  
 print(x) print(x)
-</code>+</template> 
 +</bottom-exercise>
  
-=== Aufgabe B5 === 
  
-Zählen von $0bis $9$: +=== Aufgabe B5: Zähler === 
-<code python>+ 
 + 
 +<bottom-exercise id="b5"> 
 +<div slot="prompt"> 
 +<ol> 
 +   <li>Gib alle Zahlen 0,1,2,&hellip;, 9 mithilfe einer <em>Schleife</em> aus. 
 +   <li>Gib nun alle Werte von 0 bis und mit 99 aus. Hast du den Code im ersten Schritt richtig programmiert, musst du nur einen *einzigen Wert* ändern. 
 +</ol> 
 +</div> 
 +<template data-type="starter"></template> 
 +<template data-type="solution">
 i = 0 i = 0
-while i < 10:+while i < 10: # oder 100
     print(i)     print(i)
     i = i + 1     i = i + 1
-</code> +</template
-Zählen von $0$ bis $99$, es muss nur $10$ durch $9$ ersetzt werden. +</bottom-exercise
-<code python> +
-i = 0 +
-while i < 100: +
-    print(i) +
-    i = i + 1 +
-</code+
-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 === 
  
-<code python>+=== Aufgabe B6: Alter === 
 + 
 +<bottom-exercise id="b6"> 
 +<div slot="prompt"> 
 +Berechne dein Alter in Tagen, Stunden und Sekunden. Speichere zuerst dein Alter in Jahren in einer passenden Variablen, z.B. 
 +<code>my_age_in_years = 14</code> 
 + 
 +<p>Berechne nun das Alter in Tagen, Stunden und Sekunden. 
 + 
 +<p>Effekte wie Schaltjahre oder Schaltsekunden musst du bei der Berechnung nicht berücksichtigen. 
 + 
 +<p>Jeder Wert soll in einer Variablen mit passendem Namen, z.B. <code>my_age_in_seconds</code> gespeichert werden. Gib nun die berechneten Werte in formatierten Strings als Sätze aus, z.B.: 
 +<ul> 
 +   <li>"I am 14 years old." 
 +   <li>"I am ... days old." 
 +   <li>"..." 
 +</ul> 
 + 
 +<p>Wichtig! Ändert man nun den Wert von <code>my_age_in_years</code>, so müssen sich alle daraus berechneten Werte entsprechend anpassen! 
 +</div> 
 +<template data-type="starter">my_age_in_years = 14 
 +</template> 
 +<template data-type="solution">
 my_age_in_years = 14 my_age_in_years = 14
    
Zeile 567: Zeile 568:
 my_age_in_seconds = my_age_in_hours * 3600 my_age_in_seconds = my_age_in_hours * 3600
  
-print("I am " + str(my_age_in_years) + " years old."+print(f"I am {my_age_in_yearsyears old."
-print("I am " + str(my_age_in_days) + " day old."+print(f"I am {my_age_in_days} days old."
-print("I am " + str(my_age_in_hours) + " hours old."+print(f"I am {my_age_in_hourshours old."
-print("I am " + str(my_age_in_seconds) + " seconds old."+print(f"I am {my_age_in_secondsseconds old."
-</code>+</template> 
 +</bottom-exercise>
  
-++++ + 
-</nodisp>+=== Aufgabe B7: Ganzzahldivision === 
 + 
 +<bottom-exercise id="b7"> 
 +<div slot="prompt"> 
 +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.  
 + 
 +<p>Beispiel: Werden 23 und 5 eingegeben, so ist die Ausgabe: "23 : 5 = 4 Rest 3" 
 +</div> 
 +<template data-type="starter"> 
 +</template> 
 +<template data-type="solution"> 
 +zahl1 = int(input("Erste Zahl?")) 
 +zahl2 = int(input("Zweite Zahl?")) 
 +quotient = zahl1 // zahl2 
 +rest = zahl1 % zahl2 
 +print(f'{zahl1} : {zahl2} = {quotient} Rest {rest}'
 +</template> 
 +</bottom-exercise>
  
 ==== Aufgaben C ==== ==== Aufgaben C ====
Zeile 584: Zeile 603:
 === Aufgabe C1 === === Aufgabe C1 ===
  
-Lasse eine Turtle ein Quadrat ablaufen, diesmal aber mithilfe der **while**-Schleife.+<bottom-exercise id="c1" layout="canvas" showswitcher> 
 +<div slot="prompt"> 
 +Lasse eine Turtle ein Quadrat ablaufen, diesmal aber mithilfe der <code>while</code>-Schleife. 
 +</div> 
 +<template data-type="solution"> 
 +from turtle import * 
 +turi = Turtle() 
 +turi.hideturtle() 
 + 
 +sides = 4 
 +while sides > 0: 
 +    turi.forward(100) 
 +    turi.left(90) 
 +    sides = sides - 1 
 +</template> 
 +</bottom-exercise> 
  
 === Aufgabe C2 === === Aufgabe C2 ===
Zeile 594: Zeile 629:
 {{ : gf_informatik:spiralen_duo.png?250 |}} {{ : gf_informatik:spiralen_duo.png?250 |}}
  
-<nodisp 2>+<nodisp 0>
 ++++Tipps| ++++Tipps|
  
Zeile 601: Zeile 636:
 ++++ ++++
 </nodisp> </nodisp>
 +
 +<bottom-exercise id="c2" layout="canvas" showswitcher>
 +<template data-type="solution">
 +from turtle import *
 +
 +monika = Turtle()
 +monika.hideturtle()
 +
 +monika.teleport(-100,0)
 +length = 100
 +while length > 0:
 +    monika.forward(length)
 +    monika.left(90)
 +    length = length - 5
 +    
 +monika.teleport(100,0)
 +length = 100
 +while length > 0:
 +    monika.forward(length)
 +    monika.left(90)
 +    length = length - 2
 +</template>
 +</bottom-exercise>
 +
 === Aufgabe C3 === === Aufgabe C3 ===
  
Zeile 606: Zeile 665:
  
 {{ : gf_informatik:spirale.png?200 |}} {{ : gf_informatik:spirale.png?200 |}}
 +
 +<bottom-exercise id="c3" layout="canvas" showswitcher>
 +<template data-type="solution">
 +from turtle import *
 +t = Turtle()
 +t.hideturtle()
 +
 +radius = 50
 +while radius > 0:
 +    t.circle(radius, 180)
 +    radius = radius - 4
 +</template>
 +</bottom-exercise>
  
 === Aufgabe C4 (optional) === === Aufgabe C4 (optional) ===
Zeile 612: Zeile 684:
  
 {{ : gf_informatik:spirale_rechteckig.png?250 |}} {{ : gf_informatik:spirale_rechteckig.png?250 |}}
 +
 +<bottom-exercise id="c4" layout="canvas" showswitcher>
 +<template data-type="solution">
 +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
 +</template>
 +</bottom-exercise>
  
 === Zusatzaufgabe C (Uhr) === === Zusatzaufgabe C (Uhr) ===
Zeile 621: Zeile 713:
 Schicke das Endresultat per Teams der Lehrperson. Schicke das Endresultat per Teams der Lehrperson.
  
-<nodisp 2> 
-++++Lösungen Aufgaben C| 
- 
-==== Aufgaben C ==== 
- 
-=== Aufgabe C1 === 
- 
-<code python> 
-from gturtle import * 
-turi = Turtle() 
-turi.hideTurtle() 
- 
-i = 0 
-while i < 4: 
-    turi.forward(200) 
-    turi.left(90) 
-</code> 
- 
-=== Aufgabe C2 === 
- 
-<code python> 
-from gturtle import * 
- 
-monika = Turtle() 
-monika.hideTurtle() 
- 
-monika.setPos(-200,0) 
-i = 0 
-while i < 39: 
-    monika.forward(10*i) 
-    monika.left(90) 
-    i = i + 1 
-     
-monika.setPos(200,0) 
-i = 0 
-while i < 96: 
-    monika.forward(4*i) 
-    monika.left(90) 
-    i = i + 1 
-</code> 
- 
-=== Aufgabe C3 === 
- 
-<code python> 
-from gturtle import * 
-t = Turtle() 
-t.hideTurtle() 
- 
-i = 0 
-l = 5 
-while i < 150: 
-    t.rightArc(l,20) 
-    l = l + 2 # increase radius  
-    i = i + 1 
-</code> 
- 
-=== Aufgabe C4 === 
- 
-<code python> 
-</code> 
- 
-++++ 
-</nodisp> 
  
 ==== Aufgaben D ==== ==== Aufgaben D ====
Zeile 691: Zeile 720:
 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
  
  
 === Aufgabe D1 === === Aufgabe D1 ===
 +
 +<bottom-exercise id="d1">
 +<div slot="prompt">
 Das Programm soll: Das Programm soll:
-  * den Benutzer nach dem Alter fragen +<ul> 
-  Ausgeben, ob der Benutzer Schnaps, Bier oder Sirup trinken darf.+  <li>den Benutzer nach dem Alter fragen 
 +  <li>Ausgeben, ob der Benutzer Schnaps, Bier oder Sirup trinken darf. 
 +</ul> 
 +<p>Programmiere die Schnaps, Bier & Sirup Aufgabe mit einer if-elif-else-Verzweigung. 
 +</div> 
 +<template data-type="solution"> 
 +age = int(input("Gib dein Alter ein"))
  
-Programmiere die SchnapsBier Sirup Aufgabe mit einer if-elif-else-Verzweigung.+if age >= 18: 
 +    print("Schnaps!") 
 +elif age >= 16: 
 +    print("Bier!") 
 +else: 
 +    print("Sirup!") 
 +</template> 
 +</bottom-exercise>
  
 === Aufgabe D2 === === Aufgabe D2 ===
  
 +<bottom-exercise id="d2">
 +<div slot="prompt">
 Die Benutzerin wird aufgefordert, eine Zahl einzugeben. Der Code analysiert, ob die Zahl positiv, Null oder negativ ist und gibt eine entsprechende Nachricht. Die Benutzerin wird aufgefordert, eine Zahl einzugeben. Der Code analysiert, ob die Zahl positiv, Null oder negativ ist und gibt eine entsprechende Nachricht.
 +</div>
 +<template data-type="solution">
 +x = int(input("Gib eine Zahl ein"))
 +
 +if x > 0:
 +    print("Positiv!")
 +elif x == 0:
 +    print("Null!")
 +else:
 +    print("Negativ!")
 +</template>
 +</bottom-exercise>
 +
 === Aufgabe D3 === === Aufgabe D3 ===
  
 == Teil I == == Teil I ==
  
-Der Benutzer wird aufgeforder, eine der folgenden Eingaben zu machen:+<bottom-exercise id="d3" layout="canvas" showswitcher> 
 +<div slot="prompt"> 
 +Der Benutzer wird aufgefordert, eine der folgenden Eingaben zu machen:
  
-   "q" für Quadrat +<ul> 
-   "k" für Kreis +   <li>"q" für Quadrat 
-   "r" für Rechteck +   <li>"k" für Kreis 
-   "..." für eigene Figur+   <li>"r" für Rechteck 
 +   <li>"..." für eigene Figur 
 +</ul>
  
-Die Turtle zeichnet dann die entsprechende Figur. Vermeide Code-Repetitionen, verwende stattdessen Schleifen!+<p>Die Turtle zeichnet dann die entsprechende Figur. Vermeide Code-Repetitionen, verwende stattdessen Schleifen!
  
-Wird etwas anderes eingegeben, so soll eine der folgenden Varianten zum Zug kommen (entscheide selbst):+<p>Wird etwas anderes eingegeben, so soll eine der folgenden Varianten zum Zug kommen (entscheide selbst):
  
-   Variante 1: einfach eine Rückmeldung, dass unzulässige Eingabe +<ul> 
-   Variante 2: Turtle läuft ein Fragezeichen ab +   <li>Variante 1: einfach eine Rückmeldung, dass unzulässige Eingabe 
 +   <li>Variante 2: Turtle läuft ein Fragezeichen ab  
 +</ul> 
 +</div> 
 +<template data-type="solution"> 
 +from turtle import * 
 + 
 +turi = Turtle() 
 +turi.speed(8) 
 +turi.hideturtle() 
 + 
 +shape = str(input("Gib ein q (Quadrat), k (Kreis) oder r (Rechteck)")) 
 +pen_color = str(input("Waehle die Stiftfarbe")) 
 +fill_color = str(input("Waehle die Füllfarbe")) 
 + 
 +turi.color(pen_color) 
 +turi.fillcolor(fill_color) 
 +turi.width(10) 
 +turi.begin_fill() 
 + 
 +if shape == "q": 
 +    i = 0 
 +    while i < 4: 
 +        turi.forward(200) 
 +        turi.right(90) 
 +        i = i + 1 
 +elif shape == "k": 
 +    turi.circle(100, 360) 
 +elif shape == "r": 
 +    i = 0 
 +    while i < 2: 
 +        turi.forward(200) 
 +        turi.right(90) 
 +        turi.forward(400) 
 +        turi.right(90) 
 +        i = i + 1     
 +else: 
 +    print("ungueltige Eingabe!")  
 + 
 +turi.end_fill()  
 +</template> 
 +</bottom-exercise>
  
 == Teil II == == Teil II ==
Zeile 739: Zeile 844:
 == 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 767: Zeile 872:
 |0|Leider hast du alle Aufgaben falsch gelöst. Zurück in die Primarschule!| |0|Leider hast du alle Aufgaben falsch gelöst. Zurück in die Primarschule!|
  
 +<bottom-exercise id="d4">
 +<template data-type="solution">
 +import random
  
-=== Aufgabe D5 (optional) ===+questions 
 +correct 0
  
-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.+while questions < 10: 
 +    questions = questions + 1
  
-<nodisp 2> +    x = random.randint(1, 20) 
-++++Lösungen Aufgaben D|+    y = random.randint(1, 20) 
 +    result = x 
 +    answer = int(input(f'Was ergibt {x} {y} ?')) 
 +    if answer == result: 
 +        correct = correct 1
  
-==== Aufgaben D ====+print(f'Du hast {correct} von 10 Aufgaben richtig gelöst!'
 +</template> 
 +</bottom-exercise>
  
-=== Aufgabe D1 ===+=== Aufgabe D5 (optional) ===
  
-<code python> +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.
-age = int(input("Gib dein Alter ein"))+
  
-if age >= 18: 
-    print("Schnaps!") 
-elif age >= 16: 
-    print("Bier!") 
-else: 
-    print("Sirup!") 
-</code> 
- 
-=== Aufgabe D2 === 
- 
-<code python> 
-x = int(input("Gib eine Zahl ein")) 
- 
-if x > 0: 
-    print("Positiv!") 
-elif x == 0: 
-    print("Null!") 
-else: 
-    print("Negativ!") 
-</code> 
- 
-=== Aufgabe D3 === 
- 
-<code python> 
-from turtle import * 
- 
-turi = Turtle() 
-turi.hideturtle() 
- 
-shape = str(input("Gib ein q (Quadrat), k (Kreis) oder r (Rechteck)")) 
-pen_color = str(input("Waehle die Stiftfarbe")) 
-fill_color = str(input("Waehle die Füllfarbe")) 
- 
-turi.color(pen_color) 
-turi.fillcolor(fill_color) 
-turi.width(10) 
-turi.begin_fill() 
- 
-if shape == "q": 
-    i = 0 
-    while i < 4: 
-        turi.forward(200) 
-        turi.right(90) 
-        i = i + 1 
-elif shape == "k": 
-    turi.circle(100, 360) 
-elif shape == "r": 
-    i = 0 
-    while i < 2: 
-        turi.forward(200) 
-        turi.right(90) 
-        turi.forward(400) 
-        turi.right(90) 
-        i = i + 1     
-else: 
-    print("ungueltige Eingabe!" 
- 
-turi.end_fill()  
-</code> 
- 
-=== Aufgabe D4 === 
- 
-<code python> 
-</code> 
- 
-++++ 
-</nodisp> 
  • gf_informatik/programmieren_ii.1761197621.txt.gz
  • Zuletzt geändert: 2025-10-23 05:33
  • von hof