Lösungen zu den Übungen#
4.1 Basis Datentypen#
Übungen#
Deklariere Variablen unterschiedlichen Datentyps deiner Wahl. Gib jeweils Typ und Inhalt der Variable aus.
Deklariere zwei numerische Variablen und führe Additions-, Subtraktions-, Multiplikations- und Divisionsoperationen mit ihnen durch. Gib die Ergebnisse aus.
Versuche eine String-Variable und eine numerische Variable zu kombinieren? Was passiert? Was ist für eine solche Kombination notwendig?
Der Name und das Geburtsdatum von Marie Curie sind in Variablen gespeichert. Füge sie in einer String-Variable zusammen und gib das Ergebnis aus. Die Ausgabe soll „Marie Curie, * 7. November 1867“ lauten.
first_name = "Marie"
last_name = "Curie"
birthday_day = 7
birthday_month = "November"
birthday_year = 1867
Lösung#
my_int = 5
my_bool = True
print(type(my_int), my_int)
print(type(my_bool), my_bool)
<class 'int'> 5
<class 'bool'> True
my_float = 3.14
print(my_float + my_int)
print(my_float - my_int)
print(my_float * my_int)
print(my_float / my_int)
8.14
-1.8599999999999999
15.700000000000001
0.628
my_string = "Hello"
print(my_string + my_int)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[4], line 2
1 my_string = "Hello"
----> 2 print(my_string + my_int)
TypeError: can only concatenate str (not "int") to str
Die Kombination von Strings und numerischen Werten ist nicht direkt möglich - es wird eine entsprechende Fehlermeldung (TypeError) ausgegeben. Hierfür muss der numerische Wert zunächst in einen String umgewandelt werden.
print(my_string + str(my_int))
Hello5
print(f'"{first_name} {last_name}, * {birthday_day}. {birthday_month} {birthday_year}"')
"Marie Curie, * 7. November 1867"
4.2 Mathe in Python#
Übung#
Wie können wir mit unserem Wissen über die eingebauten Funktionen den Mittelwert der folgenden Liste berechnen?
my_list = [1, 2, 3, 4, 5]
Lösung#
Den Mittelwert einer Zahlenfolge berechnen wir, indem die Summe der Zahlen durch deren Anzahl geteilt wird. Hierfür können die eingebauten Funktionen sum
und len
genutzt werden.
mean = sum(my_list) / len(my_list)
print(mean)
3.0
4.3 Sequenz-Typen#
Übungen#
Erstelle eine Liste mit deinen Lieblingsfrüchten. Versuche, sie mit der numerischen Liste
my_list
von oben zu kombinieren - denk daran, wie wir Strings kombiniert haben. Gib das Ergebnis aus.Erstelle ein Tuple mit jeder zweiten Zahl von 0 bis einschließlich 200 und gib das letzte Element aus.
Lösung#
my_fruits = ['apple', 'banana', 'cherry']
combined_list = my_list + my_fruits
print(combined_list)
[1, 2, 3, 4, 5, 'apple', 'banana', 'cherry']
my_tuple = tuple(range(0, 201, 2))
print(my_tuple[-1])
200
4.4 Dictionaries#
Übung#
Du hast gerade die Radien von drei Kreisen gemessen. Trage sie in eine Tabelle ein und füge eine Spalte mit den entsprechenden Kreisflächen hinzu.
r1 = 12
r2 = 8
r3 = 15
Lösung#
Zur Berechnung der Kreisfläche nutzen wir die Formel \(A = \pi r^2\). Die Zahl pi ist in der Python Standardbibliothek im Modul math
enthalten. Wir importieren das Modul und definieren die Formel zur Berechnung des Radius, welche in unserer Tabelle (Dictionary) genutzt wird.
import math
area1 = math.pi*r1**2
area2 = math.pi*r2**2
area3 = math.pi*r3**2
circles = {
"radius": [r1, r2, r3],
"area": [area1, area2, area3]
}
print(circles)
{'radius': [12, 8, 15], 'area': [452.3893421169302, 201.06192982974676, 706.8583470577034]}
5.2 Conditions#
Übung#
Schreibe ein kurzes Programm, welches ausgibt, ob eine Zahl positiv, negativ, oder Null ist. Wir können für eine vorangestellte Typ-Prüfung das Modul numbers
aus der Standardbibliothek in Kombination mit der eingebauten Funktion isinstance
nutzen, um zu überprüfen, ob die Eingabe vom Typ Zahl ist.
import numbers
input_number = 5
if isinstance(input_number, numbers.Number):
if input_number > 0:
print("The number is positive")
elif input_number < 0:
print("The number is negative")
else:
print("The number is zero")
else:
print("The input is not a number")
The number is positive
5.3 Loops#
Übungen#
Schreibe einen for Loop, der jede 2. Zahl beginnend von 0 bis 10 ausgibt.
Schreibe einen while Loop, der eine anzugebende Zahl solange halbiert und ausgibt, wie diese Zahl größer als 1 ist.
Angenommen, wir haben die folgende Liste von Dateinamen und wollen etwas mit ihnen machen, zum Beispiel die Namen ausgeben oder Inhalte bearbeiten. Programmiere eine for-Schleife, die alle Dateinamen ausgibt, die mit „txt“ enden. Hierzu sind evtl. auch eingebaute Methode für Strings ganz nützlich.
file_names = ['dataset1.txt', 'dataset2.txt', 'summary.csv', 'readme.md', 'interviews.txt']
Lösung#
for i in range(0, 11, 2):
print(i)
0
2
4
6
8
10
number = 16
while number > 1:
print(number)
number = number / 2
16
8.0
4.0
2.0
for file in file_names:
if file.endswith('.txt'):
print(file)
dataset1.txt
dataset2.txt
interviews.txt
6.1 Funktionen#
Übung#
Mit dem Wissen aus den vorangegangenen Abschnitten und den Informationen über Module in der Standardbibliothek von Python soll eine Funktion geschrieben werden, um alle Dateien aus dem entpackten Ordner my_data.zip zu öffnen und deren Inhalt nacheinander in ein Dictionary einzufügen. Dabei sollen die Dateinamen als Key genutzt werden, also dateiname:inhalt
. Dieses Dictionary soll als Ergebnis der Funktion zurückgegeben werden. Lasst euch die Werte des Dictionary danach in der korrekten Reihenfolge anzeigen.
Hilfreich ist hierfür z.b. das Modul os aus der Standardbibliothek für allgemeine Operationen im Betriebssystem, z.b. um Inhalte eines Ordners lesen.
Außerdem ist ein Blick in passende Online-Tutorials immer hilfreich, z.B.:
Lösung#
Achtung: es gibt zahlreiche Möglichkeiten diese Aufgabe zu lösen. Hier ist eine mögliche Lösung mit ausführlicher Kommentierung:
# my_data.zip vorab in ein Verzeichnis my_data entpacken
import os
# Dictionary für Dateinamen und Inhalt
my_dict = {}
# Über alle Dateien im Verzeichnis iterieren
for file_name in os.listdir('my_data'):
# Datei anhand ihres Dateinamens und des Ordnerpfads lesend ('r' für 'read') öffnen
# Dateien sollten nach dem Lesen oder Schreiben immer wieder explizit geschlossen werden
# `with` in Kombination mit `open` kann genutzt werden, um eine Datei zu öffnen und nach dem Lesen wieder zu schließen
# Diese Aufgaben werden von einem sogenannten "Context Manager" übernommen, welcher via `with` erstellt wird
# - siehe: https://docs.python.org/3/library/functions.html#open
# - siehe: https://realpython.com/why-close-file-python/
with open(os.path.join('my_data', file_name), 'r') as file:
# Dateinamen und Inhalt der Datei in das Dictionary einfügen
my_dict[file_name] = file.read()
# Werte des Dictionary sortiert nach Dateinamen (key) ausgeben
# Nutzung einer Generator-Expression ("the pythonic way"), siehe https://docs.python.org/3/glossary.html#term-generator-expression
# Eine sortierte Liste der Dictionary-Werte erhalten und die Werte der Liste zu einem durch Leerzeichen getrennten String kombinieren.
print(' '.join([f'{value}' for key, value in sorted(my_dict.items())]))
# Das Ganze zur Veranschaulichung als for Schleife ausgeschrieben:
my_values = []
for key, value in sorted(my_dict.items()):
my_values.append(value)
print(' '.join(my_values))
I have mastered Python programming
I have mastered Python programming