Quelques exercices☘
Exercice 1☘
Écrire une fonction creeMatrice(n)
qui donne les résultats suivants:
1 2 3 4 | creeMatrice(3) = [ [0, 1, 2] [3, 4, 5] [6, 7, 8] ] |
1 2 3 4 5 | creeMatrice(4) = [ [0, 1, 2, 3] [4, 5, 6, 7] [8, 9, 10, 11] [12, 13, 14, 15] ] |
De façon plus générale,
la ligne 0 est constituée des entiers de 0 à n-1,
la ligne 1 des entiers de n à 2n-1,
la ligne 2 des entiers de 2n à 3n-1, ...
Un code possible
Regardons la colonne 1: 0, n, 2n, 3n ...
En résumé la colonne 1 contient les entiers i\times n où i est le numéro de ligne.
Sur une ligne, on a: in, in+1, in+2, ..., in + (n-1). En bref in+j où j est le numéro de colonne.
D'où le code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | def affichage(tab): """ tab -- liste de listes de nombres affiche chaque liste en passant à la ligne entre les listes. """ for ligne in tab: print(ligne) def creeMatrice(n): """ n -- entier naturel non nul renvoie une matrice de n lignes, n colonnes (contenu défini dans l'énoncé) """ return [ [i*n + j for j in range(n)] for i in range(n)] affichage(creeMatrice(4)) |
Exercice 2☘
On dispose de matrices de taille n×n
(créées par exemple avec creeMatrice
, fonction définie dans l'exercice précédent).
On aimerait changer tous les éléments de la diagonale en 42.
Par exemple
1 2 3 4 | [ [0, 1, 2] [3, 4, 5] [6, 7, 8] ] |
doit devenir
1 2 3 4 | [ [42, 1, 2] [3, 42, 5] [6, 7, 42] ] |
De même
1 2 3 4 5 | [ [0, 1, 2, 3] [4, 5, 6, 7] [8, 9, 10, 11] [12, 13, 14, 15] ] |
doit devenir
1 2 3 4 5 | [ [42, 1, 2, 3] [4, 42, 6, 7] [8, 9, 42, 11] [12, 13, 14, 42] ] |
Ecrire une fonction python effectuant cette transformation d'une matrice n×n.
taille n*n
Comment récupérer n lorsqu'on dispose de la matrice A de taille n×n?
De deux façons:
- n est le nombre de listes internes, c'est à dire:
n = len(A)
. - n est aussi la longueur de chaque liste interne, par exemple
n = len(A[0])
.
Un code possible
Les éléments de la diagonale sont les éléments A[0][0], A[1][1], A[2][2]... En bref, ce sont les éléments A[i][i], pour i entre 0 et len(A)-1.
Un code possible:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | def affichage(tab): """ tab -- liste de listes de nombres affiche chaque liste en passant à la ligne entre les listes. """ for ligne in tab: print(ligne) def creeMatrice(n): """ n -- entier naturel non nul renvoie une matrice de n lignes, n colonnes (cf exercice précédent) """ return [ [i*n + j for j in range(n)] for i in range(n)] def diagonale42(matrice): """ matrice -- matrice n*n place des 42 sur la diagonale de matrice. """ n = len(matrice) for i in range(n): matrice[i][i] = 42 A = creeMatrice(4) diagonale42(A) affichage(A) |
Exercice 3☘
On dispose de matrices de taille n×n
(créées par exemple avec creeMatrice
, fonction définie dans l'exercice précédent).
On aimerait changer tous les éléments de la ligne numéro k en 42.
Par exemple, la modification de la ligne 0 de la matrice suivante:
1 2 3 4 | [ [0, 1, 2] [3, 4, 5] [6, 7, 8] ] |
doit transformer cette matrice en:
1 2 3 4 | [ [42, 42, 42] [3, 4, 5] [6, 7, 8] ] |
De même, la modification de la ligne 1 de la matrice suivante:
1 2 3 4 5 | [ [0, 1, 2, 3] [4, 5, 6, 7] [8, 9, 10, 11] [12, 13, 14, 15] ] |
doit transformer cette matrice en:
1 2 3 4 5 | [ [0, 1, 2, 3] [42, 42, 42, 42] [8, 9, 10, 11] [12, 13, 14, 15] ] |
Écrire une fonction python effectuant cette transformation d'une matrice n×n.
Un code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | def affichage(tab): """ tab -- liste de listes de nombres affiche chaque liste en passant à la ligne entre les listes. """ for ligne in tab: print(ligne) def creeMatrice(n): """ n -- entier naturel non nul renvoie une matrice de n lignes, n colonnes (cf exercice précédent) """ return [ [i*n + j for j in range(n)] for i in range(n)] def changeLigne42(matrice, numero_ligne): """ matrice -- matrice n*n place des 42 sur la ligne numero_ligne de la matrice """ n = len(matrice) for i in range(n): matrice[numero_ligne][i] = 42 A = creeMatrice(4) changeLigne42(A, 1) affichage(A) |
Exercice 4☘
On dispose de matrices de taille n×n
(créées par exemple avec creeMatrice
, fonction définie dans l'exercice précédent).
On aimerait changer tous les éléments de la colonne numéro k en 42.
Écrire une fonction python effectuant cette transformation d'une matrice n×n.
Un code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | def affichage(tab): """ tab -- liste de listes de nombres affiche chaque liste en passant à la ligne entre les listes. """ for ligne in tab: for element in ligne: print(element, end="\t") # \t signifie une tabulation après l'élément print() def creeMatrice(n): """ n -- entier naturel non nul renvoie une matrice de n lignes, n colonnes (cf exercice précédent) """ return [ [i*n + j for j in range(n)] for i in range(n)] def changeColonne42(matrice, numero_colonne): """ matrice -- matrice n*n place des 42 sur la colonne numero_colonne de la matrice """ n = len(matrice) for i in range(n): matrice[i][numero_colonne] = 42 A = creeMatrice(4) changeColonne42(A, 2) affichage(A) |