Adloun

NSI (première) · Chapitre 4 · Application directe du cours

Écrire est carree(m) qui teste si la matrice m a autant de lignes que…

Les types construits · Tableaux, indices et matrices · niveau 1 (application)

Énoncé

Écrire est_carree(m) qui teste si la matrice m a autant de lignes que de colonnes, en vérifiant d'abord que toutes les lignes ont même longueur.

Corrigé


def est_carree(m):
    """Vrai si m est une matrice carree : lignes de meme longueur, et
    autant de lignes que de colonnes.

    Precondition : m est un tableau de tableaux.
    """
    if len(m) == 0:
        return True             # la matrice vide est 0 x 0
    if not all(len(ligne) == len(m[0]) for ligne in m):
        return False            # pas meme une matrice
    return len(m) == len(m[0])

L'ordre des deux vérifications n'est pas indifférent. Il faut d'abord s'assurer que m est bien une matrice — toutes ses lignes de même longueur — avant de comparer len(m) à len(m[0]). Sans cela, [[1, 2], [3]] serait déclarée carrée, puisqu'elle a deux lignes et que sa première ligne a deux cases. Le nombre de colonnes n'aurait alors aucun sens : il n'y en a pas.

Vérification.


assert est_carree([[1, 2], [3, 4]]) is True
assert est_carree([[1, 2, 3], [4, 5, 6]]) is False     # 2 x 3
assert est_carree([[1, 2], [3]]) is False              # lignes inegales
assert est_carree([[1]]) is True                       # 1 x 1
assert est_carree([]) is True                          # convention 0 x 0

Le cas de la matrice vide est une convention, pas un théorème. On peut décider qu'elle est carrée () ou refuser de répondre par une précondition assert len(m) > 0. Les deux choix se défendent ; ce qui ne se défend pas, c'est de ne pas choisir et de laisser le code décider à notre place. La docstring doit dire lequel des deux on a retenu.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →