Departement Informatik
Informatikgrundlagen f¨ ur Humanmedizin
Dr. Hans-B¨ockenhauer Dr. Dennis Komm
https://courses.ite.inf.ethz.ch/inform_med_21/
21. Oktober 2021
Ubungsblatt 1 ¨
L¨ osungsvorschl¨ age
Aufgabe 1
Schreiben Sie ein Programm, das die Benutzerin nach einem Z¨ahler und einem Nenner fragt und dann den Z¨ahler ganzzahlig durch den Nenner teilt.
Hier ist ein Beispiel einer Ausgabe:
1 Gib den rechten Operanden ein: 6
2 Gib den linken Operanden ein: 4
3 Wir teilen 6 durch 4 und erhalten: 1
Uberlegen Sie sich, was passiert, wenn der linke Operand eine Null ist. ¨¨ Uberpr¨ufen Sie Ihre Annahme.
L¨ osung
1 a = int(input("Gib den rechten Operanden ein: "))
2 b = int(input("Gib den linken Operanden ein: "))
3 print("Wir teilen", a, "durch", b, "und erhalten:", a//b)
Die erste Zeile mit der input()-Funktion gibt einen String zur¨uck. Da wir in Zeile 2 eine Zahl definieren, muss der String zus¨atzlich in einen Integer umgewandelt werden. Dazu verwenden wir die bereits bekannte Funktion int().
In Zeile 3 wird das Resultat von a//b ausgegeben, was der ganzzahligen Division von Python entspricht.
Aufgabe 2
Schreiben Sie ein Programm, das die Benutzerin nach einer Zahl n fragt und danach die ersten n Fibonacci-Zahlen ausgibt.
Hinweis: Die ersten beiden Fibonacci-ZahlenF1 undF2 sind definiert als F1 :=F2 := 1.
Die k-te Fibonacci-Zahl Fk, f¨ur k ≥3, ist dann definiert als Fk :=Fk−2+Fk−1. Die ersten sechs Fibonacci-Zahlen sind beispielsweise 1, 1, 2, 3, 5, 8.
L¨ osung
1 n = int(input("Geben Sie eine Zahl ein: "))
2 fib = [1, 1]
3 for i in range(2, n):
4 fib.append(fib[i-2] + fib[i-1])
5
6 print("Die ersten ", n, "Fibonacci-Zahlen sind: ", fib)
Zuerst wird n eingelesen und direkt durch die int()-Funktion von einem Zeichen in einen Integer umgewandelt. Die Liste fibwird mit den ersten beiden Fibonacci-Zahlen initialisiert und dann in einer for-Schleife mithilfe der append()-Funktion schrittweise mit den ersten n Fibonacci-Zahlen gef¨ullt.
Aufgabe 3
Bestimmen Sie die Ausgabe des folgenden Programms.
1 l = [":)","^^","XD","~(-.-)","0.0"]
2 print("for i in l: ", end= "")
3 for i in l:
4 print(i, end=" ")
5 print()
6 print("for i in range(0, len(l)): ", end= "")
7 for i in range(0, len(l)):
8 print(i, end=" ")
9 print()
L¨ osung
Die folgende Ausgabe wird erzeugt.
1 for i in l: :) ^^ XD ~(-.-) 0.0
2 for i in range(0, len(l)): 0 1 2 3 4
Die erste for-Schleife l¨auft durch die einzelnen Elemente von l, w¨ahrend die zweite for-Schleife durch die Zahlen von 0 bis 4 l¨auft.
Aufgabe 4
Schreiben Sie ein Programm, das Folgendes ausgibt.
1 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
2 [0, 0, 0, 0, 1, 1, 0, 0, 0, 0]
3 [0, 0, 0, 2, 2, 2, 2, 0, 0, 0]
4 [0, 0, 3, 3, 3, 3, 3, 3, 0, 0]
5 [0, 4, 4, 4, 4, 4, 4, 4, 4, 0]
6 [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]
L¨ osung
1 for i in range(0, 6):
2 line_outer = [0]*(5-i)
3 line_middle = [i]*(i*2)
4 line = line_outer + line_middle + line_outer
5 print(line)
In der for-Schleife wird eine Zeile nach der andern erstellt. Dabei wird jede Zeile aus drei Teilen zusammengesetzt. Der erste Teil entspricht einer Liste mit der korrekten Anzahl Nullen auf der linken Seite. Der zweite Teil entspricht dem Mittelteil mit ¨andernden Zahlen und der dritte Teil ist wiederum wie der erste Teil die korrekte Anzahl Nullen auf der linken Seite.
Teil 1 und 3 sind immer gleich lang und k¨onnen darum mit einer Liste erstellt werden.
Diese Liste heisst hier line_outer und wird in Zeile 2 erstellt. Sie hat die L¨ange 5-i.
Der zweite Teil heisst hier line_middle und wird in Zeile 3 erstellt. Er hat die L¨ange 2 * i und jedes Element erh¨alt den Wert i.
In Zeile 4 werden die Listen dann zusammengesetzt zu einer Liste die der aktuellen Zeile entspricht.
In Zeile 5 wird diese Liste ausgegeben.
Aufgabe 5
Schreiben Sie ein Programm, das die Benutzerin nach einer Zahl fragt und eine Pyramide mit dieser Zahl als H¨ohe ausgibt.
Hier eine Beispielausgabe.
1 Gib eine Zahl ein: 8
2 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
3 [0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0]
4 [0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0]
5 [0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0]
6 [0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0]
7 [0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0]
8 [0, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0]
9 [0, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0]
10 [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8]
L¨ osung
1 limit = int(input("Gib eine Zahl ein: "))
2 for i in range(0,limit+1):
3 line_outer = [0]*(limit-i)
4 line_middle = [i]*(i*2)
5 line = line_outer + line_middle + line_outer
6 print(line)
Diese Aufgabe funktioniert sehr ¨ahnlich wie Aufgabe 4. Der einzige Unterschied liegt darin, dass die Werte 5 und 6 durch eine Variable limit ersetzt werden. Diese Variable wird in Zeile 1 eingelesen und mit int() in eine Zahl umgewandelt.