Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists [2019/02/18 20:14] Ivo Blöchliger created |
lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists [2019/02/26 10:02] (current) Ivo Blöchliger [Aufgabe 1] |
||
---|---|---|---|
Line 14: | Line 14: | ||
for i in a: # i nimmt nacheinander die Werte 0, | for i in a: # i nimmt nacheinander die Werte 0, | ||
- | print i | + | print(i) |
for i in b: # i nimmt nacheinander die Werte 2, 3, 5, 77, 11, 17 an | for i in b: # i nimmt nacheinander die Werte 2, 3, 5, 77, 11, 17 an | ||
- | print i | + | print(i) |
a[3] = 99 # Fehler! Inhalt der Liste kann nicht veraendert werden. | a[3] = 99 # Fehler! Inhalt der Liste kann nicht veraendert werden. | ||
Line 24: | Line 24: | ||
+ | |||
+ | |||
+ | ===== Erzeugung von Arrays ===== | ||
+ | <code python> | ||
+ | # Mit einer for-Schlaufe | ||
+ | w = [] # Leeres Array | ||
+ | for i in range(11): | ||
+ | w.append(i*i*i) | ||
+ | |||
+ | print(w) | ||
+ | |||
+ | |||
+ | # The fancy way: | ||
+ | q = [i*i for i in range(11)] | ||
+ | print(q) | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Aufgabe 1 ==== | ||
+ | Erzeugen Sie ein Array der Länge $n$ (z.B. 20) so, dass das erste Element 0, das zweite 1, und jedes folgende Element die Summe der beiden vorhergehenden ist. Die Länge $n$ soll sich ganz einfach im Code anpassen lassen. Für $n=20$ sollte das Resultat | ||
+ | [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181] | ||
+ | sein. | ||
+ | |||
+ | <hidden Lösungsvorschlag> | ||
+ | <code python> | ||
+ | n = 20 | ||
+ | fib = [0,1] | ||
+ | for i in range(2,n): | ||
+ | fib.append(fib[i-2]+fib[i-1]) | ||
+ | print(fib) | ||
+ | </ | ||
+ | Der Quotient nähert sich $\frac{1}{\varphi}$, | ||
+ | </ | ||
+ | |||
+ | Erzeugen Sie daraus ein Array der Länge $n-1$, das die Quotienten zweier aufeinanderfolgenden Einträge vom obigen Array enthält. Resultat: | ||
+ | [0.0, 1.0, 0.5, 0.6666666666666666, | ||
+ | |||
+ | Wissen Sie, welcher Zahl sich diese Folge nähert? | ||
+ | |||
+ | <hidden Lösungsvorschlag> | ||
+ | <code python> | ||
+ | n = 20 | ||
+ | fib = [0,1] | ||
+ | for i in range(2,n): | ||
+ | fib.append(fib[i-2]+fib[i-1]) | ||
+ | print(fib) | ||
+ | |||
+ | quotients = [] | ||
+ | for i in range(1, | ||
+ | quotients.append(fib[i-1]/ | ||
+ | |||
+ | print(quotients) | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | ==== Aufgabe 2 ==== | ||
+ | Erzeugen Sie ein Array mit den ersten $n$ (z.B. 100) Primzahlen. | ||
+ | |||
+ | Bonus: Benutzen Sie das teilweise erstellte Array von Primzahlen, um effizienter die Primalität weiterer Kandidaten festestellen zu können. | ||
+ | |||
+ | ==== Aufgabe 3 ==== | ||
+ | Erzeugen Sie ein Array mit $n$ Einträgen, die alle True sein sollen, ausser die Einträge mit den Indizies 0 und 1 sollen False sein. | ||
+ | |||
+ | Setzen Sie dann jeden zweiten Eintrag (ab Index 4) auf False (weil nicht prim). | ||
+ | |||
+ | Dann jeden dritten Eintrag (ab Index $9=3\cdot 3$) auf False (weil nicht prim). | ||
+ | |||
+ | Dann jeden fünften Eintrag (ab Index 25), etc. | ||
+ | |||
+ | Dand jeden $p$-ten Eintrag (ab Index $p^2$), wobei $p$ eine Primzahl ist. | ||
+ | |||
+ | Am Schluss erhalten Sie ein Array, das für jeden Index angibt, ob der Index prim ist oder nicht. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Mehrdimensionale Arrays ===== | ||
+ | Ein mehrdimensionales Arrays ist einfach ein Array, das als Element wieder Arrays enthält. | ||
+ | |||
+ | <code python> | ||
+ | a = [[1, | ||
+ | print(a[0]) | ||
+ | print(a[0][0]) # 1 | ||
+ | print(a[1][1]) # 4444 | ||
+ | | ||
+ | # Multiplikationstabelle, | ||
+ | tabelle = [[i*j for i in range(0, | ||
+ | | ||
+ | print(tabelle[7]) | ||
+ | print(tabelle[9][6]) | ||
+ | | ||
+ | </ | ||