Exercice4: Ecrire un algorithme permettant de calculer la somme en ligne des éléments d'une matrice de n,p


Sagot :

Bonjour

Tu nous a donné cet exercice mais on ne sait pas si tu sais déjà ce qu'est une matrice en Python, comment en créer, etc. Je vais donc essayer d'expliquer tout ça également.

Matrice en Python

Une matrice c'est une suite de valeurs [numériques] qui se placent sous forme de tableau.


En réalité pour créer une matrice :

  1. On créé une liste, qui va contenir toutes la matrice
  2. Dans cette liste on ajoute autant de listes que de lignes voulues dans le tableau.
  3. Ces nouvelles listes ont toutes la même longueur, le même nombre de valeurs.
  4. Ce sont ces valeurs contenues dans les listes qui définissent les "colonnes" (par exemple la seconde valeur de la première ligne et la seconde valeur de la deuxième ligne sont sur la même "colonne")

En code

Pour créer une matrice il y a plusieurs méthodes mais je te propose une très condensée et efficace.

▌def cree_matrice (l, c):
▌    m = [[0 for i in range(c)] for i in range (l)]
▌    return m

On définit la fonction cree_matrice() qui admet 2 arguments, [tex]l[/tex] pour le nombre de ligne, [tex]c[/tex] pour le nombre de colonnes (= le nombre de valeur par ligne).

La seconde ligne peut-être décortiquée et traduite comme:
▌    m = [[0 for i in range(c)] for i in range (l)]
m sera la matrice, donc une [liste]

▌    m = [[0 for i in range(c)] for i in range (l)]
On créé un sous-tableau qui sera en fait une ligne, avec autant de zéro (donc de futurs emplacements de valeur) que nécessaire, en sachant que cela correspond donc au nombre de colonne.

▌    m = [[0 for i in range(c)] for i in range (l)]
Boucle for qui va créer les sous tableaux, les lignes, autant de fois que demandé (valeur de [tex]l[/tex])

Naviguer dans une matrice

Pour accéder à une valeur de la matrice on va, comme pour les tableaux à double entrée, naviguer avec 2 coordonnées: x et y, ligne et colonne.

/!\ Attention ! En Python quand on navigue dans des listes ou tableaux on compte à partir de 0, pas de 1.

Pour accéder à la valeur de la première ligne et de la 3ième colonne on fera: matrice[0][2]

Ainsi pour modifier une valeur il suffit de poser une égalité

▌matrice[0][2] = 2

La matrice (4x4) passera donc de:

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
à
[[0, 0, 2, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

Calculer somme par ligne

Maintenant qu'on a compris comment fonctionne une matrice ce doit te sembler plus simple.

Il va falloir passer d'abord sur chaque ligne, puis additionner chaque élément de la ligne traitée, ensuite passer à la suivante, etc.

Code ci-joint

Explication par ligne

▌    for i in range(len(matrice)):
Boucle for qui va répéter l'instruction, la fonction len() en Python renvoie la longueur d'une phrase ou d'un tableau, ici ca va renvoyer donc le nombre de ligne dans matrice

range() permet de définir la "portée", c'est à dire le nombre de passage (et optionnellement la cadence) que la boucle doit effectuer.

▌        total = 0
Valeur qui nous servira à calculer le total de chaque ligne

▌        for j in range(len(matrice[i])):
On passe sur chaque ligne et maintenant on doit passer sur chaque valeur de chaque ligne.

matrice[i] permet d'accéder à la liste traitée dans la boucle for du dessus.

▌            total += matrice[i][j]
On ajoute à la variable total le valeur de la cellule correspondant à la ligne i et à la colonne j (gérées par les deux boucles for)

▌        print('Ligne', i, matrice[i], '- Somme:', total)
On envoie dans la console le total de chaque ligne, structuré comme:
▌Ligne x [x, x, x] - Somme: x

Si ton exercice nécessite de stocker ses totaux

il faudra juste ne pas finir sur un print() mais plutôt entrer la valeur total dans une nouvelle variable liste créée en amont, dans laquelle tous les totaux seraient stockés.

Voilà,

J'espère que tout cela t'as aidé, si besoin les commentaires sont là pour demander plus d'explications.

Bonne journée ;)

View image CLEMENTCG
View image CLEMENTCG
View image CLEMENTCG