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_python_basics_sca [2022-11-20 12:04] – [Programmieren II: Variablen, Verzweigungen, Schleifen] scagf_informatik:programmieren_python_basics_sca [2022-11-20 12:09] (aktuell) sca
Zeile 59: Zeile 59:
 | Modulo (Rest der Ganzzahl-Division, Bsp. `17%5 = 2`) | `17%2`| | Modulo (Rest der Ganzzahl-Division, Bsp. `17%5 = 2`) | `17%2`|
  
-==== - Input ====+==== - Eingabe ====
  
-Man kann auch den Benutzer auffordern, einen Input zu geben. Der eingegebene Wert kann dann in einer Variablen gespeichert werden:+Man kann auch den Benutzer auffordern, eine Eingabe (Inputzu machen. Der eingegebene Wert kann dann in einer Variablen gespeichert werden:
  
 <code python> <code python>
-= input("Gib eine Zahl ein:")+= input("Gib eine Zahl ein:")
 </code> </code>
  
-Mit diesem Code wird der Benutzer aufgefordert, eine Zahl einzugeben. Sobald er dies gemacht hat, wird der eingetippte Wert in der Variablen `x` gespeichert. Diese kann danach z.B. dazu verwendet werden, um mit ihr etwas zu berechnen.+Mit diesem Code wird der Benutzer aufgefordert, eine Zahl einzugeben. Sobald er dies gemacht hat, wird der eingetippte Wert in der Variablen `z` gespeichert. Diese kann danach z.B. dazu verwendet werden, um mit ihr etwas zu berechnen.
  
 Beachte, dass man in die `input()`-Funktion eine Anweisung schreiben kann. Beachte, dass man in die `input()`-Funktion eine Anweisung schreiben kann.
 +
 +Um Sicherzustellen, dass es sich bei der Eingabe um den richtigen Datentyp wie zum Beispiel einen Integer (ganze Zahl) oder einen String (Text) handelt, kann man die Eingabe entsprechend **konvertieren**:
 +<code python>
 +z = int(input("Gib eine Zahl ein:"))
 +s = str(input("Gib einen Text ein:"))
 +</code>
 +Gibst du nun im ersten Beispiel anstelle einer Zahl ein Wort ein, so kann er dieses //nicht// in eine Zahl umwandeln und du erhältst eine Fehlermeldung.
  
 ==== - Formatierte Ausgaben ==== ==== - Formatierte Ausgaben ====
Zeile 82: Zeile 89:
 In der print-Funktion schreiben wir in Anführungs- und Schlusszeichen den Satz, den wir gerne als Ausgabe hätten. Beachte, dass die beiden Zahlen *nicht* direkt in den String geschrieben werden. Stattdessen wollen wir, dass dort die Werte der Variablen `x` und `y` eingefügt werden. Dafür fügen wir an den richtigen Stellen die beiden Platzhalter `{0}` und `{1}` ein. An den String hängen wir dann den Befehl `.format(x,y)` an. Diese fügt für den ersten Platzhalter (`{0}`) den Wert der ersten Variablen (`x`) und für den zweiten Platzhalter (`{1}`) den Wert der zweiten Variablen (`y`) ein. In der print-Funktion schreiben wir in Anführungs- und Schlusszeichen den Satz, den wir gerne als Ausgabe hätten. Beachte, dass die beiden Zahlen *nicht* direkt in den String geschrieben werden. Stattdessen wollen wir, dass dort die Werte der Variablen `x` und `y` eingefügt werden. Dafür fügen wir an den richtigen Stellen die beiden Platzhalter `{0}` und `{1}` ein. An den String hängen wir dann den Befehl `.format(x,y)` an. Diese fügt für den ersten Platzhalter (`{0}`) den Wert der ersten Variablen (`x`) und für den zweiten Platzhalter (`{1}`) den Wert der zweiten Variablen (`y`) ein.
  
-==== - Aufgaben D ==== +===== - Verzweigungen: if-else =====
- +
-Von nun an arbeiten wir nur noch selten mit TurtleGraphics. Die Zeile `from gturtle import *` wird also nicht gebraucht und kann weggelassen werden. +
- +
-=== Aufgabe D1 === +
- +
-1) Frage den Benutzer nach einer Zahl. Diese soll in der Variablen `x` gespeichert werden. +
-Gib dann der Reihe nach aus: +
- +
-   * Das Quadrat der Zahl +
-   * Die Wurzel der Zahl +
-   * Das 10-fache der Zahl +
- +
-2) Formatiere nun die Ausgabe, so dass jeweils steht: +
- +
-   * "Das Quadrat der Zahl 4 is 16" +
-   * "Die Wurzel der Zahl 4 ist 2" +
-   * "Das 10-fache der Zahl 4 ist 40" +
- +
-**Achtung:** Natürlich soll dies nur gelten, falls der Input 4 ist. Falls eine andere Zahl eingegeben wird, soll die //Ausgabe entsprechend anders// sein. +
- +
-=== Aufgabe D2 === +
- +
-Nun wollen wir wieder mit unserer Turtle arbeiten. Der Benutzer soll aufgefordert werden, eine Zahl einzugeben. Danach soll die Turtle ein Quadrat ablaufen. Die Seitenlänge des Quadrates soll genau dieser eingegebenen Zahl entsprechen. +
- +
-=== Aufgabe D3 === +
- +
-Mache eine Kopie einer deiner bereits gelösten Aufgaben aus den Aufgaben A und B und speichere diese unter dem Namen `aufgabe_D3.py`. Suche einen möglichst langen und komplizierten Code aus. Füge nun überall wo es möglich ist, Variablen ein. Anstelle, dass du also immer `fritz.left(90)` schreibst, definiere eine Variable `winkel = 90` und schreibe nachher immer `fritz.left(winkel)`. +
- +
-=== Aufgabe D4 === +
- +
-Kopiere deinen Code aus Aufgabe D2 und erweitere den Code. Anstelle eines Quadrates soll das Turtle nun ein Rechteck ablaufen. Dazu soll der Benutzer zuerst folgende Werte eingeben (alle mit einem seperatern `input`-Statement): +
- +
-   * x-Koordinate des Startpunkts +
-   * y-Koordinate des Startpunkts +
-   * Breite des Rechtecks +
-   * Höhe des Rechtecks +
- +
-===== - Logik: if-else =====+
  
 Beim Programmieren kommt man oft in die Situation, wo man **Entscheidungen** treffen muss. Zum Beispiel soll, je nach dem was der Benutzer eintippt, ein anderer Code ausgeführt werden. Beim Programmieren kommt man oft in die Situation, wo man **Entscheidungen** treffen muss. Zum Beispiel soll, je nach dem was der Benutzer eintippt, ein anderer Code ausgeführt werden.
