TP - Parcours de matrices☘
Dans ce TP, les différentes parties sont globalement indépendantes.
Téléchargez le fichier « à trous » TPB05.30.py
(clic droit -> [Enregistrer sous]) et enregistrez-le dans le dossier
[B05_Tableaux_de_Tableaux]
.
Consignes communes à chaque partie
Le programme principal contient un appel au module doctest
:
##----- Programme principal et tests -----##
if __name__ == '__main__':
import doctest
doctest.testmod()
main
», il faudra penser à élaborer un plan de test
(avec des affichages console).Pensez à demander au professeur de valider ce plan de test...
Important
Pensez à utiliser les fonctions affichage_par_ligne()
et matrice_alea()
programmées dans le TP précédent et dont le code est fourni dans le
fichier à compléter.
Partie 1 : Recherche de maximum☘
-
Complétez la définition de la fonction
max_tab_2D()
qui renvoie la valeur du plus grand élément contenu dans le tableau de tableaumatrice
non vide passé en paramètre (ajoutez les assertions nécessaires).
Dans le programme principal, ajoutez un test de cette fonction à l'aide d'une matrice générée aléatoirement.1 2 3 4 5 6 7 8
def max_tab_2D(matrice): """ matrice - list, tableau de tableaux non vides de nombres entiers Sortie: int - valeur du plus grand élément contenu dans matrice >>> A = [ [4, 5, 6], [1, 2, 3], [7, 9, 8] ] >>> max_tab_2D(A) 9 """
Exemple de test
>>> max_tab_2D([]) AssertionError: La matrice ne doit pas être vide >>> max_tab_2D([[], [], []]) AssertionError: Les sous-tableaux ne doivent pas être vides >>> C = [[49, -15, 8, 84, 66, 62], [81, -43, -54, -53, -55, 93], [-13, -69, 53, -48, 16, 31]] >>> max_tab_2D(C) 93
-
Complétez la définition de la fonction
indice_max_tab_2D()
qui renvoie le couple des coordonnées du plus grand élément contenu dans le tableau de tableaumatrice
non vide passé en paramètre.
Dans le programme principal, ajoutez un test de cette fonction à l'aide d'une matrice générée aléatoirement.1 2 3 4 5 6 7 8 9
def indice_max_tab_2D(matrice): """ matrice - list, tableau de tableaux non vides de nombres entiers Sortie: tuple - couple (i, j) des coordonnées du plus grand élément contenu dans matrice >>> A = [ [4, 5, 6], [1, 2, 3], [7, 9, 8] ] >>> indice_max_tab_2D(A) (2, 1) """
Exemple de test
>>> indice_max_tab_2D([]) AssertionError: La matrice ne doit pas être vide >>> indice_max_tab_2D([[], [], []]) AssertionError: Les sous-tableaux ne doivent pas être vides >>> C = [[49, -15, 8, 84, 66, 62], [81, -43, -54, -53, -55, 93], [-13, -69, 53, -48, 16, 31]] >>> indice_max_tab_2D(C) (1, 5)
Partie 2 : Plus grand des minimum☘
Complétez la définition de la fonction max_des_min()
qui renvoie la valeur
du plus grand élément parmi les minimums de chacune des lignes de la
matrice
passée en paramètre.
Dans le programme principal, ajoutez un test de cette fonction à l'aide d'une
matrice générée aléatoirement.
1 2 3 4 5 6 7 8 9 |
|
Exemple de test
>>> max_des_min([])
AssertionError: La matrice ne doit pas être vide
>>> max_des_min([[], [], []])
AssertionError: Les sous-tableaux ne doivent pas être vides
>>> C = [[49, -15, 8, 84, 66, 62], [81, -43, -54, -53, -55, 93], [-13, -69, 53, -48, 16, 31]]
>>> max_des_min(C)
-15
Partie 3 : Beaucoup de 0
, quelques 1
☘
On reprend deux exercices déjà réalisés dans le TP précédent, mais avec un raisonnement différent. Dans chaque cas :
- vous allez définir une matrice entièrement remplie de
0
; - puis vous effectuez un parcours qui permet de mettre à
1
les cases indiquées par la consigne de la question posée.
-
Complétez la définition de la fonction
premiere_diagonale_bis()
qui renvoie une matrice carrée den
lignes etn
colonnes contenant des0
sauf la première diagonale qui contient des1
.
Les carrés blancs de l'image ci-contre représente les0
de la matrice et les carrés noirs représentent les1
.1 2 3 4 5 6 7 8 9
def premiere_diagonale_bis(n): """ n - int, entier strictement positif Sortie: list - matrice contenant n lignes et n colonnes. Les éléments valent tous 0 sauf ceux de la première diagonale qui valent 1. >>> premiere_diagonale_bis(4) [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1]] """
Exemple de test
>>> A = premiere_diagonale_bis(5) >>> affichage_par_ligne(A) [1, 0, 0, 0, 0] [0, 1, 0, 0, 0] [0, 0, 1, 0, 0] [0, 0, 0, 1, 0] [0, 0, 0, 0, 1]
-
Complétez la définition de la fonction
deuxieme_diagonale_bis()
qui renvoie une matrice carrée den
lignes etn
colonnes contenant des0
sauf la seconde diagonale qui contient des1
.
Les carrés blancs de l'image ci-contre représente les0
de la matrice et les carrés noirs représentent les1
.1 2 3 4 5 6 7 8 9
def deuxieme_diagonale_bis(n): """ n - int, entier strictement positif Sortie: list - matrice contenant n lignes et n colonnes. Les éléments valent tous 0 sauf ceux de la seconde diagonale qui valent 1. >>> deuxieme_diagonale_bis(4) [[0, 0, 0, 1], [0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0]] """
Exemple de test
>>> B = deuxieme_diagonale_bis(6) >>> affichage_par_ligne(B) [0, 0, 0, 0, 0, 1] [0, 0, 0, 0, 1, 0] [0, 0, 0, 1, 0, 0] [0, 0, 1, 0, 0, 0] [0, 1, 0, 0, 0, 0] [1, 0, 0, 0, 0, 0]