Vous êtes sur une version archivée de lyceum.fr de l'année 2023/2024. Revenir au présent.

Exercices

Chapitre 2: Usages avancés des tableaux

1 Questions de cours

  1. Qu’est-ce qu’une liste en Python?

  2. Comment créez-vous une liste en Python? Donner en exemple les instructions permettant de créer une liste xs de 3 entiers.

  3. Comment accédez-vous aux éléments d’une liste en Python? Donner en exemple les instructions permettant d’accéder au deuxième et au dernier élément de xs.

  4. Comment modifiez-vous les éléments d’une liste en Python? Donner un exemple sur xs.

  5. Comment ajoutez-vous des éléments à une liste en Python? Donner deux exemples d’ajout, un à la fin et un autre au début de la liste.

  6. Comment supprimez-vous des éléments d’une liste en Python? Donner deux exemples de suppressions, un à la fin et un autre au début de la liste.

2 Carré magique

En mathématiques, un carré magique d’ordre n n est composé de n 2 n^2 entiers strictement positifs, écrits sous la forme d’un tableau carré. Ces nombres sont disposés de sorte que leurs sommes sur chaque rangée, sur chaque colonne et sur chaque diagonale principale soient égales. On nomme alors constante magique (et parfois densité) la valeur de ces sommes.

Article Wikipédia sur le carré magique

En voici un exemple:

Example of a Magic Square
 Public domain via Wikimedia Commons

Nous allons stocker les valeurs de ce carré magique sous la forme d’un tableau de tableau.

carré = [[2, 7, 6],
         [9, 5, 1],
         [4, 3, 8]]
  1. Que renvoie len(carré) ?

  2. Quelle est la valeur de carré[1]?

  3. Quelle est la valeur de carré[2][0]?

  4. Définir une fonction qui somme_ligne(c, n) qui prend 2 paramètres:

    • c: un carré magique représenté sous forme de liste de liste.
    • n: l’index de la ligne considéré.

    Qui renvoie la somme des éléments de la ligne n du carré.

    Par exemple l’appel somme_ligne(carré, 0) renvoie 15.

    Vous pourrez partir de cette base de code à compléter:

    def somme_ligne(c,n):
        somme = 0
        ligne = c[n]
        for val in ligne:
            ...
        return ...
  5. Proposer une fonction vérifie_lignes(c), qui utilise la fonction somme_ligne, qui prend un carré magique en paramètre et renvoie True, si toutes ses lignes sont égales et False sinon.

    Essayer d’être général afin que votre fonction puisse utiliser des carrés de taille quelconque, et pas seulement de 3 sur 3.

En plus: Créer des fonctions:

  • somme_colonne(c, n), vérifie_colonnes(c) semblables aux fonctions précédentes, mais qui travaillent sur les colonnes du carré.
  • somme_diagonale1(c), somme_diagonale2(c) qui calculent les sommes de chacune des diagonales du carré.
  • Vous êtes maintenant capable de créer la fonction vérifie_carré_magique(c) qui renvoie True si le carré c donné en argument est magique et False sinon.