Zeile 197: Zeile 166:
 Schauen wir uns dies etwas genauer an: `if x >= 0` überprüft, ob die Zahl grösser gleich 0 ist. Falls ja wird der darauffolgende print-Befehl ausgeführt, in dem mitgeteilt wird, dass die Zahl positiv ist. Falls die Bedingung `if x >= 0` //nicht// erfüllt ist, muss die Zahl also negativ sein. Deshalb wird in diesem Fall der print-Befehl nach dem //else// ausgeführt. Schauen wir uns dies etwas genauer an: `if x >= 0` überprüft, ob die Zahl grösser gleich 0 ist. Falls ja wird der darauffolgende print-Befehl ausgeführt, in dem mitgeteilt wird, dass die Zahl positiv ist. Falls die Bedingung `if x >= 0` //nicht// erfüllt ist, muss die Zahl also negativ sein. Deshalb wird in diesem Fall der print-Befehl nach dem //else// ausgeführt.
  
- 
-==== - Aufgaben E ==== 
- 
-=== Aufgabe E1 === 
- 
-Nimm den Code aus dem Beispiel als Startpunkt. In diesem wird eine Zahl eingeben wird und dann entschieden, ob die Zahl positiv oder negativ ist. Erweitere den Code nun so, dass zwischen den folgenden drei Fällen unterschieden wird: 
- 
-   * x ist positiv 
-   * x ist genau gleich 0 
-   * x ist negativ 
- 
-//Tipp:// Hier benötigst du einen //if-elif-else//-Befehl. 
- 
-=== Aufgabe E2 === 
- 
-Schreibe ein Programm, in dem der Benutzer eine Figur wünschen kann, die der Turtle dann abläuft. Diese sollen sein: 
- 
-   * Quadrat 
-   * Kreis 
- 
-Der Benutzer soll dazu aufgefordert werden, eine Figur einzutippen (also z.B. "Quadrat"). Dann soll der Turtle diese Figur ablaufen. Achte darauf, dass der Benutzer den Input //genau// so schreiben muss, wie es in der Bedingung steht! Gib dem Benutzer als Hilfe die zur Auswahl stehenden Figuren vor. Falls etwas falsches eingetippt wird, soll der Benutzer freundlich darauf hingewiesen werden, dass seine Eingabe nicht zulässig ist. 
- 
-*Optional: Füge weitere Figuren hinzu. 
- 
-=== Aufgabe E3 === 
- 
-== 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 Zufallsgenerator von Python, um die beiden Zahlen, die addiert werden sollen, zufällig zu wählen. 
- 
-Dazu musst du das //random//-Modul einbinden. 
- 
-<code python> 
-import random # schreibe dies ganz oben in deinem Code 
-... 
-x = random.randint(0,10) # wählt zufällig eine Zahl aus den Zahlen 0,1,2,3,...,9,10 aus 
-... 
-</code> 
  
  
Zeile 282: Zeile 209:
 Eine Möglichkeit gibt es aber, aus eine Schleife wie der oberen (`while True: ...`) auszubrechen: Wird der Befehl `break` aufgerufen, wird die **Schleife umgehend abgebrochen** und der Code unterhalb wird ausgeführt.  Eine Möglichkeit gibt es aber, aus eine Schleife wie der oberen (`while True: ...`) auszubrechen: Wird der Befehl `break` aufgerufen, wird die **Schleife umgehend abgebrochen** und der Code unterhalb wird ausgeführt. 
  
