Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:programmieren_ii:variablen_verzweigungen_schleifen [2022-10-24 12:53] – angelegt hof | gf_informatik:programmieren_ii:variablen_verzweigungen_schleifen [2023-10-22 10:21] (aktuell) – [Tabelle] hof | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Programmieren II: Variablen, | + | ====== Programmieren II: Variablen, |
Du kannst bereits programmieren? | Du kannst bereits programmieren? | ||
Zeile 6: | Zeile 6: | ||
Neben Turtlegrafik kann man in TigerJython und Python auch noch andere Dinge machen, die Spass machen, wie z.B. Mathe. | Neben Turtlegrafik kann man in TigerJython und Python auch noch andere Dinge machen, die Spass machen, wie z.B. Mathe. | ||
- | *Tipp:* Möchtest du nur z.B. etwas berechnen, ohne dabei eine Turtle zu gebrauchen? Dann kannst du die zuvor immer benötigte Zeile Code `from gturtle | + | *Tipp:* Möchtest du nur z.B. etwas berechnen, ohne dabei eine Turtle zu gebrauchen? Dann kannst du die zuvor immer benötigte Zeile Code `from turtle |
==== - Variablen ==== | ==== - Variablen ==== | ||
- | In **Variablen** werden Werte gespeichert, | + | In **Variablen** werden Werte gespeichert, |
Variablen kannst du ganz einfach deklarieren: | Variablen kannst du ganz einfach deklarieren: | ||
Zeile 49: | Zeile 49: | ||
Einige wichtige **mathematischen Operatoren** sind: | Einige wichtige **mathematischen Operatoren** sind: | ||
- | ^ Funktion ^ Python-Code ^ | + | ^ Funktion ^ Python-Code |
- | | Addition | `7+3` | | + | | Addition | `5+2` | `7` | |
- | | Subtraktion | `7-3` | | + | | Subtraktion | `5-2` | `3` | |
- | | Multiplikation | `7*3` | | + | | Multiplikation | `5*2` | `10` | |
- | | Division (Nachkommastellen) | `7/3` | | + | | Division (Nachkommastellen) | `5/2` | `2.5` | |
- | | Ganzzahldivision | `7//3` | | + | | Ganzzahldivision | `5//2` | `2` | |
- | | Hoch (z.B. 2 hoch 5) | `2**5` | | + | | Hoch (z.B. 2 hoch 5) | `5**2` | `25` | |
- | | Wurzel (z.B. Wurzel von 2, sqrt für square-root) | `sqrt(2)` | | + | | Wurzel (z.B. Wurzel von 2, sqrt für square-root) | `sqrt(2)` | `1.4142135...` | |
- | | Modulo (Rest der Ganzzahl-Division, Bsp. `17%5 = 2`) | `17%2`| | + | | Modulo (Rest der Ganzzahl-Division) | `5%2`| `1` | |
==== - Input ==== | ==== - Input ==== | ||
Zeile 84: | Zeile 83: | ||
==== - Aufgaben D ==== | ==== - Aufgaben D ==== | ||
- | Von nun an arbeiten wir nur noch selten mit TurtleGraphics. Die Zeile `from gturtle | + | Von nun an arbeiten wir nur noch selten mit TurtleGraphics. Die Zeile `from turtle |
=== Aufgabe D1 === | === Aufgabe D1 === | ||
Zeile 108: | Zeile 107: | ||
=== Aufgabe D3 === | === 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)`. | 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)`. | ||
Zeile 119: | Zeile 117: | ||
* Breite des Rechtecks | * Breite des Rechtecks | ||
* Höhe des Rechtecks | * Höhe des Rechtecks | ||
+ | |||
+ | |||
+ | === Aufgabe D5 === | ||
+ | |||
+ | Die Schildkröte soll eine Spirale aus mehreren (unterschiedlich grossen) Halbkreisen zeichnen. Die Benutzer:in soll dazu folgende Werte eingeben (alle mit einem seperatern `input`-Statement): | ||
+ | * Anzahl Halbkreise | ||
+ | * Start-Radius: | ||
+ | * Zunahme: Um diesen Wert wird der Radius jedes Halbkreises grösser als der vorherige. | ||
===== - Logik: if-else ===== | ===== - Logik: if-else ===== | ||
Zeile 124: | Zeile 130: | ||
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. | ||
- | Am einfachsten ist der sogenannte **if**-Befehl: | + | Am einfachsten ist der sogenannte **if**-Befehl: |
<code python> | <code python> | ||
Zeile 138: | Zeile 144: | ||
**Bedingungen** können zum Beispiel sein: | **Bedingungen** können zum Beispiel sein: | ||
- | ^ Bedingung ^ Erklährung | + | ^ Bedingung |
- | | `x == 4` | x ist Zahl und hat Wert von genau 4 | | + | | `x == 4` | x ist Zahl und hat Wert von genau 4 | |
- | | `s == " | + | | `s == " |
- | | `x != 4` | x ist NICHT eine Zahl vom Wert | | + | | `x != 4` | x ist NICHT eine Zahl vom Wert 4 | |
- | | `x > 5` | x ist Zahl grösser als 5 | | + | | `x > 5` |
- | | `x >= 5` | x ist Zahl grösser gleich 5 | | + | | `x >= 5` | x ist Zahl grösser gleich 5 | |
- | | `x < 5` | x ist Zahl kleiner als 5 | | + | | `x < 5` |
- | | `x <= 5` | x ist Zahl kleiner gleich 5 | | + | | `x <= 5` | x ist Zahl kleiner gleich 5 | |
**Wichtig: | **Wichtig: | ||
Zeile 198: | Zeile 204: | ||
- | ==== - Aufgaben | + | ==== - Aufgaben |
- | === Aufgabe | + | === Aufgabe |
Nimm den Code aus dem Beispiel als Startpunkt. In diesem wird eine Zahl eingeben wird und dann entschieden, | Nimm den Code aus dem Beispiel als Startpunkt. In diesem wird eine Zahl eingeben wird und dann entschieden, | ||
Zeile 210: | Zeile 216: | ||
//Tipp:// Hier benötigst du einen // | //Tipp:// Hier benötigst du einen // | ||
- | === Aufgabe | + | === Aufgabe |
Schreibe ein Programm, in dem der Benutzer eine Figur wünschen kann, die der Turtle dann abläuft. Diese sollen sein: | Schreibe ein Programm, in dem der Benutzer eine Figur wünschen kann, die der Turtle dann abläuft. Diese sollen sein: | ||
Zeile 221: | Zeile 227: | ||
*Optional: Füge weitere Figuren hinzu. | *Optional: Füge weitere Figuren hinzu. | ||
- | === Aufgabe | + | === Aufgabe |
== Schritt 1 == | == Schritt 1 == | ||
Zeile 236: | Zeile 242: | ||
import random # schreibe dies ganz oben in deinem Code | import random # schreibe dies ganz oben in deinem Code | ||
... | ... | ||
- | x = random.randint(0, | + | zahl1 = random.randint(0, |
... | ... | ||
</ | </ | ||
- | == Schritt 3 == | ||
- | |||
- | Erweitere nun dein Spiel wie folgt: Insgesamt sollen 10 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. Am Schluss soll der Spieler eine entsprechende Rückmeldung erhalten, z.B.: | ||
- | '' | ||
- | |||
- | == Schritt 4 == | ||
- | |||
- | Gleich wie Schritt 3, die Rückmeldung soll aber erweitert werden. Je nach erreichter Anzahl Punkte soll eine andere Meldung erscheinen: | ||
- | |||
- | |**Erreichte Punkte**|**Meldung**| | ||
- | |10|Perfekt, | ||
- | |8-9|Sehr gut, du hast fast alle Aufgaben richtig gelöst!| | ||
- | |6-7|Nicht schlecht, du hast mehr als die Hälfte der Aufgaben richtig gelöst!| | ||
- | |5|Genügend, | ||
- | |1-4|Ungenügend, | ||
- | |0|Leider hast du alle Aufgaben falsch gelöst. Zurück in die Primarschule!| | ||
- | |||
- | |||
- | === 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. | ||
===== - While-Schleife ===== | ===== - While-Schleife ===== | ||
- | Die for-Schleife ist praktisch, wenn man genau weiss, wie oft etwas durchgeführt werden soll. In der Aufgabe E3 hast du ein Mathe-Quiz mit 10 Runden programmiert. Dort hat es Sinn gemacht, eine for-Schleife (`for i in range(10)`) zu verwenden. Dies ist aber nicht immer der Fall. Zum Beispiel könnte man ein Spiel programmieren, | + | Oft wollen wir einen Schritt mehrmals wiederholen. Dies können wir mit einer **while-Schleife** (dt. // |
- | + | ||
- | Dies können wir mit einer **while-Schleife** (dt. // | + | |
<code python> | <code python> | ||
Zeile 278: | Zeile 261: | ||
</ | </ | ||
- | Die Bedingungen schreibt man gleich wie für for-Schleifen, also `==, >, >=, ...` | + | Die Bedingungen schreibt man gleich wie für if-Verzweigungen, also `==, >, >=, ...` |
**Beispiel: | **Beispiel: | ||
Zeile 305: | Zeile 288: | ||
Eine Möglichkeit gibt es aber, aus eine Schleife wie der oberen (`while True: ...`) auszubrechen: | Eine Möglichkeit gibt es aber, aus eine Schleife wie der oberen (`while True: ...`) auszubrechen: | ||
- | ==== - Aufgaben | + | ==== - Aufgaben |
- | === Aufgabe | + | === Aufgabe |
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. | 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. | ||
Zeile 321: | Zeile 304: | ||
</ | </ | ||
- | === Aufgabe | + | === Aufgabe |
+ | 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`? | ||
- | Mache eine Kopie von deinem Mathe-Quiz aus Aufgabe F3 oder F4. Man soll nun beliebig lange spielen können. Nach jeder Frage wird der Spielstand ausgegeben. | + | Schreibe Turtle Code, der ein Quadrat zeichnet, aber verwende dazu nur `while`. |
- | //Tipp:// Verwende eine Endlosschleife. | + | === Aufgabe F3 === |
+ | Erweitere nun dein Spiel aus E3 wie folgt: | ||
- | === Aufgabe | + | == 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.: | ||
+ | '' | ||
+ | |||
+ | === 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. | ||
+ | |||
+ | === Aufgabe | ||
Mache eine Kopie von deinem Mathe-Quiz aus der letzten Aufgabe. | Mache eine Kopie von deinem Mathe-Quiz aus der letzten Aufgabe. | ||
Zeile 340: | Zeile 334: | ||
Man soll solange spielen können, bis man drei Fehler gemacht hat. Dann ist Game Over. | Man soll solange spielen können, bis man drei Fehler gemacht hat. Dann ist Game Over. | ||
- | + | === Aufgabe F6 === | |
- | ===== - Funktionen ===== | + | Schreibe |
- | + | * Die Benutzer:in muss eine positive, zweistellige | |
- | Komplexe Programme können mit Hilfe von Funktionen in kleinere, leichter zu programmierende Teilprogramme zerlegt werden. Solche Teilprogramme können zudem mehrmals verwendet werden. | + | * Dann macht das Programm Folgendes: |
- | + | | |
- | ==== - Definition ==== | + | * Wenn die eingegebene |
- | + | ||
- | Eine **Funktion** ist immer wie folgt aufgebaut: | + | |
- | + | ||
- | <code python> | + | |
- | def name_der_funktion(PARAMETER): | + | |
- | # CODE DER FUNKTION | + | |
- | return RETURN_WERT # ist optional | + | |
- | </ | + | |
- | + | ||
- | * Das Schlüsselwort **def** leitet immer die Definition einer Funktion ein. | + | |
- | * Darauf folgt der **Funktionsname**. Typischerweise schreibt man diesen mit ausschliesslich Kleinbuchstaben und Underlines _ | + | |
- | * Direkt anschliessend werden **runde Klammern** geschrieben. Diese enthalten die **Parameter**. Das sind Werte, die an die Funktion übergeben werden. Funktionen können auch ohne Parameter definiert werden, die Klammern sind dann halt einfach leer. | + | |
- | * Nach einem **Doppelpunkt** ... | + | |
- | * kommt der **Funktionskörper**, | + | |
- | + | ||
- | Nachdem du eine Funktion definiert hast, kannst du sie ganz einfach aufrufen. Dazu mehr in den Beispielen unten. | + | |
- | + | ||
- | Übrigens hast du schon viele Funktionen kennengelernt - ohne dass du es wahrscheinlich gemerkt hast. Zum Beispiel ist die Funktion `forward()` für Turtles eine Funktion, die ein Turtle vorwärts laufen lässt. Diese Funktion wurde vorprogrammiert. Nun wollen wir schauen, wie wir unsere eigenen Funktionen definieren können. | + | |
- | + | ||
- | ==== - Funktionen ohne Rückgabewert ==== | + | |
- | + | ||
- | In diesem Unterkapitel schauen wir Funktionen ohne Rückgabewert an, also Funktionen ohne das `return`-Statement am Ende. | + | |
- | + | ||
- | **Beispiel: | + | |
- | + | ||
- | <code python> | + | |
- | from gturtle import | + | |
- | + | ||
- | fritz = Turtle() | + | |
- | fritz.hideTurtle() | + | |
- | + | ||
- | # Quadrat 1 | + | |
- | fritz.setPos(-130, | + | |
- | repeat 4: | + | |
- | fritz.forward(100) | + | |
- | fritz.left(90) | + | |
- | + | ||
- | # Quadrat 2 | + | |
- | fritz.setPos(0, | + | |
- | repeat 4: | + | |
- | fritz.forward(100) | + | |
- | fritz.left(90) | + | |
- | </ | + | |
- | + | ||
- | Es fällt auf, das hier zweimal der // | + | |
- | <code python> | + | |
- | repeat 4: | + | |
- | fritz.forward(100) | + | |
- | fritz.left(90) | + | |
- | </ | + | |
- | + | ||
- | Dies ist nicht sehr elegant. Wenn man nun das gleiche Quadrat 10-mal zeichnen möchte, wird es noch viel schlimmer! Es lohnt sich deshalb hier, eine Funktion //quadrat// zu definieren und diese dann mehrfach aufzurufen: | + | |
- | + | ||
- | <code python> | + | |
- | from gturtle import * | + | |
- | + | ||
- | fritz = Turtle() | + | |
- | fritz.hideTurtle() | + | |
- | + | ||
- | def quadrat(): | + | |
- | repeat 4: | + | |
- | fritz.forward(100) | + | |
- | fritz.left(90) | + | |
- | + | ||
- | # Quadrat 1 | + | |
- | fritz.setPos(-130, | + | |
- | quadrat() | + | |
- | + | ||
- | # Quadrat 2 | + | |
- | fritz.setPos(0, | + | |
- | quadrat() | + | |
- | </ | + | |
- | + | ||
- | Beachte, dass man jeweils zuerst die Position der Turtle festlegen muss, bevor man die Funktion aufrufen kann. Noch eleganter ist es, wenn man das Setzen der Position in die Funktion hinein nimmt. | + | |
- | + | ||
- | <code python> | + | |
- | from gturtle import * | + | |
- | + | ||
- | fritz = Turtle() | + | |
- | fritz.hideTurtle() | + | |
- | + | ||
- | def quadrat(x, | + | |
- | fritz.setPos(x, | + | |
- | repeat 4: | + | |
- | fritz.forward(100) | + | |
- | fritz.left(90) | + | |
- | + | ||
- | # Quadrat 1 | + | |
- | quadrat(-130, | + | |
- | + | ||
- | # Quadrat 2 | + | |
- | quadrat(0, | + | |
- | </ | + | |
- | + | ||
- | Man kann der Funktion auch noch weitere Argumente übergeben, zum Beispiel um die Grösse des Quadrats und dessen Farbe anzugeben: | + | |
- | + | ||
- | <code python> | + | |
- | from gturtle import * | + | |
- | + | ||
- | fritz = Turtle() | + | |
- | fritz.hideTurtle() | + | |
- | + | ||
- | def quadrat(x, | + | |
- | fritz.setPos(x, | + | |
- | fritz.setPenColor(farbe) | + | |
- | repeat 4: | + | |
- | fritz.forward(seite) | + | |
- | fritz.left(90) | + | |
- | + | ||
- | # Quadrat 1 | + | |
- | quadrat(-130, | + | |
- | + | ||
- | # Quadrat 2 | + | |
- | quadrat(0, | + | |
- | </ | + | |
- | + | ||
- | ==== - Funktionen mit Rückgabewert ==== | + | |
- | + | ||
- | Funktionen bieten sich auch an, wenn man mehrfach die gleiche Rechnung, einfach mit verschiedenen Werten, ausführen möchte. Allerdings möchte man dann, dass die Funktion einem das Resultat als **Rückgabewert** zurück gibt. | + | |
- | + | ||
- | **Beispiel: | + | |
- | $$V = a \cdot b \cdot c$$ | + | |
- | Die zugehörige Funktion ist dann: | + | |
- | <code python quader.py> | + | |
- | def quader(a, | + | |
- | resultat = a*b*c | + | |
- | return resultat | + | |
- | + | ||
- | print(quader(4, | + | |
- | </ | + | |
- | Auf der letzten Zeile wird das Volumen für einen Quader mit Seitenlängen $4, 3$ und $2$ berechnet und dann in der Konsole ausgegeben. | + | |
- | + | ||
- | ==== - Aufgaben H ==== | + | |
- | + | ||
- | === Aufgabe H1 === | + | |
- | + | ||
- | Definiere folgende Funktionen: | + | |
- | + | ||
- | * quadrat(breite, | + | |
- | * dreieck(breite, | + | |
- | * kreis(radius, | + | |
- | + | ||
- | Ruft man z.B. die Funktion `dreieck(300, | + | |
- | + | ||
- | Zeichne mit diesen Funktionen ein Bild. Jede der drei Formen soll mindestens 3x vorkommen. Variiere die Farbe und Grösse der Formen. | + | |
- | + | ||
- | === Aufgabe H2 === | + | |
- | + | ||
- | Kennt man in einem rechtwinkligen Dreieck die beiden Katheten, so kann man mit dem Satz von Pythagoras die Hypothenuse bestimmen. Definiere eine Funktion mit Namen // | + | |
- | + | ||
- | //Tipp:// Die Wurzel einer Zahl ziehst du mit `sqrt(x)`, dazu musst du aber zuerst das math-Modul importieren: | + | |
- | + | ||
- | // | + | |
- | + | ||
- | === Aufgabe H3 === | + | |
- | + | ||
- | Das Volumen einer Kugel mit Radius $R$ ist: $$V = \frac{4\pi}{3}\cdot R^3$$ | + | |
- | Definiere eine Funktion //kugel//, der man als Argument den Radius übergibt und die dann das Volumen zurückgibt. Die Kreiszahl Pi ($\pi$) kannst du mit `math.pi` aufrufen, dazu muss aber auch wieder zuerst das math-Modul importiert werden (`import math`). | + | |
- | + | ||
- | === Aufgabe H4 === | + | |
- | + | ||
- | Definiere | + | |
- | + | ||
- | === Aufgabe H5 === | + | |
- | + | ||
- | Die Fakultät ist eine Funktion, welche jeder ganzen natürlichen | + | |
- | + | ||
- | Schreibe | + | |
- | + | ||
- | **Challenge**: | + | |
- | + | ||
- | === Aufgabe H6 (optional) === | + | |
- | In einer Zusatzaufgabe von früher (https:// | + | |
- | + | ||
- | Schreibe eine Funktion //ggt// und //kgv// welche als Argument zwei Zahlen nimmt, und daraus den grössten gemeinsamen Teiler, bzw. das kleinste gemeinsame Vielfache berechnet. | + | |
- | + | ||
- | Wenn du das gemacht hast, machst du daraus eine einzelne Funktion, welche als Argument zusätzlich einen String mit ggt, bzw. kgv entgegennimmt und dann entweder den ggT bzw. das kgV ausgibt. | + | |
- | + | ||
- | + | ||
- | === Aufgabe H7 (optional) === | + | |
- | + | ||
- | In **Aufgabe F2** wird der Benutzer gefragt, was für eine Grafik angezeigt werden soll. Erweitere deinen Code, so dass der Benutzer folgendes machen kann: | + | |
- | + | ||
- | * Auswahl der Farbe | + | |
- | * Festlegen der Grösse | + | |
- | * Festlegen der Stiftbreite | + | |
- | * Weitere Formen | + | |
- | + | ||
- | //Tipp:// Möchte man die Formen farbig ausfüllen, so lohnt es sich, die 2. Methode mit `fillToPoint` zu verwenden. | + | |
- | + | ||
- | === Aufgabe H8 (optional) === | + | |
- | + | ||
- | In einer Aufgabe oben hast du eine Funktion `wuerfel` definiert. Simuliere nun mit TurtleGraphics einen Würfel. | + | |
- | + | ||
- | ===== - Listen ===== | + | |
- | + | ||
- | Bisher haben wir Resultate entweder mit print() direkt in der Konsole ausgegeben oder als einzelne Zahlen in Variablen gespeichert. Oft macht es Sinn, Werte in Listen zu speichern. Dies geht ganz einfach: | + | |
- | + | ||
- | Eine Liste erstellt man wie folgt: | + | |
- | <code python> | + | |
- | L = [2,4,6,8] | + | |
- | </ | + | |
- | Eine Liste besteht aus **Elementen**, | + | |
- | + | ||
- | Elemente hinten **hinzufügen** kann man mit append: | + | |
- | <code python> | + | |
- | L = [2,4,6,8] | + | |
- | L.append(10) | + | |
- | </ | + | |
- | + | ||
- | Nach dem append-Befehl sieht die Liste wie folgt aus: `[2, 4, 6, 8, 10]`. Mit `print(L)` kannst du dich selbst davon überzeugen. Weitere wichtige Befehle sind | + | |
- | <code python> | + | |
- | L.insert(2, | + | |
- | L.pop(4) # Entfernt das Element mit Index 4 | + | |
- | len(L) # Gibt an, wieviele Elemente sich in der Liste befinden. Diesen Wert kann man z.B. printen oder in einer Variablen speichern | + | |
- | </ | + | |
- | + | ||
- | Es ist ganz einfach, alle Elemente einer Liste durchzugehen: | + | |
- | <code python> | + | |
- | for e in L: | + | |
- | print(e) | + | |
- | </ | + | |
- | + | ||
- | ==== - Aufgaben I ==== | + | |
- | + | ||
- | === - Aufgabe I1 === | + | |
- | + | ||
- | Diese Aufgabe besteht aus vielen kleinen Teilaufgaben, | + | |
- | - Erstelle die Liste `A = [0, | + | |
- | - Erstelle eine leere Liste `B = []`. Nun sollen | + | |
- | - Kopiere die folgende Liste ins TigerJython: | + | |
- | - Kopiere die Liste `[0, | + | |
- | - Kopiere die Liste `[0,2, | + | |
- | - Die folgende Liste sollte eigentlich ausschlisslich aus Zahlen der 5er-Reihe bis und mit 50 bestehen: `E = [5, | + | |
- | + | ||
- | === - Aufgabe I2 === | + | |
- | + | ||
- | Definiere eine Funktion `zero_list(n)`. Dieser wird als Argument eine Zahl übergeben. In der Funktion wird dann eine Liste erstellt, die n-mal die Zahl 0 enthält. Diese Liste wird dann zurückgegeben. Mit dem Befehl `print(zero_list(7))` soll man dann also den Output `[0, 0, 0, 0, 0, 0, 0]` erhalten. | + | |
- | + | ||
- | === - Aufgabe I3 === | + | |
- | + | ||
- | Betrachte die Liste `[68, 71, 53, 34, 66, 55, 80, 93, 24, 49, 68, 73, 9, 8, 93, 22, 44, 11, 82]` | + | |
- | - Berechne die Summe aller Elemente | + | |
- | - Berechne die Summe aller ungerader Elemente (also das erste, dritte,...) in der Liste. | + | |
- | Natürlich sollen sämtliche Schritte voll automatisiert ablaufen. Tauscht man die Liste mit einer anderen Liste, so soll der Code auch funktionieren. | + | |
- | + | ||
- | === - Aufgabe I4 (optional) === | + | |
- | + | ||
- | Implementiere einige Funktionen, welche einem helfen sollen, Listen zu analysieren: | + | |
- | * Funktion `liste_anzahl(L, | + | |
- | * Funktion `liste_max(L)`: | + | |
- | * Funktion `liste_min(L)`: | + | |
- | + | ||
- | Für die Liste `A = [3, | + | |
- | <code python> | + | |
- | print(liste_anzahl(A, | + | |
- | print(liste_max(A)) | + | |
- | print(liste_min(A)) | + | |
- | </ | + | |
- | ist der Output | + | |
- | <code bash> | + | |
- | 2 | + | |
- | 9 | + | |
- | 1 | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | === - Aufgabe I5 (optional) === | + | |
- | + | ||
- | Programmiere eine Funktion `liste_haeufigste(L)`: | + | |