lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists [2019/02/18 20:54]
Ivo Blöchliger
lehrkraefte:blc:informatik:ffprg1-2019:arrays-lists [2019/02/26 09:58]
Ivo Blöchliger [Aufgabe 1]
Line 22: Line 22:
  
 </code> </code>
 +
 +
 +
  
 ===== Erzeugung von Arrays ===== ===== Erzeugung von Arrays =====
 <code python> <code python>
-q = [i*i for i in range(11)]   # Quadratzahlen von 0 bis 100 +# Mit einer for-Schlaufe
-print(q)    # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] +
 w = []    # Leeres Array w = []    # Leeres Array
 for i in range(11): for i in range(11):
Line 33: Line 34:
    
 print(w)  # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000] print(w)  # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
 +
 +
 +# The fancy way:
 +q = [i*i for i in range(11)]   # Quadratzahlen von 0 bis 100
 +print(q)    # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
 +
 </code> </code>
 +
 +
 +==== 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)
 +</code>
 +</hidden>
 +
 +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, 0.6, 0.625, 0.6153846153846154, 0.6190476190476191, 0.6176470588235294, 0.6181818181818182, 0.6179775280898876, 0.6180555555555556, 0.6180257510729614, 0.6180371352785146, 0.6180327868852459, 0.6180344478216818, 0.6180338134001252, 0.6180340557275542, 0.6180339631667066]
 +
 +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,n):  # Achtung: es gibt nur n-1 Quotienten!
 +  quotients.append(fib[i-1]/fib[i])
 +
 +print(quotients)
 +</code>
 +</hidden>
 +
 +==== 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 =====
  • lehrkraefte/blc/informatik/ffprg1-2019/arrays-lists.txt
  • Last modified: 2019/02/26 10:02
  • by Ivo Blöchliger