Gezackte Arrays
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 16 von 78.
Die Zeilen eines 2D-Arrays müssen nicht dieselbe Länge haben. Ein 2D-Array, dessen Zeilen unterschiedliche Längen haben, ist ein gezacktes Array. Hier enthält jede Zeile die Punktzahlen eines Spielers, und die Spieler haben unterschiedlich viele Runden gespielt:
var scores := [
[90, 85, 70],
[60],
[75, 80]
]
print(scores[0].size()) # 3
print(scores[1].size()) # 1In einem gezackten Array ist scores[0].size() nicht die Länge jeder Zeile. Durchlaufe die Spalten der aktuellen Zeile mit scores[r].size():
for r in range(scores.size()):
var total := 0
for c in range(scores[r].size()):
total += scores[r][c]
print("Player ", r + 1, ": ", total)Player 1: 245
Player 2: 60
Player 3: 155Eine Schleife, die immer die Länge der ersten Zeile verwendet, greift über das Ende der kürzeren Zeilen hinaus: scores[1][2] ist ein Fehler, weil Zeile 1 nur den Index 0 hat. for value in row passt immer zu der Zeile, durch die sie läuft.
Du erstellst ein gezacktes Array wie ein Raster, wobei jede Zeile eine andere Länge hat. In diesem Dreieck hat Zeile r r + 1 Zellen:
var triangle := []
for r in range(4):
var row := []
for c in range(r + 1):
row.append("*")
triangle.append(row)
for row in triangle:
print("".join(row))*
**
***
****Eine Zeile kann sogar leer sein: [[1, 2], [], [3]] ist ein gültiges gezacktes Array mit drei Zeilen.
Aufgabe
EinfachSchreibe eine Funktion namens make_triangle mit einem int-Parameter n. Sie gibt ein gezacktes Array mit n Zeilen zurück:
- Zeile 1 hat 1 Zelle, Zeile 2 hat 2 Zellen und so weiter, bis Zeile
n, dienZellen hat. - Wenn du die Zeilen und Spalten ab 1 zählst, enthält jede Zelle das Produkt aus ihrer Zeilennummer und ihrer Spaltennummer. Die Zelle in Zeile 3, Spalte 2 enthält
3 * 2 = 6.
Zum Beispiel gibt make_triangle(3) Folgendes zurück:
[[1], [2, 4], [3, 6, 9]]Die Tests rufen make_triangle() selbst auf und überprüfen das zurückgegebene Array. Rufe die Funktion nicht auf und gib nichts aus.
Probier es selbst
func make_triangle(n: int):
# Schreibe hier den Code
pass
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler