====== - Programmieren II: Weiterführende Programmierkonzepte ====== ===== - Listen ===== ++++Lernziele| Grundsätzlich muss man alles können, was wir hier behandelt haben. Die Lernziele dienen als Orientierungshilfe beim Lernen. * Ich kann erklären, was Listen in Python sind und wofür diese nützlich sind. * Ich kann erklären, was die Elemente einer Liste sind und was deren Positionen / Indices sind. * Ich kann die Länge einer Liste ermitteln. * Ich kann die Elemente einer Liste einzeln ansteuern um diese zum Beispiel zu ändern oder auszugeben. * Ich kann Listen verändern, indem ich Elemente entferne, anfüge oder einfüge. * Ich kann über eine bestehende Liste iterieren. * Ich kann Werte aus Listen aufsummieren. * Ich kann eine Liste erstellen und dann in einer while-Schleife Elemente ein-/anfügen. * Ich kann Listen miteinander verbinden. * Ich kann eine Schleife abbrechen. ++++ {{ :gf_informatik:programmieren_ii_01_listen.pdf |Slides Listen}} ==== - Elemente auslesen und Listen manipulieren ==== Eine **Liste** ist eine Variable, in der man *mehrere Werte* speichern kann, z.B.: faves = ['Pizza',42,'Muzak'] Eine Liste besteht aus **Elementen**, wobei jedes Element an einer bestimmten **Position / Index** steht. Achtung: Man beginnt Positionen **bei 0** zu zählen! Im Beispiel oben ist also 'Pizza' das Element an Position 0, 42 das Element mit Index 1 und 'Muzak' das Element an Position 2. Die Liste besteht aus 3 Elementen, wir sagen, dass sie **Länge** 3 hat. Die **wichtigsten Befehle für Listen** sind in der Tabelle unten aufgeführt. Für die Beispiele starten wir mit der Liste `faves = ['Pizza',42,'Muzak']`. In den beiden rechten Spalten wird angegeben, welchen Wert das Beispiel annimmt resp. wie die Liste nach der Bearbeitung aussieht. Diese beziehen sich immer auf das Resultat der vorhergehenden Zeile. ^ **Erklärung** ^ **Code** ^ **Beispiel** ^ **Wert** ^ **Liste danach** ^ | **Länge** der Liste / Anzahl Elemente ermitteln | `len(liste)` | `len(faves)` | `3` | Liste unverändert | | **Element** an Position **ermitteln** | `liste[index]` | `faves[2]` | `'Muzak'` | Liste unverändert | | Element an Position **verändern** | `liste[index] = new_element` | `faves[2] = 'Music'` | | `['Pizza',42,'Music']` | | Element an Position **entfernen** | `pop()` | `faves.pop(1)` | | `['Pizza','Music']` | | Element hinten **anfügen** (engl. ‘append’) | `append()` | `faves.append('Football’)` | | `['Pizza','Music','Football']` | | Element an bestimmter Position **einfügen** | `insert()` | `faves.insert(2,'Pasta')` | | `['Pizza','Music','Pasta','Football']` | ==== Aufgaben A ==== Löse alle Aufgaben in dieser Serie **auf Papier**. In jeder Aufgabe starten wir mit einer Liste, die vorgegeben wird. Diese Liste muss *nicht* abgeschrieben werden. === Aufgabe 1 === Notiere neben jedem print-Befehl dessen Ausgabe. buchstaben = ['c','g','a','z','w'] print(buchstaben) # 1. buchstaben.pop(3) print(buchstaben) # 2. print(buchstaben[0]) # 3. buchstaben.append('q') print(buchstaben) # 4. buchstaben.insert(4,'e') print(buchstaben) # 5. buchstaben[1] = 'k' print(buchstaben) # 6. print(len(buchstaben)) # 7. === Aufgabe 2 === Notiere neben jedem print-Befehl dessen Ausgabe. cities = ["Bern", "Basel", "Zurich", "Genf", "Lausanne"] print(len(cities)) # 1. print(cities[3]) # 2. cities.append("Winti") cities.pop(1) cities.insert(2,"Biel") print(cities) # 3. === Aufgabe 3 === Starte mit der folgenden Liste: fruits = ["Spaghetti", "Apfel", "Banane", "Schockolade", "Orane", "Birne"] Notiere nun die Befehle, welche folgende Punkte umsetzen: 1. Entferne alle Elemente, die (leider) nicht in diese Liste gehören. 1. Füge ganz hinten eine "Mango" an. 1. Füge zwischen "Apfel" und "Banane" eine Kiwi ein. 1. Ooops, bei der "Orange" hat sich ein Fehler eingeschlichen. Korrigiere diesen, in dem du das Wort an Wort "Orane" durch "Orange" ersetzt. 1. Füge ganz am Anfang eine "Blaubeere" ein. 1. Befehl, welcher die Anzahl Früchte, die in der finalen Liste stehen, ermittelt. 1. Notiere zum Schluss die Liste so, wie sie am Schluss aussieht. === Aufgabe 4 === Starte mit folgender Liste: days = ['Donnerstag', 'Freitag', 'Montag', 'Mittwoch', 'Dienstag', 'Sonntag', 'Samstag'] Das Ziel ist, die Wochentage in die korrekte Reihenfolge zu bringen (beginnend am 'Montag'). Verwende dazu die bisher gelernten Befehle `append(), insert(), pop()`, wobei jeder dieser Befehlemindestens einmal (sinnvoll) verwendet werden muss. Achtung: Es ist verboten, selbst die Wochentage zu schreiben. Möchte man z.B. den 'Montag' vorne einfügen, muss man das Element mit Index 2 ('Montag') aus der Liste auslesen und ganz vorne einfügen. ++++Lösungen| **Aufgabe 1:** ['c', 'g', 'a', 'z', 'w'] # 1. ['c', 'g', 'a', 'w'] # 2. c # 3. ['c', 'g', 'a', 'w', 'q'] # 4. ['c', 'g', 'a', 'w', 'e', 'q'] # 5. ['c', 'k', 'a', 'w', 'e', 'q'] # 6. 6 # 7. **Aufgabe 2:** 5 # 1. Genf # 2. ['Bern', 'Zurich', 'Biel', 'Genf', 'Lausanne', 'Winti'] # 3. **Aufgabe 3:** fruits = ["Spaghetti", "Apfel", "Banane", "Schockolade", "Orane", "Birne"] # 1. fruits.pop(0) fruits.pop(2) # 2. fruits.append("Mango") # 3. fruits.insert(1,"Kiwi") # 4. fruits[3] = "Orange" # 5. fruits.insert(0,"Blaubeere") # 6. len(fruits) # oder print(len(fruits)) # 7. ['Blaubeere', 'Apfel', 'Kiwi', 'Banane', 'Orange', 'Birne', 'Mango'] **Augabe 4:** days = ['Donnerstag', 'Freitag', 'Montag', 'Mittwoch', 'Dienstag', 'Sonntag', 'Samstag'] days.insert(0,days[2]) days.pop(3) days.insert(1,days[4]) days.pop(5) days.insert(2,days[4]) days.pop(5) days.append(days[5]) days.pop(5) print(days) ++++ ==== - Listen iterieren ==== === Aufgaben B === === Aufgabe 1 === Betrachte die Liste `alphabet = ["B","C","X","D","Z","F","G","I","J"]`. Korrigiere die Liste, indem du: * am Anfang ein "A" einfügst * das "X" entfernst * dem Element mit Wert "Z" den korrekten Wert "E" zuweist * am richtigen Ort ein "H" einfügst * am Ende ein "K" anhängst === Aufgabe 2 === Die folgende Liste soll einige europäische Hauptstädte beinhalten: capitals = ["Berlin","Paris","Wien","Romanshorn","Ammsterdam","Konstanz","Prag"] Korrigiere die Liste mithilfe der bisher gelernten Befehle: 1. Ersetze "Romanshorn" direkt durch die Schweizer Hauptstadt. 1. Entferne die deutsche Stadt, die nichts in der Liste verloren hat. 1. Füge hinten die Hauptstadt von Norwegen ein. 1. Füge zwischen "Berlin" und "Paris" noch "Rom" ein. 1. Korrigiere den Schreibfehler in der holländischen Hauptstadt. === Aufgabe 3 === Betrachte die Liste: likeable_football_clubs = ["BVB", "Liverpool", "St. Gallen", "Bayern München", "Freiburg", "Breitenrain"] 1. Gehe mit einer Schleife der Reihe nach durch alle Elemente der Liste durch und gebe sie aus. 1. Die Bayern haben nichts in dieser Liste verloren. Bitte entferne sie, danke! Füge weiter deinen Lieblingsklub hinzu. === Aufgabe 4 === In der folgenden Liste sind alle Monate gespeichert: `months = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"]`. 1. Gib einen nach dem anderen aus. Der Output soll also sein: Januar Februar März April Mai Juni Juli August September Oktober November Dezember 1. Gleich wie 1., jeder zweite Monat soll aber ausgelassen werden. Output: Januar März Mai Juli September November === Aufgabe 5 === Gib von allen Zahlen, die in der Liste `primes = [2,3,5,7,11,13,17,19]` gespeichert sind, die jeweiligen Quadratzahlen aus. Ausgabe: 4 9 25 49 121 169 289 361 === Aufgabe 6 === Erstelle eine Liste, welche alle geraden Zahlen von $2$ bis und mit $100$ enthält. Starte mit einer *leeren* Liste, `even = []`. Erzeuge dann in einer while-Schleife alle geraden Zahlen und füge sie dieser Liste hinzu. Printe am Schluss die Liste, um sie zu überprüfen: `print(even)`. === Aufgabe 7 === Monika hat insgesamt $5$ verschiedene Konten. In der Liste hat sie die Beträge notiert, die sie auf den jeweiligen Konten hat: money = [503,27,1366,242,961] Wie viel Geld hat Monika? Berechne ihr Vermögen, indem du die einzelnen Beträge aufsummierst. Führe das Aufsummieren selbst in einer while-Schleife durch und verwende keine vordefinierte Funktion, die dies für dich erledigt. Monika überlegt sich, noch weitere Konten zu eröffnen, von denen sie die Beträge dann einfach der Liste anfügen würde. Dein Code soll dann nach wie vor funktionieren. === Aufgabe 8 === Speichere in einer Liste einige Noten, z.B. `grades = [5.5,4.75,6,3.5,5,5.5]`. Schreibe nun einen *eigenen* Code, der Notendurchschnitt berechnet, verwende also keine vordefinierte Funktion. Der Code soll auch funktionieren, wenn Noten entfernt oder hinzugefügt werden. **Zusatzaufgabe:** Gib die note korrekt auf halbe Noten gerundet aus. Schreibe einen eigenen Code für entsprechende Berechnung. === Aufgabe 9 === Gegeben seien zwei gleich lange Listen. Der Code soll nun eine neue Liste erstellen, welche die beiden ursprünglichen wie folgt zusammenführt (merged): `list_1 = ['R','M','N','H','R']` und `list_2 = ['o','a','s','o','n']` werden zu `['R', 'o', 'M', 'a', 'N', 's', 'H', 'o', 'R', 'n']` === Aufgabe 10 === Gegeben sei eine beliebige Liste `numbers`, welche ausschliesslich ganze Zahlen enthalten soll. Das Ziel ist nun, eine Liste zu erhalten, die die gleichen Werte in der gleichen Reihenfolge beinhaltet, mit Ausnahme aller Elemente mit Wert 7. Beispiel: Für die Liste `numbers = [7,1,7,7,2,3,7,4,5,7,6,7,7,7,8,9,7,10]` soll das Resultat sein `[1, 2, 3, 4, 5, 6, 8, 9, 10]` sein. Wähle eine der beiden Optionen: 1. *Einfacher:* Speichere die erwünschten Zahlen in einer *neuen Liste*. Starte dazu mit einer leeren Liste, z.B. `numbers_wo_7 = []` und füge dann die erwünschten Zahlen eine nach der anderen hinzu. 2. *Anspruchsvoller:* Erstelle *keine* weitere Liste sondern entferne diejenigen Elemente, die nicht in der Liste bleiben sollen. === Aufgabe 11 === Gegeben sei eine Liste mit Strings, z.B. `words = ["Elefant","Affe","Erdbeere","Esel","Schule","Tiger","Esstisch","Computer"]`. Ziel ist, eine Liste zu erhalten, welche die gleichen Strings in der gleichen Reihenfolge beinhaltet, mit Ausnahme derjenigen Strings, die mit "E" beginne. Man hat hier wieder die beiden Optionen wie in einer Aufgabe vorher: 1. *Einfacher*: Mit neuer Liste 1. *Anspruchsvoller:* Ohne neue Liste, Lösche entsprechende Strings aus der Liste heraus. *Tipp:* Falls `s` ein String ist, kann man mit `s[0]` auf den vordersten Buchstaben zugreifen. === Fertig mit Aufgaben? === 1. Einige Aufgaben haben anspruchsvollere Optionen, stelle sicher, dass du diese gelöst hast. 1. Erstelle einen Account auf [[https://www.codewars.com/|CodeWards]], folge dazu dem [[gf_informatik:programmieren_training_websites#codewars|Tutorial]]. Löse selbst Aufgaben dort. Wähle z.B. den *Tag* "Fundamental". ==== Lösungen ==== ++++Lösungen| **Lösung Aufgabe 1:** alphabet = ["B","C","X","D","Z","F","G","I","J"] alphabet.insert(0,"A") alphabet.pop(3) alphabet[4] = "E" alphabet.insert(7,"H") alphabet.append("K") print(alphabet) **Lösung Aufgabe 2:** capitals = ["Berlin","Paris","Wien","Romanshorn","Ammsterdam","Konstanz","Prag"] capitals[3] = "Zürich" capitals.pop(5) capitals.append("Oslo") capitals.insert(1,"Rom") capitals[5] = "Amsterdam" print(capitals) **Lösung Aufgabe 3:** likeable_football_clubs = ["BVB", "Liverpool", "St. Gallen", "Bayern München", "Freiburg", "Breitenrain"] # 1) i = 0 while i < len(likeable_football_clubs): print(likeable_football_clubs[i]) i = i + 1 # 2) likeable_football_clubs.pop(3) likeable_football_clubs.append("FC Romanshorn") print(likeable_football_clubs) **Lösung Aufgabe 4:** months = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"] # 1) i = 0 while i < len(months): print(months[i]) i = i + 1 print() # leere Linie, damit Output der beiden Teilaufgaben unterscheiden kann # 2) i = 0 while i < len(months): print(months[i]) i = i + 2 **Lösung Aufgabe 5:** primes = [2,3,5,7,11,13,17,19] i = 0 while i < len(primes): print(primes[i]**2) i = i + 1 **Lösung Aufgabe 6:** even = [] i = 2 while i <= 100: even.append(i) i = i + 2 # die Erhoehung der Variable sollte am ENDE des Blocks stehen print(even) **Lösung Aufgabe 7:** money = [503,27,1366,242,961] total = 0 i = 0 while i < len(money): total = total + money[i] i = i + 1 print(total) **Lösung Aufgabe 8:** grades = [5.5,4.75,6,3.5,5,5.5] summe = 0 i = 0 while i < len(grades): summe = summe + grades[i] i = i + 1 average = summe / len(grades) print(f"Der Notendurchschnitt ist {average}.") # Zusatzaufgabe: print(f"Der Notendurchschnitt auf 4tel-Noten gerundet ist {int(average * 4)/4}.") # Alternative Berechnung der Rundung # Idee: gehe alle moeglichen Noten 1,1.5,2,...,5,5.5,6 durch und schaue, ob Abstand von average genuegend klein ist. grade = 1 while grade <= 6: if abs(grade - average) <= 0.25: average_rounded = grade break # kann Schleife Abbrechen, sobald korrekte Note gefunden hat grade = grade + 0.5 print(average_rounded) **Lösung Aufgabe 9:** list_1 = ['R','M','N','H','R'] list_2 = ['o','a','s','o','n'] list_merged = [] i = 0 while i < len(list_1): list_merged.append(list_1[i]) list_merged.append(list_2[i]) i = i + 1 print(list_merged) **Lösung Aufgabe 10:** # OPTION 1 (einfacher) numbers = [7,1,7,7,2,3,7,4,5,7,6,7,7,7,8,9,7,10] numbers_wo_7 = [] i = 0 while i < len(numbers): if numbers[i] != 7: numbers_wo_7.append(numbers[i]) i = i + 1 print(numbers_wo_7) # OPTION 2 (anspruchsvoller) numbers = [7,1,7,7,2,3,7,4,5,7,6,7,7,7,8,9,7,10] i = 0 while i < len(numbers): if numbers[i] == 7: numbers.pop(i) else: # Achtung: Darf i nur erhoehen, wenn kein Element entfernt wurde. Grund: Wenn Element entfernt, ruecken alle nachherigen um eine Position zurueck i = i + 1 print(numbers) **Lösung Aufgabe 11:** ## OPTION 1 (einfacher) words = ["Elefant","Affe","Erdbeere","Esel","Schule","Tiger","Esstisch","Computer"] words_wo_E = [] i = 0 while i < len(words): if words[i][0] != "E": words_wo_E.append(words[i]) i = i + 1 print(words_wo_E) ## OPTION 2 (anspruchsvoller) words = ["Elefant","Affe","Erdbeere","Esel","Schule","Tiger","Esstisch","Computer"] i = 0 while i < len(words): if words[i][0] == "E": words.pop(i) else: i = i + 1 print(words) ++++ ===== - For-Schleifen ===== {{ :gf_informatik:programmieren_ii_02_for_schleifen.pdf |Slides For-Schleife}} Eine **for-Schleife** wird verwendet, um **alle Elemente einer Sequenz** (wie eine Liste, String usw.) durchzugehen. Man nennt dies auch *über eine Sequenz iterieren*. For-Schleifen haben die Form: for element in sequence: # Aktion, die für jedes Element ausgeführt wird Um zum Beispiel alle **Elemente einer Liste** auszugeben, schreibt man einfach: fruits = ["Apfel", "Banane", "Kirsche"] for fruit in fruits: print(fruit) ++++Äquivalente while-Schleife| fruits = ["Apfel", "Banane", "Kirsche"] i = 0 while i < len(fruits): print(fruits[i]) i = i + 1 ++++ Ganz ähnlich kann man alle **Zeichen eines Strings** durchgehen: word = "Python" for letter in word: print(letter) Der Output wird dann sein: P y t h o n ++++Äquivalente while-Schleife| word = "Python" i = 0 while i < len(word): print(word[i]) i = i + 1 ++++ ==== Aufgaben A ==== === Aufgabe 1 === Die Noten der letzten Franz-Prüfung einer Klasse sind: `grades = [6, 3.0, 5.5, 6, 5.25, 3.5, 3, 4.75, 5, 3.5, 5.25, 5.5, 4.75, 6, 3.75, 4.25, 3.25, 4.5, 3.5, 5]` 1. Berechne den Klassendurchschnitt selbst mithilfe einer while-Schleife. 1. Berechne den Klassendurchschnitt nun nochmals, aber mithilfe einer for-Schleife. Verwende in der Schleife eine sinnvolle Variable. === Aufgabe 2 === Finde mithilfe einer for-Schleife in der folgenden Liste die grösste Zahl und gib diese aus: `numbers = [3, 6, 2, 8, 4, 10, 1]`. Der Code soll auch für alle anderen Listen mit Zahlen funktionieren. Wende deinen Code nun auf diese längere Liste an: `numbers = [14, 41, 136, 38, 120, 24, 8, 129, 115, 117, 122, 1, 147, 39, 24, 94, 61, 26, 2, 26, 4, 73, 44, 78, 35, 156, 85, 116, 121, 106, 49, 131, 145, 32, 118, 118, 148, 19, 156, 25, 11, 3, 32, 102, 129, 129, 7, 20, 92, 35]` (Resultat: 156) === Aufgabe 3 === Schreibe einen Code, der mithilfe einer for-Schleife ermittelt, wie oft der Buchstabe 'S' in einem Wort (gespeichert in Variable `word`) vorkommt. Teste deinen Code für `WORD = "MISSISSIPPI"`. === Aufgabe 4 === Wandle mithilfe einer for-Schleife einen String in eine Liste um, die die Buchstaben des Wortes beinhaltet. Aus `word = "Python"` soll dann also `letters = ['P','y','t','h','o','n']` werden. Starte wie folgt: word = "Python" letters = [] # starte mit leerer Liste. Füge in for-Schleife nacheinander Buchstaben hinzu. for ... === Aufgabe 5 === Gegeben sei eine Liste mit Zahle `numbers = [5,3,7,1,2]`. Erstelle mithilfe einer for-Schleife eine neue Liste `doubles`, die von den Zahlen aus `numbers` jeweils das Doppelte beinhalten soll. `doubles` soll dann also `[10,6,14,2,4]` sein- === Aufgabe 6 === Kombiniere die folgenden beiden String `s1 = "IFRAI"` und `s2 = "nomtk"` zu einem einzigen String `"InFoRmAtIk` mithilfe einer for-Schleife. ++++Tipps| * Verwende eine for-Schleife, um auf die Buchstaben von `s1` zuzugreifen. * Das Problem ist, wie man jetzt auf die Buchstaben von `s2` zugreift: Mache dies wie bei der while-Schleife (aber ohne eine solche). Definiere eine Variable `i=0`, die du am Ende der for-Schleife um $1$ erhöhst. Verwende dann das `i` um auf die Buchstaben von `s2` zuzugreifen. ++++ === Aufgabe 7 === Gegeben ist die Liste `numbers = [24, 40, 16, 10, 7, 26, 15, 7, 25, 23, 25, 41, 38, 13, 21, 33, 10, 42, 13, 9, 20, 35, 5, 39, 15, 36, 35, 1, 27, 42]`. Erstelle eine neue, leere Liste `even = []`. Füge dieser Liste in einer for-Schleife alle *geraden* Zahlen aus numbers hinzu. *Tipp:* Mit `x % 2 == 0` kann man herausfinden, ob `x` gerade ist (also durch $2$ teilbar ist) oder nicht. === Aufgabe 8 === Der König im Buch 'Die wilde Sophie' hat panische Angst vor dem Buchstaben 'E'. Er verlangt von seinen Untertanen, dass sie in ihrer Sprach den Buchstaben 'E' einfach auslassen. Anstelle "ESEL ESSEN GERNE ERDBEEREN, BESONDERS BEI EINEM ELEGANTEN ELEFANTENESSEN." sollen sie sagen und schreiben: "SL SSN GRN RDBRN, BSONDRS BI INM LGANTN LFANTNSSN." Schreibe einen Code mit einer for-Schleife, der von einem gegebenen String eine neue Version *ohne* E's erstellt: text = "ESEL ESSEN GERNE ERDBEEREN, BESONDERS BEI EINEM ELEGANTEN ELEFANTENESSEN." text_ohne_E = "" # hier füge in for-Schleife Buchstaben (ausser E) von Text hinzu for ... ++++Tipps| Zwei Strings kann man mit `+` zusammenfügen, z.B.: s = "Hallo " + "Welt" # hat dann den Wert "Hallo Welt" ++++ === Aufgabe 9 === Diese und weitere Aufgaben weiter unten sollen mit **ineinander verschachtelten for-Schleifen** gelöst werden, also Code im Stil: for ...: for ...: ... ... ... Mit zwei unterscheidbaren Würfeln wird gleichzeitig gewürfelt. Gib alle möglichen Resultate aus, also: 11 12 13 .. 21 ... Tipp: Verwende verschachtelte for-Schleifen (for-Schleife in for-Schleife ...). === Aufgabe 10 === Kleine Einmaleins: Gib alle Multiplikationen von allen einstelligen natürlichen Zahlen aus. **Variante 1 (einfach):** Das Resultat soll also wie folgt aussehen: 0 * 0 = 0 0 * 1 = 0 0 * 2 = 0 0 * 3 = 0 0 * 4 = 0 0 * 5 = 0 0 * 6 = 0 0 * 7 = 0 0 * 8 = 0 0 * 9 = 0 1 * 0 = 0 1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 ... 9 * 9 = 81 **Variante 2 (anspruchsvoll):** Das Resultat soll wie folgt ausgegeben werden: | 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| --|--|--|--|--|--|--|--|--|--|--| 0|| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 1|| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 2|| 0| 2| 4| 6| 8|10|12|14|16|18| 3|| 0| 3| 6| 9|12|15|18|21|24|27| 4|| 0| 4| 8|12|16|20|24|28|32|36| 5|| 0| 5|10|15|20|25|30|35|40|45| 6|| 0| 6|12|18|24|30|36|42|48|54| 7|| 0| 7|14|21|28|35|42|49|56|63| 8|| 0| 8|16|24|32|40|48|56|64|72| 9|| 0| 9|18|27|36|45|54|63|72|81| Tipps: * Verwende die Liste `nrs = [0,1,2,3,4,5,6,7,8,9]` (resp. `range()` falls du dies bereits kennst). * Verwende wieder verschachtelte for-Schleifen. * Verwende f-Strings. ++++Lösungen| **Aufgabe 1:** **Aufgabe 2:** **Aufgabe 3:** **Aufgabe 4:** **Aufgabe 5:** **Aufgabe 6:** **Aufgabe 7:** **Aufgabe 8:** **Aufgabe 9:** **Aufgabe 10:** Einfach: nrs = [0,1,2,3,4,5,6,7,8,9] for x in nrs: for y in nrs: print(f"{x} * {y} = {x*y}") Anspruchsvoll: nrs = [0,1,2,3,4,5,6,7,8,9] s = ' |' l = '--|' for x in nrs: s = s + f' {x}|' l = l + '--|' print(s) print(l) for x in nrs: s = f'{x}||' for y in nrs: xy = x * y if len(str(xy)) == 1: s = s + f' {xy}|' else: s = s + f'{xy}|' print(s) #print(f"{x} * {y} = {x*y}") **Aufgabe 11:** ++++