~~NOTOC~~ ====== Listen ====== ===== Erklärungen ===== liste = ["Anna", "Berta", "Charly", "Daniel", "Emil", "Berta", "Ida"] print(liste) print(len(liste)) print(liste[0]) print(liste[4]) print("Peter" in liste) print("Daniel" in liste) print(liste) liste[4] = "Zeus" print(liste) for s in liste: print(s) notenliste = [6, 5, 4, 3, 2, 1, 6] nr = 0 while nr < len(liste): print("Schüler(in) " + liste[nr] + " hat die Note " + str(notenliste[nr]) + ".") nr = nr + 1 ===== Aufgabe 1: (Noten-)Durchschnitt berechnen ===== Schreibe ein neues Python-Programm, das den Durchschnitt aller Zahlen (etwa Schulnoten) in einer Liste ausrechnet. Die erste Zeile des Programms definiert die Liste und sieht beispielsweise wie folgt aus. zahlenliste = [4, 6, 3, 5, 4, 2, 5, 6, 5, 5, 4, 4] Das Programm soll aber auch für jede andere Liste von Zahlen funktionieren. Hinweis: Verwende eine for-Schleife über alle Listenelemente. ===== Aufgabe 2: Quiz mit Fragen und Antworten in einer Liste ===== Schreibe in Python ein Quiz-Programm, das dem Benutzer nacheinander die Fragen in der unten angegebenen Liste ''fragen'' stellt und ihm anhand der Liste ''korrekte_antworten'' jeweils mitteilt, ob die Antwort korrekt war oder nicht. Am Ende soll ausgegeben werden, wie viel Prozent der Antworten korrekt waren. Das Programm soll auch funktionieren, wenn du die Liste der Fragen und Antworten veränderst oder vergrösserst. Hinweis: Verwende eine while-Schleife! fragen = ["Wie hoch ist der Säntis? (in Metern) ", "Bei welcher Ortschaft entsteht die Sitter? ", "Wie tief ist der Bodensee an seiner tiefsten Stelle? (in Metern) "] korrekte_antworten = ["2502", "Weissbad", "251"] ===== Aufgabe 3: Zahlen einlesen und in einer Liste speichern ===== Das folgende Programm zeigt dir, wie man die "leere Liste" definiert und wie man eine Liste am Ende um ein Element erweitert. Beachte die Syntax des ''append''-Befehls: Zuerst kommt der Name der Liste, gefolgt von einem Punkt, danach der Aufruf der Funktion ''append'' mit dem neuen Element als Argument. a = [] print(a) a.append(42) print(a) a.append(1000) print(a) Schreibe ein Python-Programm, das vom Benutzer so lange Zahlen einliest und diese in einer Liste speichert, bis dieser "q" (wie //quit//) eingibt. In diesem Fall soll die gesamte Liste und die Summe der Listenelemente ausgegeben werden. Ohne while-loop wird das kaum gehen. Eine Lösungsmöglichkeit besteht darin, ganz am Anfang eine Variable per ''eingabe = ""'' zu definieren. In einer ''while''-Schleife bekommt diese Variable jeweils die aktuelle Benutzereingabe als Wert zugewiesen. Sobald ''eingabe = "q"'' gilt, soll die Schleife nicht mehr ausgeführt werden. Neben ''append'' gibt es viele andere Möglichkeiten, eine Liste zu modifizieren, siehe etwa https://www.w3schools.com/python/python_lists_change.asp. ===== Aufgabe 4: Primzahlliste mit dem Sieb des Eratosthenes erzeugen ===== Das **Sieb des Eratosthenes** ist der folgende Algorithmus zum Erstellen einer Liste aller Primzahlen bis zu einer gegebenen Zahl $n$. Dabei werden Zahlen in einer Liste durch Einrahmen oder Durchstreichen markiert. * Schreibe alle natürlichen Zahlen von 2 bis n auf. * Gehe alle Zahlen der Liste nacheinander durch: * Wenn die aktuell betrachtete Zahl nicht markiert ist: * Rahme sie ein und streiche all ihre (echten) Vielfachen. Die Primzahlen in der Liste sind genau die nicht-gestrichenen Zahlen Vgl. etwa https://de.wikipedia.org/wiki/Sieb_des_Eratosthenes. Speichere den folgenden Pseudo-Code als Python-Programm ''sieb-des-eratosthenes.py'' ab. Verwandle die Sprachanweisungen in Python-Code! # Sieb des Eratosthenes; das Durchstreichen von Zahlen wird hier durch Null-Setzen simuliert. n = 100 liste = list(range(n + 1)) # Dieser Befehl erzeugt eine Liste aller Zahlen # von 0 (einschliesslich) bis n + 1 (uneinschliesslich). # d.h. im Fall n = 10 gilt # liste = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] liste[1] = 0 # da 1 keine Primzahl ist, wird die Zahl 1 durchgestrichen = auf Null gesetzt. Lass i in einer while-Schleife alle Zahlen von 2 bis n durchlaufen: Falls i nicht durchgestrichen ist (d. h. der Eintrag unserer Liste mit Index i ist nicht Null): Lass d in einer while-Schleife alle Vielfachen von i zwischen 2 * i und n durchlaufen: Streiche d durch, d. h. setze das Element der Liste liste mit Index d auf 0. print("Primzahlliste") Lass n in einer for-Schleife alle Elemente der Liste liste durchlaufen: Wenn n nicht durchgestrichen ist (also das Element der Liste liste mit Index n nicht Null ist): print(n, end=', ') print() ==== Lösungsvorschlag ==== ===== W3Schools-Material zu Listen ===== Erklärungen: https://www.w3schools.com/python/python_lists.asp. Übungen dazu: https://www.w3schools.com/python/python_lists_exercises.asp ===== Link zur Kursseite ===== [[lehrkraefte:snr:informatik:glf23|Zur Kursseite]]