Laurentvidal.fr facilite la recherche de réponses à toutes vos questions avec l'aide de notre communauté active. Obtenez des réponses détaillées à vos questions de la part d'une communauté dédiée d'experts sur notre plateforme. Notre plateforme offre une expérience continue pour trouver des réponses fiables grâce à un réseau de professionnels expérimentés.

Bonjour

Quelqu’un peut m’aider à comprendre le code de la question 4.6 stp

Et aussi quelqu’un peut m’aider à comprendre comment on a fait pour trouver [3,9] dans ce code :
Soit L=[3*x for x in [1,2,3] if x%2]

Merci d’avance

Bonjour Quelquun Peut Maider À Comprendre Le Code De La Question 46 Stp Et Aussi Quelquun Peut Maider À Comprendre Comment On A Fait Pour Trouver 39 Dans Ce Cod class=

Sagot :

Bonjour

Avant de commencer je tiens à préciser que c'est un devoir qui peut être difficile à comprendre pour certains mais une fois compris il est relativement simple. Le principal problème ici c'est que ce ne sera pas forcément facile à expliquer, je vais essayer du mieux possible.

Question 4.6

Quand je cite une ligne de code, je commence toujours par  ▌pour que la lecture soit un peu plus claire.

Explications matrice en Python

On va essayer d'expliquer chaque ligne avec des vrais mots.

matrice = [3*[0] for i in range(3)]

Cette ligne définit simplement une variable nommée matrice, elle contient un tableau reprenant 3 fois [0] et ce sur une plage (i) s'étalant jusqu'à 3 (donc i = 0 puis i = 1 puis i = 2) [ Pourquoi pas i = 3 ? Je l'explique dans le "À Savoir' ]

3*[0]

Donnera donc [0, 0, 0], en y rajoutant for i in range(3) on demande de le faire dans une "portée" de 3, donc

▌ [[0, 0, 0],       → i = 0

▌ [0, 0, 0],        → i = 1

▌ [0, 0, 0]]        → i = 2

Cela forme donc une matrice de 3x3, 3 lignes et 3 colonnes.

À savoir

Dans une matrice, un peu comme dans un repère orthonormé en géométrie, chaque "emplacement" à des coordonnées, par exemple:

▌ [[2, 0, 0],

▌ [0, 0, 0],

▌ [0, 0, 0]]

Le 2 est le point [0] [0], donc matrice [0] [0] = 2

C'est ce principe qui va être utilisé dans la boucle for

for i in range(3):

    matrice [i] [i] = i + 1

    matrice [0] [i] = matrice [0] [i] + i + 1

    matrice [i] [2] = matrice [i] [2] + i + 1

Avant de traduire chaque ligne, il faut bien se rappeler qu'en Python (et dans une majorité des langages informatiques) on commence à compter à partir de 0 et les boucles s'arrêtent à n-1, donc ici la boucle

▌ for i in range(3):

Sera traduite comme: pour chaque valeur de i dans une portée de 3, à savoir pour i = 0, i = 1 et i = 2

Explications de chaque ligne de la boucle

On va reprendre chaque ligne de la boucle et identifier son fonctionnement et voir l'évolution que cela a sur la matrice.

matrice [i] [i] = i + 1

Cette ligne va donc toucher, au total, à 3 emplacement de la matrice: [0] [0], [1] [1] et [2] [2] en y attribuant à chaque fois i + 1, donc respectivement : 0+1 (1), 1+1 (2) et 2+1 (3)

► La matrice à ce stade sera:

▌ [[1, 0, 0],

▌ [2, 2, 0],

▌ [0, 0, 3]]

matrice [0] [i] = matrice [0] [i] + i + 1

Cette ligne va donc toucher, au total, à 3 emplacement de la matrice, tous sur la ligne (→) 0 :  [0] [0], [0] [1] et [0] [2] en y ajoutant à chaque fois i + 1, donc respectivement : 1+0+1 (1), 0+1+1 (2) et 0+2+1 (3) [J'ai rajouté ici les valeurs initiales car celle de [0][0] a déjà été définie comme 1 à la ligne d'avant]

► La matrice à ce stade sera:

▌ [[2, 2, 3],

▌ [0, 2, 0],

▌ [0, 0, 3]]

matrice [i] [2] = matrice [i] [2] + i + 1

Cette ligne va donc toucher, au total, à 3 emplacement de la matrice, tous sur la colonne (↓) 2 :  [0] [2], [1] [2] et [2] [2] en ajoutant à chaque fois i + 1 à la valeur initiale, donc respectivement : 3+0+1 (4), 0+1+1 (2) et 3+2+1 (6)

► La matrice à ce stade sera:

▌ [[2, 2, 4],

▌ [0, 2, 2],

▌ [0, 0, 6]]

Réponse 4.6

Il nous suffit alors de remettre cette matrice sous forme littérale, horizontale, on obtient: [[2, 2, 4],

[0, 2, 2],

[0, 0, 6]]

Question supplémentaire

Tu as posé une question qui ne figure pas sur la feuille, donc je l'ai appellée "supplémentaire"

Comment on a fait pour trouver [3,9] dans ce code :

L = [ 3*x for x in [1,2,3] if x%2 ]

La limite de caractères du site m'empêche de te poster toute l'explication ici, donc je laisse simplement la partie que j'avais écrite sur l'explication des modulo et je t'envois l'explications entières en message privé

Le modulo (%)

Le modulo en informatique est une opération mathématique qui renvoi le reste d'un division écrite, c'est ce qui reste si on chercher un résultat de division entier.

Par exemple:

  • 10%3 donne 1, car 10%3 donne 3*3 (9) et 1 de reste
  • 7%2 donne 1, car car 7%2 donne 2*3 (6) et 1 de reste
  • 4%2 donne 0 car 4%2 donne 2*2 (4) et 0 de reste

Quand cette opération est mise en condition, elle peut être utilisée comme un Booléen, procédé qui n'admet comme réponse que des True ou False, Vrai ou Faux.

Si la valeur du modulo donne zéro (0) cela veut dire qu'il est considéré comme "nul", donc faux.

Au contraire, si la valeur du modulo donne une résultat, il est considéré comme "vérifié", donc vrai

J'espère que toutes ces explications t'aideront, j'ai essayé de faire le plus clair et détaillé possible.

Si tu as des questions sur quelque chose que tu as mal compris et/ou que j'ai mal expliqué tu peux le demander en commentaire !

Bonne journée ;)