Matrice 2 dimension, probleme valeurs
Résolu/Fermé
riad
-
1 mai 2020 à 19:02
Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 - 1 mai 2020 à 23:44
Furansujean Messages postés 58 Date d'inscription lundi 1 juillet 2019 Statut Membre Dernière intervention 12 septembre 2022 - 1 mai 2020 à 23:44
A voir également:
- Matrice 2 dimension, probleme valeurs
- Dimension a5 - Guide
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- 2 comptes whatsapp - Guide
- Xsarius pure 2 mode d'emploi - Forum TV & Vidéo
7 réponses
Utilisateur anonyme
1 mai 2020 à 19:29
1 mai 2020 à 19:29
Bonjour
peux tu poster ton code en utilisant les balises de code, voir un petit tuto ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
peux tu poster ton code en utilisant les balises de code, voir un petit tuto ici https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
raidman_
Messages postés
3
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
1 mai 2020
Modifié le 1 mai 2020 à 20:22
Modifié le 1 mai 2020 à 20:22
Cele me donne un resultat que je n'attends pas :
d_d=0 d_c=0 x=8 y=4 print(x,y) print('rr',matrice_hauteur[7:9],d_c) for d_d in range(0,x): for d_c in range(0,y): matrice_hauteur[d_d][d_c]=A print(d_d,d_c) if d_c==y: break if d_d==x: break for d_d in range(0,10): for d_c in range(0,10): print(matrice_hauteur[d_d-d_c]) print(matrice_hauteur[0-9]) print(matrice_hauteur[1-9]) print(matrice_hauteur[2-9]) print(matrice_hauteur[3-9]) print(matrice_hauteur[4-9]) print(matrice_hauteur[5-9]) print(matrice_hauteur[6-9]) print(matrice_hauteur[7][0],matrice_hauteur[7][1], matrice_hauteur[7][2],matrice_hauteur[7][3], matrice_hauteur[7][4],matrice_hauteur[7][5], matrice_hauteur[7][6],matrice_hauteur[7][7], matrice_hauteur[7][8],matrice_hauteur[7][9]), print(matrice_hauteur[8][0],matrice_hauteur[8][1], matrice_hauteur[8][2],matrice_hauteur[8][3], matrice_hauteur[8][4],matrice_hauteur[8][5], matrice_hauteur[8][6],matrice_hauteur[8][7], matrice_hauteur[8][8],matrice_hauteur[8][9]), print(matrice_hauteur[9-9]) print(matrice_hauteur[8][4]) print(matrice_hauteur[8])
Utilisateur anonyme
1 mai 2020 à 20:46
1 mai 2020 à 20:46
Il manque l'initialisation de la matrice et le changement de certaines cellules
raidman_
Messages postés
3
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
1 mai 2020
1 mai 2020 à 21:01
1 mai 2020 à 21:01
matrice_hauteur = [['-']*10]*10 matrice_largeur = [['-']*10]*10 d_d=0 d_c=0 x=8 y=4 print(x,y) print('rr',matrice_hauteur[7:9],d_c) for d_d in range(0,x): for d_c in range(0,y): matrice_hauteur[d_d][d_c]='A' print(d_d,d_c) if d_c==y: break if d_d==x: break for d_d in range(0,10): for d_c in range(0,10): print(matrice_hauteur[d_d-d_c]) print(matrice_hauteur[0-9]) print(matrice_hauteur[1-9]) print(matrice_hauteur[2-9]) print(matrice_hauteur[3-9]) print(matrice_hauteur[4-9]) print(matrice_hauteur[5-9]) print(matrice_hauteur[6-9]) print(matrice_hauteur[7][0],matrice_hauteur[7][1], matrice_hauteur[7][2],matrice_hauteur[7][3], matrice_hauteur[7][4],matrice_hauteur[7][5], matrice_hauteur[7][6],matrice_hauteur[7][7], matrice_hauteur[7][8],matrice_hauteur[7][9]), print(matrice_hauteur[8][0],matrice_hauteur[8][1], matrice_hauteur[8][2],matrice_hauteur[8][3], matrice_hauteur[8][4],matrice_hauteur[8][5], matrice_hauteur[8][6],matrice_hauteur[8][7], matrice_hauteur[8][8],matrice_hauteur[8][9]), print(matrice_hauteur[9-9]) print(matrice_hauteur[8][4]) print(matrice_hauteur[8])
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
1 mai 2020 à 21:45
1 mai 2020 à 21:45
Je ne suis pas spécialiste en Python, mais comme pour l'instant personne d'autre ne te réponds, voilà le début des mes "investigations".
J'ai modifié ton code, pour remplir la matrice de 1 à 100, en principe.
Au passage, ces lignes
Ensuite, avec une seconde itération de la matrice j'affiche tous les élèments.
Et là, "surprise" au lieu d'avoir des valeurs de 1 à 100, j'ai des successions de valeurs de 91 à 100.
Tu peux voir là https://www.onlinegdb.com/rJnJ3x9KI
Je ne connais pas la raison, et je dois passer à autre chose là maintenant, mais manifestement c'est dans l'initialisation qu'il y a un problème.
J'ai modifié ton code, pour remplir la matrice de 1 à 100, en principe.
Au passage, ces lignes
if d_c==y: break if d_d==x: breakne servent à rien puisque tes ranges commencent à 0 pour x ou y valeurs, elles ne les atteignent donc jamais.
Ensuite, avec une seconde itération de la matrice j'affiche tous les élèments.
matrice_hauteur = [['-']*10]*10 matrice_largeur = [['-']*10]*10 d_d=0 d_c=0 x=10 y=10 i = 1 print("init matrice") print("") for d_d in range(0,x): for d_c in range(0,y): matrice_hauteur[d_d][d_c]=i print("indices", d_d,d_c, ", i =", i, ", matrice_hauteur[d_d][d_c] =", matrice_hauteur[d_d][d_c]) i += 1 print("") print("Vérif matrice") print("") for d_d in range(0,x): for d_c in range(0,y): print("indices", d_d,d_c, ", matrice_hauteur[d_d][d_c] =", matrice_hauteur[d_d][d_c])
Et là, "surprise" au lieu d'avoir des valeurs de 1 à 100, j'ai des successions de valeurs de 91 à 100.
Tu peux voir là https://www.onlinegdb.com/rJnJ3x9KI
Je ne connais pas la raison, et je dois passer à autre chose là maintenant, mais manifestement c'est dans l'initialisation qu'il y a un problème.
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
Modifié le 1 mai 2020 à 23:03
Modifié le 1 mai 2020 à 23:03
Bonsoir,
Je t'explique pourquoi il ne faut pas faire l'initialisation que tu as faite, cela pose effectivement problème dans le cas où tu modifies ta matrice ensuite.
Explication
Je repars de ton initialisation, en créant une matrice M :
L'instruction ci-dessous permet d'afficher la matrice ligne par ligne
Ensuite, on modifie le premier élément en position (0,0)
Et là... patatras ! Toutes les lignes ont été modifiées...
Pourquoi donc ?
Eh bien, parce que chacune des lignes dans la matrice fait référence à une seule et même ligne. Donc si tu en modifies une, toutes les autres sont modifiées.
La preuve : elles ont le même identifiant :
Solution
Tout ça pour dire que tu dois changer ta manière d'initialiser la matrice.
Tu peux faire comme cela par exemple :
On constate, cette fois-ci, que les lignes de la matrice sont différentes (au sens identifiant de l'objet liste, même si leur contenu est le même) :
Et ça devrait être plus facile maintenant pour modifier la matrice.
Je t'explique pourquoi il ne faut pas faire l'initialisation que tu as faite, cela pose effectivement problème dans le cas où tu modifies ta matrice ensuite.
Explication
Je repars de ton initialisation, en créant une matrice M :
>>> M = [['-']*10]*10
L'instruction ci-dessous permet d'afficher la matrice ligne par ligne
>>> print("\n".join([str(ligne) for ligne in M])) ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['-', '-', '-', '-', '-', '-', '-', '-', '-', '-']
Ensuite, on modifie le premier élément en position (0,0)
>>> M[0][0] = 'A'
Et là... patatras ! Toutes les lignes ont été modifiées...
>>> print("\n".join([str(ligne) for ligne in M])) ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-']
Pourquoi donc ?
Eh bien, parce que chacune des lignes dans la matrice fait référence à une seule et même ligne. Donc si tu en modifies une, toutes les autres sont modifiées.
La preuve : elles ont le même identifiant :
>>> M[1] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] >>> id(M[1]) 140154560403784 >>> M[2] ['A', '-', '-', '-', '-', '-', '-', '-', '-', '-'] >>> id(M[2]) 140154560403784
Solution
Tout ça pour dire que tu dois changer ta manière d'initialiser la matrice.
Tu peux faire comme cela par exemple :
>>> M = [['-' for colonne in range(10)] for ligne in range(10)]
On constate, cette fois-ci, que les lignes de la matrice sont différentes (au sens identifiant de l'objet liste, même si leur contenu est le même) :
>>> id(M[0]) 140154560403720 >>> id(M[1]) 140154560404616
Et ça devrait être plus facile maintenant pour modifier la matrice.
raidman_
Messages postés
3
Date d'inscription
vendredi 1 mai 2020
Statut
Membre
Dernière intervention
1 mai 2020
1 mai 2020 à 23:40
1 mai 2020 à 23:40
Merci beaucoup ca a marché
Furansujean
Messages postés
58
Date d'inscription
lundi 1 juillet 2019
Statut
Membre
Dernière intervention
12 septembre 2022
5
1 mai 2020 à 23:44
1 mai 2020 à 23:44
Ravi d'avoir pu aider.