Departement Informatik
Informatikgrundlagen f¨ ur Humanmedizin
Dr. Hans-B¨ockenhauer Dr. Dennis Komm
https://courses.ite.inf.ethz.ch/inform_med_21/
2. December 2021
Ubungsblatt 4 ¨
Aufgabe 1
Vollziehen Sie nach, was das folgende Programm bewirkt, welches eine List-Comprehension verwendet, um eine Liste von sogenannten
”Tupeln“ zu erstellen. F¨ugen Sie Bedingungen hinzu, so dass in der Liste nur gerade Zahlen verwendet werden.
1 data = [ (a, b) for a in range(0, 10) for b in range(0, 10) ]
2 print(data)
Aufgabe 2
Initialisieren Sie eine (10×10)-Matrix, welche mit Nullen gef¨ullt ist. Verwenden Sie hierzu zwei List-Comprehensions.
1 matrix = # Fuegen Sie Ihren Code hier ein
2 for m in matrix:
3 print(m)
Aufgabe 3
Schreiben Sie ein Programm, welches die Listedatain einen Pandas-DataFrame konvertiert, welcher die Spaltennamen in column_names besitzt. Bearbeiten Sie diesen DataFrame, bis seine Ausgabe der untenstehenden Ausgabe entspricht. Erstellen Sie einen Plot, der die Anzahl ¨alterer Geschwister und die Anzahl j¨ungerer Geschwister als bar-Diagramm darstellt. Die x-Achse soll dabei dem Alter entsprechen.
Tipp: ¨Andern Sie die Typen der Spalten "Age", "Siblings"und "OlderSiblings" zu int.
1 import pandas as pd
2 import matplotlib.pyplot as plt
3
4 # column names
5 column_names = ["Name", "Age", "Siblings", "OlderSiblings"]
6
7 # datapoints
8 data = [
9 ["Anna", "20", "5", "2"],
10 ["Bob", "17", "3", "0"],
11 ["Charlie", "19", "0", "0"],
12 ["Donna", "23", "1", "1"],
13 ["Eva", "30", "2", "0"],
14 ["Francis", "21", "1", "0"],
15 ["Giovanni", "20", "0", "0"],
16 ["Herbert", "18", "4", "3"],
17 ["Ivo", "22", "2", "1"],
18 ["Johanna", "22", "3", "2"],
19 ["Karl", "24", "0", "0"],
20 ["Lucas", "21", "1", "0"]
21 ]
22
23 # data wird in einen Pandas-DataFrame umgewandelt
24 df_data = pd.DataFrame(data, columns=column_names)
Gew¨unschte Ausgabe:
1 Name Age Older Junger
2 0 Anna 20 2 3
3 1 Bob 17 0 3
4 2 Charlie 19 0 0
5 3 Donna 23 1 0
6 4 Eva 30 0 2
7 5 Francis 21 0 1
8 6 Giovanni 20 0 0
9 7 Herbert 18 3 1
10 8 Ivo 22 1 1
11 9 Johanna 22 2 1
12 10 Karl 24 0 0
13 11 Lucas 21 0 1
Aufgabe 4
Uberlegen Sie sich, welche Elemente die Funktion¨ binsearch() im folgenden Code an- schauen w¨urde.
1 data = [3*i for i in range(15)]
2
3 def binsearch(data, searched):
4 left = 0
5 right = len(data) - 1
6 while left <= right:
7 current = (left + right) // 2
8 if data[current] == searched:
9 return current
10 elif data[current] > searched:
11 right = current - 1
12 else:
13 left = current + 1
14 return -1
15
16 binsearch(data, 1)
17 binsearch(data, 45)
18 binsearch(data, 7)
19 binsearch(data, 18)
20 binsearch(data, 32)
21 binsearch(data, 20)
22 binsearch(data, 21)