python.casapython.casa
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
  • Stundenplan
  • Teil 1

    • Thema 1 - Einführung Programmiersprache
      • Slides Thema 1
      • Übungen Thema 1
    • Thema 2 - Variablen und Datentypen
      • Slides Thema 2
      • Übungen Thema 2
    • Thema 3 - Boolsche Algebra und Zeichenketten
      • Slides Thema 3
      • Übungen Thema 3
    • Thema 4 - Datum und Zeit
      • Slides Thema 4
      • Übungen Thema 4
    • Thema 5 - Kontrollstrukturen und Listen
      • Slides Thema 5
      • Übungen Thema 5
        • Aufgaben
          • Aufgabe 5.1: Liste deklarieren
          • Aufgabe 5.2: Listen kombinieren
          • Aufgabe 5.3: Listenkonfusion
          • Aufgabe 5.4: Listen verstehen
          • Aufgabe 5.5: Duplikate entfernen
          • Aufgabe 5.6: Zoo
          • Aufgabe 5.7: Minimum und Maximum
          • Aufgabe 5.8: Übersetzung
          • Aufgabe 5.9: Euklid
        • Wiederholungsfragen
    • Thema 6 - Funktionen und Flowcharts
      • Slides Thema 6
      • Übungen Thema 6
    • Thema 7 - Objektorientierte Programmierung
      • Slides Thema 7
      • Übungen Thema 7
    • Thema 8 - Ein- und Ausgabe
      • Slides Thema 8
      • Übungen Thema 8
  • Teil 2

    • Thema 9 - Module und Import
      • Slides Thema 9
      • Übungen Thema 9
    • Thema 10 - Datenbanken
      • Slides Thema 10
      • Übungen Thema 10
    • Thema 11 - Grafische Benutzeroberfläche
      • Slides Thema 11
      • Übungen Thema 11
    • Thema 12 - Webapplikation mit Python Flask
      • Slides Thema 12
      • Übungen Thema 12
    • Thema 13 - Versionskontrolle mit Git
      • Slides Thema 13
      • Übungen Thema 13
    • Thema 14 - Dokumentation mit Markdown
      • Slides Thema 14
    • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
      • Slides Thema 15
      • Übungen Thema 15
  • Prüfung

    • Wissensprüfung 1
    • Wissensprüfung 2
    • Leistungsnachweis

Ü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[?])

⭐ Monate.py

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.

⭐ ListeKombinieren.py

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])

⭐ ListenMethoden.py

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

⭐ DuplikateEntfernen.py

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.

Tips

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])

⭐ MinimumMaximum.py

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'.

⭐ Übersetzung.py

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.

⭐ Euklid.py

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]).

Der einfachste und effizienteste Weg, eine Liste mit Vielfachen von 7 kleiner 100 zu generieren, bietet die range-Funktion:
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.

Diese Übung ist schon etwas schwieriger! list bildet aus der Zeichenkette eine Liste. list(filter(...)) bildet daraus eine neue Liste, die nur Vokale enthält. Den dabei eingesetzten in-Operator haben Sie bereits im Kapitel 3, »Operatoren«, kennengelernt. join fügt diese Liste wieder zu einer Zeichenkette zusammen.
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)
  eoo
Der 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?

Hier gibt es keine eindeutige Antwort: Eine Grundregel bei Lottozahlen ist, dass Sie eindeutig sein müssen. Es darf also keine Zahl mehrfach vorkommen. Aus diesem Grund bieten sich Sets an. Oft sollen Lottozahlen aber geordnet dargestellt werden – und das können nur Listen. Die folgenden Zeilen zeigen, wie Sie Lottozahlen zuerst als Set speichern und daraus bei Bedarf eine geordnete Liste machen.
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.

Durch die Umwandlung in ein set werden alle Doppelgänger eliminiert. sorted macht aus dem Set eine geordnete Liste.
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.

Wie die Aufgabenstellung schon andeutet, ist hier ein Dictionary die optimale Datenstruktur. Beachten Sie aber, dass das Wörterbuch nur in eine Richtung funktioniert! woerter['three'] würde einen Key Error liefern, weil ja ausschließlich deutsche Wörter als Schlüssel verwendet wurden.
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)
Das Programm gibt die Zahlen 1, 2 und 3 aus. Die Begründung lautet: In der äußeren Schleife hat i zuerst den Wert 0. Für die innere Schleife gilt nun range(1), was eine Kurzschreibweise für range(0, 1) ist. Da die obere Schranke exklusiv, wird die Schleife nur einmal mit j=0 ausgeführt. Das führt zur Ausgabe 1. In der äußeren Schleife erhält i nun den Wert 2. Die j-Schleife durchläuft mit range(2) (entspricht range(0, 2)) die Werte 0 und 1. Damit werden die Zahlen 2 und 3 ausgegeben.

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.

Der Lösungscode beginnt mit der Definition von vier Variablen: min und max legen die obere und untere Grenze des Zahlenbereichs fest. nmax bestimmt die Anzahl der Schleifendurchläufe. delta gibt an, wie stark sich die Zielvariable x mit jedem Durchlauf ändern soll. In der Schleife durchläuft i die Werte von 0 bis einschließlich nmax.
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
Edit this page
Last Updated:
Contributors: Janik von Rotz
Prev
Slides Thema 5