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 14:16] – [Listen vs. Arrays] Ivo Blöchliger | lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists [2019/02/26 09:02] (current) – [Aufgabe 1] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Listen vs. Arrays ====== | ||
| + | Listen und Arrays sind Variablen, die mehrere Werte auf einmal enthalten. Einzelne Werte werden mit eckigen Klammern über Indizies angesprochen, | ||
| + | |||
| + | Der unmittelbare Inhalt von Listen ist unveränderbar, | ||
| + | |||
| + | <code python> | ||
| + | a = (0, | ||
| + | b = [2, | ||
| + | |||
| + | print a[3] # Ergibt 9, das vierte Element | ||
| + | print b[3] # Ergibt 7 | ||
| + | b[3]=77 | ||
| + | print b[3] # Ergibt 77 | ||
| + | |||
| + | for i in a: # i nimmt nacheinander die Werte 0, | ||
| + | print(i) | ||
| + | |||
| + | for i in b: # i nimmt nacheinander die Werte 2, 3, 5, 77, 11, 17 an | ||
| + | print(i) | ||
| + | |||
| + | a[3] = 99 # Fehler! Inhalt der Liste kann nicht veraendert werden. | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== 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]) | ||
| + | | ||
| + | </ | ||