-==== - Aufgaben F ==== 
- 
-=== Aufgabe F1 === 
- 
-Schreibe ein Programm, in dem man eine zweistellige Zahl eingeben soll. Dies soll man solange machen können, bis man diese Bedingung einmal nicht mehr erfüllt. 
- 
-Beachte, dass du dazu zwei Bedingungen (Bedingung 1: grösser gleich 10, Bedingung 2: kleiner als 100) verknüpfen muss. Dies kann man einfach mit dem Keyword `and` erreichen. Dies funktioniert für Verzweigungen und while-Schleifen: 
- 
-<code python> 
-if BEDINGUNG1 and BEDINGUNG2: 
-    ... 
-     
-while BEDINGUNG1 and BEDINGUNG2: 
-    ...     
-</code> 
- 
-=== Aufgabe F2 === 
-Oft wollen wir einen Schritt eine bestimmte Anzahl mal wiederholen. In TigerJython können wir dazu `repeat` verwenden, was aber in Python nicht unterstützt wird. Wie kannst du die gleiche Funktionalität erhalten mit `while`? 
- 
-Schreibe Turtle Code, der ein Quadrat zeichnet, aber verwende dazu nur `while`. 
- 
-=== Aufgabe F3 === 
-Erweitere nun dein Spiel aus E3 wie folgt: 
- 
-== Schritt 1 == 
- 
-Erweitere nun dein Spiel wie folgt: Es sollen mehrere 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. Nach jeder Frage wird der Spielstand ausgegeben, der Spieler soll eine entsprechende Rückmeldung erhalten, z.B.: 
-''Du hast 7 von 10 Aufgaben richtig gelöst.'' 
- 
-=== Aufgabe F4 (optional) === 
- 
-Gleich wie Aufgabe F3. Es sollen aber neben der Addition auch Subtraktionen und Multiplikationen vorkommen. 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. 
- 
-//Tipp:// Verwende eine Endlosschleife. 
- 
-=== Aufgabe F5 === 
- 
-Mache eine Kopie von deinem Mathe-Quiz aus der letzten Aufgabe.  
-Wähle eine der beiden Varianten: 
- 
-== Variante 1 (einfacher) == 
- 
-Man soll solange spielen können, bis man einen Fehler macht. Bei einem Fehler ist Game Over. 
- 
-== Variante 2 (etwas anspruchsvoller, aber empfohlen!) == 
  
-Man soll solange spielen können, bis man drei Fehler gemacht hat. Dann ist Game Over. 
  
  
  
  • gf_informatik/programmieren_python_basics_sca.1668945853.txt.gz
  • Zuletzt geändert: 2022-11-20 12:04
  • von sca