lehrkraefte:blc:informatik:ffprg1-2020:arrays

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
lehrkraefte:blc:informatik:ffprg1-2020:arrays [2021/02/11 13:30]
Ivo Blöchliger [Wichtige Funktionen und Methoden]
lehrkraefte:blc:informatik:ffprg1-2020:arrays [2022/05/05 12:58] (current)
Ivo Blöchliger [Pascal-Dreieck]
Line 19: Line 19:
 ==== Wichtige Funktionen und Methoden ==== ==== Wichtige Funktionen und Methoden ====
   * ''len'': Anzahl Element einer Liste/Array, z.B. ''len(a)'' wenn a ein Array enthält.   * ''len'': Anzahl Element einer Liste/Array, z.B. ''len(a)'' wenn a ein Array enthält.
-  * Negative Indizies: ''a[-1]'' -> ''a[len(a)-1]'' (letztes Element), ''a[-2]'' ist zweitletztes Element etc.+  * Negative Indexe: ''a[-1]'' -> ''a[len(a)-1]'' (letztes Element), ''a[-2]'' ist zweitletztes Element etc.
   * Unterliste/Array mit ''a[2:4]'' -> Liste/Array mit den Elementen ''a[2]'' und ''a[3]''  (gleiche Logik wie bei range)   * Unterliste/Array mit ''a[2:4]'' -> Liste/Array mit den Elementen ''a[2]'' und ''a[3]''  (gleiche Logik wie bei range)
 +  * Unterliste/Array mit ''a[2:10:2]'' -> Liste/Array mit den Elementen der Indizies 2,4,6 und 8. ''a[Untergrenze:Obergrenze:Schrittweite]''.
 +  * Array/Liste «umdrehen»: ''a[::-1]'' (Letztes Element an erster Stelle etc.)
   * Anfang  ''a[:3]'' -> ''a[0:3]'', Ende ''a[5:]'' -> ''a[5:len(a)]''   * Anfang  ''a[:3]'' -> ''a[0:3]'', Ende ''a[5:]'' -> ''a[5:len(a)]''
 Nur für Arrays: Nur für Arrays:
Line 42: Line 44:
 print(feld) print(feld)
 </code> </code>
 +
 +==== Loop über Arrays ====
 +<code python>
 +quadrate = [i**2 for i in range(1,9)]
 +
 +# Loop über alle Elemente
 +for q in quadrate:   
 +  print("%d ist eine Quadratzahl" % q)
 +
 +# Loop mit Index über alle Elemente
 +for i,q in enumerate(quadrate):
 +  print("quadrate[%d]=%d" % (i,q))
 +
 +</code>
 +
 ====== Aufgaben ====== ====== Aufgaben ======
  
Line 126: Line 143:
 ===== Pascal-Dreieck ===== ===== Pascal-Dreieck =====
  
-  * Erzeugen Sie ein zweidimensionales Array mit dem Pascal-Dreieck und **Challenge** geben Sie dieses "schön" aus.+  * Erzeugen Sie ein zweidimensionales Array mit dem Pascal-Dreieck.   
 +  * **Challenge**: Geben Sie dieses "schön" aus (wie unten):
 <code> <code>
 [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1], [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]] [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1], [1, 7, 21, 35, 35, 21, 7, 1], [1, 8, 28, 56, 70, 56, 28, 8, 1], [1, 9, 36, 84, 126, 126, 84, 36, 9, 1], [1, 10, 45, 120, 210, 252, 210, 120, 45, 10, 1]]
Line 143: Line 161:
  
 <hidden Lösungsvorschläge> <hidden Lösungsvorschläge>
 +Erzeugung des Dreiecks:
 +<code python>
 +n = 10
 +p = [[1]]
 +for zeile in range(n):
 +    neu = [1]  # Neue Zeile mit einem 1 beginnen
 +    for index in range(zeile):  # So viele Zahlen der neuen Zeile hinzufügen
 +        # Aus der letzten Zeile p[-1] benachbarte Einträge zusammenzählen
 +        neu.append(p[-1][index] + p[-1][index+1])  
 +    neu.append(1)   # Neue Zeile mit 1 beenden
 +    p.append(neu)   # Neue Zeile dem Resultat hinzufügen
 +
 +print(p)
 +</code>
 +
 Folgende Lösung ist keine schöne Lösung, schon eher eine Aufgabe in sich, den Code zu verstehen. Folgende Lösung ist keine schöne Lösung, schon eher eine Aufgabe in sich, den Code zu verstehen.
 <code python pascaldreieck.py> <code python pascaldreieck.py>
-from array import * 
 n=10  # Anzahl Zeilen n=10  # Anzahl Zeilen
 space = 4 space = 4
  • lehrkraefte/blc/informatik/ffprg1-2020/arrays.1613046621.txt.gz
  • Last modified: 2021/02/11 13:30
  • by Ivo Blöchliger