Tableaux irréguliers
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 16 sur 78.
Les lignes d’un tableau 2D n’ont pas besoin d’avoir la même longueur. Un tableau 2D dont les lignes ont des longueurs différentes est un tableau irrégulier. Ici, chaque ligne contient les scores d’un joueur, et les joueurs ont joué un nombre différent de manches :
var scores := [
[90, 85, 70],
[60],
[75, 80]
]
print(scores[0].size()) # 3
print(scores[1].size()) # 1Dans un tableau irrégulier, scores[0].size() n’est pas la longueur de chaque ligne. Parcourez les colonnes de la ligne actuelle avec 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: 155Une boucle qui utilise toujours la longueur de la première ligne dépasse la fin des lignes plus courtes : scores[1][2] est une erreur, car la ligne 1 n’a que l’index 0. for value in row s’adapte toujours à la ligne qu’elle parcourt.
Tu construis un tableau irrégulier comme une grille, avec une longueur différente pour chaque ligne. Dans ce triangle, la ligne r comporte r + 1 cellules :
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))*
**
***
****Une ligne peut même être vide : [[1, 2], [], [3]] est un tableau irrégulier valide comportant trois lignes.
Défi
FacileÉcris une fonction nommée make_triangle avec un paramètre int n. Elle renvoie un tableau irrégulier de n lignes :
- La ligne 1 a 1 cellule, la ligne 2 a 2 cellules, et ainsi de suite, jusqu’à la ligne
n, qui ancellules. - En comptant les lignes et les colonnes à partir de 1, chaque cellule contient le produit de son numéro de ligne par son numéro de colonne. La cellule de la ligne 3, colonne 2 contient
3 * 2 = 6.
Par exemple, make_triangle(3) renvoie :
[[1], [2, 4], [3, 6, 9]]Les tests appellent eux-mêmes make_triangle() et vérifient le tableau renvoyé. Ne l’appelle pas et n’affiche rien.
Essayez vous-même
func make_triangle(n: int):
# Écrivez le code ici
pass
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes de caractères en profondeur
Méthodes des chaînesRechercher dans les chaînesRemplacer et supprimer les espacesDécouper et joindreRécapitulatif - Vérifier un nom d’utilisateur4Dictionnaires, partie 2
Dictionnaires imbriquésTableaux de dictionnairesFusionner des dictionnairesCopier des dictionnairesRécapitulatif - Compteur de fréquence7Énumérations
Qu’est-ce qu’une énumération ?Définir une énumérationValeurs d’une énumérationÉnumérations avec matchRécapitulatif - Feu de circulation10Fonctions avancées
Renvoyer plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’un tableau imbriqué13Système de gestion des stocks
Présentation du projetAjouter un article2Prise de décision avancée
Correspondance avec des variablesGardes de correspondanceMotifs de tableauMotifs de dictionnaireVérifications d’appartenanceRécapitulatif – Analyseur de commandes5Application de carnet d’adresses
Afficher le menuAjouter un contact8Gestionnaire des dossiers étudiants
Aperçu du projetAjouter un étudiant3Tableaux multidimensionnels
Bases des tableaux 2DAccéder aux éléments d’un tableau 2DBoucles imbriquées avec des tableaux 2DRécapitulatif - Tableaux 2DTableaux irréguliersMotifs courants des tableaux 2DRécapitulatif - Plateau de jeu6Les ensembles avec les dictionnaires
Qu’est-ce qu’un ensemble ?Un dictionnaire comme ensembleAjouter et supprimerUnion et intersectionDifférence d’ensemblesRécapitulatif – Supprimer les doublons9Agrégation avancée de données
Additionner des valeursTrouver le minimum et le maximumTri personnaliséRécapitulatif - Trieur de dictionnairesEntraînez-vous par vous-même : Compilateur GDScript en ligne