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
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
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.