Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists [2019/02/19 15:16] Ivo Blöchliger [Listen vs. Arrays] |
lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists [2019/02/26 10:02] (current) Ivo Blöchliger [Aufgabe 1] |
||
---|---|---|---|
Line 24: | Line 24: | ||
- | ===== Aufgabe 1 ===== | ||
- | Erzeugen Sie ein Array der Länge 20 so, dass das erste Element 0, das zweite 1, und jedes folgende Element die Summe der beiden vorhergehenden ist: | ||
- | [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181] | ||
- | |||
===== Erzeugung von Arrays ===== | ===== Erzeugung von Arrays ===== | ||
<code python> | <code python> | ||
- | q = [i*i for i in range(11)] | + | # Mit einer for-Schlaufe |
- | print(q) | + | |
w = [] # Leeres Array | w = [] # Leeres Array | ||
for i in range(11): | for i in range(11): | ||
Line 40: | Line 34: | ||
print(w) | 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 ===== | ===== Mehrdimensionale Arrays ===== |