Übungen Thema 5
Aufgaben
Aufgaben zum Thema.
Aufgabe 5.1: Liste deklarieren
Erstellen Sie eine Liste mit allen 12 Monaten.
monate = ['Januar', 'Feburar', ...]
Und geben Sie den den zehnten Monat aus. Was müssen Sie für ?
einsetzen?
print(monate[?])
Aufgabe 5.2: Listen kombinieren
Sie erhalten diese Liste:
arbeitstage = ['Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag']
Und diese Liste:
wochenende = ['Samstag', 'Sonntag']
Kombinieren Sie die beiden Listen zu einer neuen Liste woche
mithilfe der extend
-Methode und geben Sie den Inhalt der Liste aus.
Aufgabe 5.3: Listenkonfusion
Lies das folgende Programm und versuche zu erraten, was die Ausgabe ist. Probiere es anschliessend aus und suche nach einer Erklärung des Verhaltens.
a = ['Hallo', 'schönes', 'Wetter']
b = a
b[1] = 'schlechtes'
print(a[0], a[1], a[2])
Das Verhalten dieses Programms ist der Grund, warum wir uns in Python Variablen nicht als Speicherplätze sondern als Namensschilder für Objekte vorstellen. Kannst du dies erklären?
Aufgabe 5.4: Listen verstehen
Speicheren Sie die Elemente 'Schwalbe'
, 'Kokosnuss'
, 13
, 'Spam'
und 3.14
in einer Liste mit dem Namen liste
ab und versuchen zu verstehen was die folgenden Methoden machen. Verwenden Sie dazu den Python-Debugger.
liste[2] = 666
liste.append('Ni')
liste.extend([4, 5, 3.14])
liste.insert(2, 'Taube')
liste.count(3.14)
liste.index(3.14)
liste.remove(3.14)
liste.pop()
liste.reverse()
sum([1,3,5])
Aufgabe 5.5: Duplikate entfernen
Sie erhalten eine Liste von Programmiersprachen:
lang = ['Java', 'Python', 'Java', 'C++', 'C', 'C#', 'JavaScript', 'Python', 'Go', 'Swift', 'Go', 'PHP', 'C']
Diese Liste enthält Duplikate und ist nicht sortiert. Um das zu verbesseren gehen Sie wie folgt vor:
- Wandeln Sie die Liste mit
set()
in Set um - Wandel Sie das Set mit
list()
wieder in eine Liste um - Sortieren Sie die Liste mihilfe dert
sort
-Methode - Geben Sie den Inhalt der Liste aus
Aufgabe 5.6: Zoo
Gegeben ist der folgende Anfang eines Programms:
animals = ["tiger", "mouse", "bird", "python", "elephant", "monkey"]
Ergänze das Programm so, dass für jedes Tier aus der Liste animals der Satz VARIABLE ist ein Tier.
in der Konsole ausgegeben wird. Benutze dafür wie immer die print()
Funktion.
⭐ Zoo.py
Aufgabe 5.7: Minimum und Maximum
Schreiben Sie ein Programm, welches vom Benutzer 5 Zahlen einliest und diese in einer Liste speichert. Anschliessend soll das Minimum und das Maximum der Zahlen aus der Liste bestimmt und ausgegeben werden.
TIP
Die folgenden Elemente sollten weiterhelfen:
# Eine leere Listeerstellen
liste = []
# Zahl eingeben
zahl = input("Eingabe: ")
# Schleife von 1 bis 5
for i in range(1,6):
print(i)
# Kleinste Zahl aus Liste ausgeben
min([1,3,2])
Aufgabe 5.8: Übersetzung
Sie erhalten dieses Dictionary:
monate = {
'january': 'Januar',
'february': 'Feburar',
'march': 'März',
'april': 'April',
'mai': 'Mai',
'june': 'Juni',
'july': 'Juli',
'august': 'August',
'september': 'September',
'october': 'Oktober',
'november': 'November',
'december': 'Dezember'
}
Schreiben Sie ein Programm welches für jeden Monat in der Liste den folgenden Satz ausgibt: The german translation for 'january' is 'Januar'
.
Aufgabe 5.9: Euklid
Schreibe ein Programm, welches mit input()
zwei Zahlen vom Benutzer einliest und den grössten gemeinsamen Teiler der beiden Zahlen mitprint()
ausgibt.
Dazu können Sie den Euklidischen Algorithmus implementieren. Mehr dazu finden Sie hier: https://de.wikipedia.org/wiki/Euklidischer_Algorithmus.
Wiederholungsfragen
W1: Versuchen Sie, drei unterschiedliche Wege zu finden, eine Liste mit den Vielfachen von 7 zu bilden, die kleiner als 100 sind (also [7, 14, ..., 98]).
lst = list(range(7,100,7)) print(lst) [7, 14, 21, 28, 35, 42, 49, 56, 63, 70, 77, 84, 91, 98]Deutlich umständlicher ist es, von einer Liste aller Zahlen zwischen 1 und 100 auszugehen und dann die herauszufiltern, die durch 7 teilbar sind:
hundred = list(range(1,101)) # [1, 2, ..., 100] lst = list(filter(lambda x: x%7==0, hundred))Eine weitere Variante besteht darin, mit den Zahlen von 1 bis 14 zu beginnen und jedes Element mit 7 zu multiplizieren. Im folgenden Beispiel kommt dabei die List-Comprehension-Syntax zur Anwendung.
fourteen = list(range(1,15)) # [1, 2, ..., 14] lst = [ x*7 for x in fourteen ]Zum gleichen Ergebnis kommt list(map(...)) mit der Funktion x*7:
lst = list(map(lambda x: x*7, fourteen))
W2: Extrahieren Sie aus der Zeichenkette Hello, World! alle Vokale und verbinden Sie diese zu einer neuen Zeichenkette.
lst = list('Hello, World!') vocals = list(filter( lambda x: x in ('a', 'e', 'i', 'o', 'u'), lst)) print(vocals) ['e', 'o', 'o'] result = ''.join(vocals) print(result) eooDer obige Code hat den Nachteil, dass er nur für Kleinbuchstaben funktioniert. Dieser Mangel lässt sich beheben, indem Sie im Filterausdruck Großbuchstaben mit lower in Kleinbuchstaben umwandeln:
vocals = list(filter( lambda x: x.lower() in ('a', 'e', 'i', 'o', 'u'), lst))
W3: Welchen Datentyp verwenden Sie, um Lottozahlen zu speichern?
lotto = {34, 12, 25, 26, 3, 40} geordnet = sorted(lotto) print(geordnet) [3, 12, 25, 26, 34, 40]
W4: Entfernen Sie die Doppelgänger aus einer Liste von Zahlen, z. B. aus [1, 2, 3, 2, 7, 3, 9]. Die Ergebnisliste soll aufsteigend sortiert sein.
lst = [1, 2, 3, 2, 7, 3, 9] result = sorted(set(lst)) print(result) [1, 2, 3, 7, 9]
W5: Erstellen Sie ein kleines Deutsch-Englisch-Wörterbuch für Zahlen. Beispielsweise soll woerter['eins'] die englische Bezeichnung 'one' liefern.
woerter = { 'eins': 'one', 'zwei': 'two', 'drei': 'three'} woerter['zwei'] 'two'
W6: Berechnen Sie die Fakultät der Zahlen von 1 bis 20. (Die Fakultät ist als das Produkt aller Zahlen bis n definiert. Die Fakultät von 6 ist also 1×2×3×4×5×6 = 720.)
f = 1 for i in range(1, 21): f = f * i print('Die Fakultät von', i, 'beträgt', f)
W7: Berechnen Sie die Summe der Funktion 1/x^2, wenn Sie für x alle Zahlen zwischen 2 und 30 einsetzen.
Die Summe von 1/2 + 1/4 + 1/9 + … + 1/900 berechnen Sie z. B. so: sum = 0 for i in range(2, 31): sum += 1 / (i*i)
W8: Was wird bei der Ausführung des folgenden Codes ausgegeben?
for i in range(1, 3):
for j in range(i):
print(i+j)
W9: Schreiben Sie eine while-Schleife, die in 5er-Schritten von 100 bis 0 zählt.
i=100 while i>=0: print(i) i-=5
W10: Formulieren Sie eine Schleife, um den Wertebereich zwischen 125 und 160 in elf Schritten zu durchlaufen. Das Programm soll alle elf Zahlen ausgeben, beginnend mit 125,0 und endend mit 160,0.
min = 125.0 max = 160.0 nmax = 11 delta = (max - min) / (nmax - 1) for i in range(nmax): x = min + delta * i print(x) # Ausgabe: 125.0 128.5 132.0 135.5 ... 156.5 160.0