Problème dans changement de variables
Résolu/Fermé
Elouann9
-
Modifié le 21 mars 2020 à 19:37
yg_be Messages postés 23196 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 septembre 2024 - 22 mars 2020 à 11:55
yg_be Messages postés 23196 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 septembre 2024 - 22 mars 2020 à 11:55
A voir également:
- Problème dans changement de variables
- Changer de dns - Guide
- Changement d'écriture - Guide
- Changement carte graphique - Guide
- Changement clavier azerty - Guide
- Prix changement batterie macbook pro - Guide
4 réponses
Désolé pour les balises de codes, je ne savais pas... J'ai trouvé d'où venait le problème, mais n'ai aucune idée de pourquoi le programme réagit comme ça :
Quand j'écrit ça, tout fonctionne bien, ab devient ["c", "d"] et cd devient ["a", "b"] :
Par contre, quand je précise quels élément de la liste doivent changer, ab devient ["d", "c"] (normal), mais cd devient aussi ["d", "c"] :
J'ai donc suivi temporaire, et j'ai vu que temporaire change exactement comme ab, donc au passage de ab[0] = cd[1], temporaire[0] devient aussi cd[1], et au passage de ab[1] = cd[0], temporaire[1] devient aussi cd[0].
J'espère que quelqu'un a la solution...
Quand j'écrit ça, tout fonctionne bien, ab devient ["c", "d"] et cd devient ["a", "b"] :
ab = ["a", "b"] cd = ["c", "d"] temporaire = ["x", "y"] temporaire = ab ab = cd cd = temporaire print(ab) print(cd)
Par contre, quand je précise quels élément de la liste doivent changer, ab devient ["d", "c"] (normal), mais cd devient aussi ["d", "c"] :
ab = ["a", "b"] cd = ["c", "d"] temporaire = ["x", "y"] temporaire = ab ab[0] = cd[1] ab[1] = cd[0] cd = temporaire print(ab) print(cd)
J'ai donc suivi temporaire, et j'ai vu que temporaire change exactement comme ab, donc au passage de ab[0] = cd[1], temporaire[0] devient aussi cd[1], et au passage de ab[1] = cd[0], temporaire[1] devient aussi cd[0].
J'espère que quelqu'un a la solution...
yg_be
Messages postés
23196
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 septembre 2024
Ambassadeur
1 534
Modifié le 21 mars 2020 à 22:11
Modifié le 21 mars 2020 à 22:11
bonjour, tu n'expliques pas ce que tu attends précisément de ton code. crois-tu que nous pouvons le deviner en analysant ton code?
d'autant plus que tu ne montres qu'une partie de ton code.
ce serait probablement préférable de donner un exemple complet, en montrant le résultat que tu obtiens et le résultat que tu attends. n'hésite pas à prendre le temps de construire un exemple court et clair. n'hésite pas non plus à ajouter des print() pour montrer où la réalité diverge de tes attentes.
si c'est la valeur de temporaire qui te surprend, pourquoi ne pas faire
d'autant plus que tu ne montres qu'une partie de ton code.
ce serait probablement préférable de donner un exemple complet, en montrant le résultat que tu obtiens et le résultat que tu attends. n'hésite pas à prendre le temps de construire un exemple court et clair. n'hésite pas non plus à ajouter des print() pour montrer où la réalité diverge de tes attentes.
si c'est la valeur de temporaire qui te surprend, pourquoi ne pas faire
print(temporaire)après chaque instruction?
Pour remettre ça au clair, voici un code un peu simplifié de ce que j'ai fait :
ab = ["a", "b"]
bc = ["b", "c"]
cd = ["c", "d"]
de = ["d", "e"]
temporaire = ["x", "y"]
temporaire = ab
print(temporaire)
ab[0] = bc[1]
ab[1] = bc[0]
print(ab)
bc = cd
print(bc)
cd[0] = de[1]
cd[1] = de[0]
print(cd)
de = temporaire
print(de)
Ensuite, toutes les listes s'affichent bien avec les valeurs que j'attends, sauf la dernière, qui affiche ["c", "b"]. En fait, la liste qui vaut ["c", "b"] est la liste ab (une fois changée). Je me rend compte qu'il est écrit plus haut dans le code temporaire = ab, puis plus bas de = temporaire. Donc de pourrait prendre temporaire comme valeur mais normalement celle-ci a été changée AVANT que ab ne change. Donc je trouve que ce n'est pas normal, ou alors j'ai raté quelque chose... Merci de votre aide
ab = ["a", "b"]
bc = ["b", "c"]
cd = ["c", "d"]
de = ["d", "e"]
temporaire = ["x", "y"]
temporaire = ab
print(temporaire)
ab[0] = bc[1]
ab[1] = bc[0]
print(ab)
bc = cd
print(bc)
cd[0] = de[1]
cd[1] = de[0]
print(cd)
de = temporaire
print(de)
Ensuite, toutes les listes s'affichent bien avec les valeurs que j'attends, sauf la dernière, qui affiche ["c", "b"]. En fait, la liste qui vaut ["c", "b"] est la liste ab (une fois changée). Je me rend compte qu'il est écrit plus haut dans le code temporaire = ab, puis plus bas de = temporaire. Donc de pourrait prendre temporaire comme valeur mais normalement celle-ci a été changée AVANT que ab ne change. Donc je trouve que ce n'est pas normal, ou alors j'ai raté quelque chose... Merci de votre aide
yg_be
Messages postés
23196
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 septembre 2024
1 534
22 mars 2020 à 08:58
22 mars 2020 à 08:58
si c'est la valeur de temporaire qui te surprend, pourquoi ne pas faire print(temporaire) après chaque instruction?
cela t'aidera à comprendre ce que fait ton programme, et à découvrir par toi-même ce que tu as raté.
merci, aussi, d'utiliser les balises de code quand tu postes du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
cela t'aidera à comprendre ce que fait ton programme, et à découvrir par toi-même ce que tu as raté.
merci, aussi, d'utiliser les balises de code quand tu postes du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Merci beaucoup !
yg_be
Messages postés
23196
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 septembre 2024
1 534
22 mars 2020 à 11:55
22 mars 2020 à 11:55
peux-tu marquer le sujet comme résolu?
22 mars 2020 à 11:10
https://www.science-emergence.com/Articles/Copier-une-liste-sous-python/