Ha les joies de découvrir un langage de programmation "moderne" avec ses
concept nouveau! (Mon premier prog était sous Basic 512 sur TO8 (Thomson),
et au lycée j'était imbattable sur la programmation de la TI-82)
Description du "problème" en quelques mots:
J'ai un fichier texte dans lequel je lis quatre valeurs par ligne.(Ça
j'arrive a faire pas de prob)
Je voulais stocker les quatre valeurs dans quatre listes séparées. (en fait
c'est des coordonnées de deux points)
j'ai écrit un bout de prog qui ressemblait a ceci
while (tant que je lis le fichier)
... (traitement des lignes)
... liste1.append(a)
... liste2.append(b)
... liste3.append(c)
... liste4.append(d)
où a,b,c,d sont les quatre valeurs extraite
A ma grande surprise après un tour de la boucle je me retrouvait avec: (pour
les essais je ne lisait qu'une ligne)
liste1=[a,b,c,d] et les trois autres liste pareil, comme si la fonction
append ajoutait un élément non pas à la liste prévu mais aux quatre à la
fois ...
- Vous allez me dire que c'est normal, mais je voudrais comprendre pourquoi
et comment faire alors ?
- Et une autre petite question, je fais aussi mumuse avec le module Tkinter
et je découvre au compte goutte les instruction inhérente a la fonctions
Canvas, je cherche une liste complète (si possible) des différentes
instruction pour dessiner avec leur argument possible (J'ai découvert le
create_text texte 2 semaines d'essai infructueux pour placer un texte dans
un dessin), alors je suis preneur (j'ai pas peur, même en anglais, je vais
bien réussir a comprendre)
Au fait j'ai aussi commencer la lecture de "Apprendre à programmer avec
Python", ce bouquin est quand meme pas mal fichu et je le conseille pour les
debutants (J'en suis encore un dans le domaine de Python)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christophe Cavalaria
Francky wrote:
Bonjour,
Ha les joies de découvrir un langage de programmation "moderne" avec ses concept nouveau! (Mon premier prog était sous Basic 512 sur TO8 (Thomson), et au lycée j'était imbattable sur la programmation de la TI-82)
Description du "problème" en quelques mots: J'ai un fichier texte dans lequel je lis quatre valeurs par ligne.(Ça j'arrive a faire pas de prob) Je voulais stocker les quatre valeurs dans quatre listes séparées. (en fait c'est des coordonnées de deux points) j'ai écrit un bout de prog qui ressemblait a ceci while (tant que je lis le fichier) ... (traitement des lignes) ... liste1.append(a) ... liste2.append(b) ... liste3.append(c) ... liste4.append(d)
où a,b,c,d sont les quatre valeurs extraite A ma grande surprise après un tour de la boucle je me retrouvait avec: (pour les essais je ne lisait qu'une ligne) liste1=[a,b,c,d] et les trois autres liste pareil, comme si la fonction append ajoutait un élément non pas à la liste prévu mais aux quatre à la fois ...
- Vous allez me dire que c'est normal, mais je voudrais comprendre pourquoi et comment faire alors ? - Et une autre petite question, je fais aussi mumuse avec le module Tkinter et je découvre au compte goutte les instruction inhérente a la fonctions Canvas, je cherche une liste complète (si possible) des différentes instruction pour dessiner avec leur argument possible (J'ai découvert le create_text texte 2 semaines d'essai infructueux pour placer un texte dans un dessin), alors je suis preneur (j'ai pas peur, même en anglais, je vais bien réussir a comprendre)
Au fait j'ai aussi commencer la lecture de "Apprendre à programmer avec Python", ce bouquin est quand meme pas mal fichu et je le conseille pour les debutants (J'en suis encore un dans le domaine de Python)
Voila Bonne nuit (il est 23h30) Francky
Il manque pas mal de code pour deboguer ça mais je pense simplement que tu as initialisé tes listes comme ça :
liste1 = liste2 = liste3 = liste4 = []
Résultat, comme les listes sont mutables, tes 4 variables pointent sur la même liste. Il te faut faire ça plustot : liste1 = [] liste2 = [] liste3 = [] liste4 = []
Francky wrote:
Bonjour,
Ha les joies de découvrir un langage de programmation "moderne" avec ses
concept nouveau! (Mon premier prog était sous Basic 512 sur TO8 (Thomson),
et au lycée j'était imbattable sur la programmation de la TI-82)
Description du "problème" en quelques mots:
J'ai un fichier texte dans lequel je lis quatre valeurs par ligne.(Ça
j'arrive a faire pas de prob)
Je voulais stocker les quatre valeurs dans quatre listes séparées. (en
fait c'est des coordonnées de deux points)
j'ai écrit un bout de prog qui ressemblait a ceci
while (tant que je lis le fichier)
... (traitement des lignes)
... liste1.append(a)
... liste2.append(b)
... liste3.append(c)
... liste4.append(d)
où a,b,c,d sont les quatre valeurs extraite
A ma grande surprise après un tour de la boucle je me retrouvait avec:
(pour les essais je ne lisait qu'une ligne)
liste1=[a,b,c,d] et les trois autres liste pareil, comme si la fonction
append ajoutait un élément non pas à la liste prévu mais aux quatre à la
fois ...
- Vous allez me dire que c'est normal, mais je voudrais comprendre
pourquoi et comment faire alors ?
- Et une autre petite question, je fais aussi mumuse avec le module
Tkinter et je découvre au compte goutte les instruction inhérente a la
fonctions Canvas, je cherche une liste complète (si possible) des
différentes instruction pour dessiner avec leur argument possible (J'ai
découvert le create_text texte 2 semaines d'essai infructueux pour placer
un texte dans un dessin), alors je suis preneur (j'ai pas peur, même en
anglais, je vais bien réussir a comprendre)
Au fait j'ai aussi commencer la lecture de "Apprendre à programmer avec
Python", ce bouquin est quand meme pas mal fichu et je le conseille pour
les debutants (J'en suis encore un dans le domaine de Python)
Voila
Bonne nuit (il est 23h30)
Francky
Il manque pas mal de code pour deboguer ça mais je pense simplement que tu
as initialisé tes listes comme ça :
liste1 = liste2 = liste3 = liste4 = []
Résultat, comme les listes sont mutables, tes 4 variables pointent sur la
même liste. Il te faut faire ça plustot :
liste1 = []
liste2 = []
liste3 = []
liste4 = []
Ha les joies de découvrir un langage de programmation "moderne" avec ses concept nouveau! (Mon premier prog était sous Basic 512 sur TO8 (Thomson), et au lycée j'était imbattable sur la programmation de la TI-82)
Description du "problème" en quelques mots: J'ai un fichier texte dans lequel je lis quatre valeurs par ligne.(Ça j'arrive a faire pas de prob) Je voulais stocker les quatre valeurs dans quatre listes séparées. (en fait c'est des coordonnées de deux points) j'ai écrit un bout de prog qui ressemblait a ceci while (tant que je lis le fichier) ... (traitement des lignes) ... liste1.append(a) ... liste2.append(b) ... liste3.append(c) ... liste4.append(d)
où a,b,c,d sont les quatre valeurs extraite A ma grande surprise après un tour de la boucle je me retrouvait avec: (pour les essais je ne lisait qu'une ligne) liste1=[a,b,c,d] et les trois autres liste pareil, comme si la fonction append ajoutait un élément non pas à la liste prévu mais aux quatre à la fois ...
- Vous allez me dire que c'est normal, mais je voudrais comprendre pourquoi et comment faire alors ? - Et une autre petite question, je fais aussi mumuse avec le module Tkinter et je découvre au compte goutte les instruction inhérente a la fonctions Canvas, je cherche une liste complète (si possible) des différentes instruction pour dessiner avec leur argument possible (J'ai découvert le create_text texte 2 semaines d'essai infructueux pour placer un texte dans un dessin), alors je suis preneur (j'ai pas peur, même en anglais, je vais bien réussir a comprendre)
Au fait j'ai aussi commencer la lecture de "Apprendre à programmer avec Python", ce bouquin est quand meme pas mal fichu et je le conseille pour les debutants (J'en suis encore un dans le domaine de Python)
Voila Bonne nuit (il est 23h30) Francky
Il manque pas mal de code pour deboguer ça mais je pense simplement que tu as initialisé tes listes comme ça :
liste1 = liste2 = liste3 = liste4 = []
Résultat, comme les listes sont mutables, tes 4 variables pointent sur la même liste. Il te faut faire ça plustot : liste1 = [] liste2 = [] liste3 = [] liste4 = []
Francky
Rebonjour, Merci de cette réponse C'est exact j'ai bien initialisé mes listes comme cela liste1 = liste2 = liste3 = liste4= [] Donc si j'ai bien compris: mes quatres listes ne sont en fait qu'une meme et unique liste avec quatres noms différents.... Donc lorsque l'on dit que les listes sont mutables, c'est que une seule et unique liste peut prendre plusieurs noms différents ? Encore merci Francky
Rebonjour,
Merci de cette réponse
C'est exact j'ai bien initialisé mes listes comme cela
liste1 = liste2 = liste3 = liste4= []
Donc si j'ai bien compris: mes quatres listes ne sont en fait qu'une meme et
unique liste avec quatres noms différents....
Donc lorsque l'on dit que les listes sont mutables, c'est que une seule et
unique liste peut prendre plusieurs noms différents ?
Encore merci
Francky
Rebonjour, Merci de cette réponse C'est exact j'ai bien initialisé mes listes comme cela liste1 = liste2 = liste3 = liste4= [] Donc si j'ai bien compris: mes quatres listes ne sont en fait qu'une meme et unique liste avec quatres noms différents.... Donc lorsque l'on dit que les listes sont mutables, c'est que une seule et unique liste peut prendre plusieurs noms différents ? Encore merci Francky
Eric Brunel
Francky wrote: [snip]
- Et une autre petite question, je fais aussi mumuse avec le module Tkinter et je découvre au compte goutte les instruction inhérente a la fonctions Canvas, je cherche une liste complète (si possible) des différentes instruction pour dessiner avec leur argument possible (J'ai découvert le create_text texte 2 semaines d'essai infructueux pour placer un texte dans un dessin), alors je suis preneur (j'ai pas peur, même en anglais, je vais bien réussir a comprendre)
Au fait j'ai aussi commencer la lecture de "Apprendre à programmer avec Python", ce bouquin est quand meme pas mal fichu et je le conseille pour les debutants (J'en suis encore un dans le domaine de Python)
Je suppose que tu as lu les chapitres sur Tkinter dans ce (très bon) bouquin. Je le recommande également à tous ceux qui commencent, mais c'est vrai que ce n'est pas fait pour etre un manuel de référence...
Dans cette optique, il y a ça: http://www.pythonware.com/library/tkinter/introduction/index.htm Il manque malheureusement quelques chapitres.
Sinon, il ne faut pas oublier que Tkinter est construit au dessus de tcl/tk, donc la référence la plus complète sera toujours ça: http://www.tcl.tk/man/ Par contre, c'est la syntaxe tcl, et pas la syntaxe Python. Ca demande donc un peu d'habitude au début pour passer de l'un à l'autre, meme si on s'y fait plutot vite. -- - Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> - PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com
Francky wrote:
[snip]
- Et une autre petite question, je fais aussi mumuse avec le module Tkinter
et je découvre au compte goutte les instruction inhérente a la fonctions
Canvas, je cherche une liste complète (si possible) des différentes
instruction pour dessiner avec leur argument possible (J'ai découvert le
create_text texte 2 semaines d'essai infructueux pour placer un texte dans
un dessin), alors je suis preneur (j'ai pas peur, même en anglais, je vais
bien réussir a comprendre)
Au fait j'ai aussi commencer la lecture de "Apprendre à programmer avec
Python", ce bouquin est quand meme pas mal fichu et je le conseille pour les
debutants (J'en suis encore un dans le domaine de Python)
Je suppose que tu as lu les chapitres sur Tkinter dans ce (très bon) bouquin. Je
le recommande également à tous ceux qui commencent, mais c'est vrai que ce n'est
pas fait pour etre un manuel de référence...
Dans cette optique, il y a ça:
http://www.pythonware.com/library/tkinter/introduction/index.htm
Il manque malheureusement quelques chapitres.
Sinon, il ne faut pas oublier que Tkinter est construit au dessus de tcl/tk,
donc la référence la plus complète sera toujours ça:
http://www.tcl.tk/man/
Par contre, c'est la syntaxe tcl, et pas la syntaxe Python. Ca demande donc un
peu d'habitude au début pour passer de l'un à l'autre, meme si on s'y fait
plutot vite.
--
- Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> -
PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com
- Et une autre petite question, je fais aussi mumuse avec le module Tkinter et je découvre au compte goutte les instruction inhérente a la fonctions Canvas, je cherche une liste complète (si possible) des différentes instruction pour dessiner avec leur argument possible (J'ai découvert le create_text texte 2 semaines d'essai infructueux pour placer un texte dans un dessin), alors je suis preneur (j'ai pas peur, même en anglais, je vais bien réussir a comprendre)
Au fait j'ai aussi commencer la lecture de "Apprendre à programmer avec Python", ce bouquin est quand meme pas mal fichu et je le conseille pour les debutants (J'en suis encore un dans le domaine de Python)
Je suppose que tu as lu les chapitres sur Tkinter dans ce (très bon) bouquin. Je le recommande également à tous ceux qui commencent, mais c'est vrai que ce n'est pas fait pour etre un manuel de référence...
Dans cette optique, il y a ça: http://www.pythonware.com/library/tkinter/introduction/index.htm Il manque malheureusement quelques chapitres.
Sinon, il ne faut pas oublier que Tkinter est construit au dessus de tcl/tk, donc la référence la plus complète sera toujours ça: http://www.tcl.tk/man/ Par contre, c'est la syntaxe tcl, et pas la syntaxe Python. Ca demande donc un peu d'habitude au début pour passer de l'un à l'autre, meme si on s'y fait plutot vite. -- - Eric Brunel <eric (underscore) brunel (at) despammed (dot) com> - PragmaDev : Real Time Software Development Tools - http://www.pragmadev.com
Francky
Rebonjour, Merci de ces precisions, en effet j'ai bien initialisé mes listes en faisant : liste1 = liste2 = liste3 = liste4 =[] Donc si j'ai bien compris j'ai créé une liste mais avec quatre noms différents... Je crois que j'ai lu quelque chose comme cela dans mon bouquin, il appelait ça des "alias"
Merci aussi pour les references sur Tkinter, je m'en vais voir tout ça de suite. Je crois que je vais revenir souvent sur ce forum au vu des reponses claire et precise ( et rapide )
Encore merci Bonne nuit
Rebonjour,
Merci de ces precisions, en effet j'ai bien initialisé mes listes en faisant
:
liste1 = liste2 = liste3 = liste4 =[]
Donc si j'ai bien compris j'ai créé une liste mais avec quatre noms
différents...
Je crois que j'ai lu quelque chose comme cela dans mon bouquin, il appelait
ça des "alias"
Merci aussi pour les references sur Tkinter, je m'en vais voir tout ça de
suite.
Je crois que je vais revenir souvent sur ce forum au vu des reponses claire
et precise ( et rapide )
Rebonjour, Merci de ces precisions, en effet j'ai bien initialisé mes listes en faisant : liste1 = liste2 = liste3 = liste4 =[] Donc si j'ai bien compris j'ai créé une liste mais avec quatre noms différents... Je crois que j'ai lu quelque chose comme cela dans mon bouquin, il appelait ça des "alias"
Merci aussi pour les references sur Tkinter, je m'en vais voir tout ça de suite. Je crois que je vais revenir souvent sur ce forum au vu des reponses claire et precise ( et rapide )
Encore merci Bonne nuit
Xavier Combelle
C'est exact j'ai bien initialisé mes listes comme cela liste1 = liste2 = liste3 = liste4= [] Comme je l'avais déjà proposé dans un mail précédent, c'est beaucoup
plus simple avec un ECM (Exemple Complet Minimal). Il s'agit du pplus petit code qui peremet de montrer le problème. En plus d'aider les autres à t'apporter une réponse, ca te permet de clarifier la situation.
Donc si j'ai bien compris: mes quatres listes ne sont en fait qu'une meme et unique liste avec quatres noms différents.... Donc lorsque l'on dit que les listes sont mutables, c'est que une seule et unique liste peut prendre plusieurs noms différents ?
Tu as tout compris. En fait n'importe quel objet peut prendre plusieurs "noms". Certains comme les "cases" d'un tableau n'en portent pas vraiement. Ca s'applique en particulier aux objets mutables ce qui fait que lorsque tu en modifie un, tu le modifie sous tous ses noms.
J'en profite pour mentionner un avertissement important:
"Avertissement important: La valeur par défaut est évaluée seulement une fois. Ceci est important lorsque la valeur par défaut est un objet modifiable comme une liste ou un dictionnaire."
Qu'on peut trouver dans le tutoriel python: http://perso.club-internet.fr/olberger/python/doc/tut/ 4.7.1 Valeurs d'Argument par Défaut
Ce qui signifie que concrêtrement, il ne faut pas utiliser de mutable pour valeur par défaut. Moi, en général, soit j'utilise des types "primitifs" (entier, chaines) soit None. AMA, ca donne un code plus clair.
C'est exact j'ai bien initialisé mes listes comme cela
liste1 = liste2 = liste3 = liste4= []
Comme je l'avais déjà proposé dans un mail précédent, c'est beaucoup
plus simple avec un ECM (Exemple Complet Minimal).
Il s'agit du pplus petit code qui peremet de montrer le problème.
En plus d'aider les autres à t'apporter une réponse, ca te permet de
clarifier la situation.
Donc si j'ai bien compris: mes quatres listes ne sont en fait qu'une meme et
unique liste avec quatres noms différents....
Donc lorsque l'on dit que les listes sont mutables, c'est que une seule et
unique liste peut prendre plusieurs noms différents ?
Tu as tout compris. En fait n'importe quel objet peut prendre plusieurs
"noms". Certains comme les "cases" d'un tableau n'en portent pas
vraiement. Ca s'applique en particulier aux objets mutables ce qui fait
que lorsque tu en modifie un, tu le modifie sous tous ses noms.
J'en profite pour mentionner un avertissement important:
"Avertissement important: La valeur par défaut est évaluée seulement une
fois. Ceci est important lorsque la valeur par défaut est un objet
modifiable comme une liste ou un dictionnaire."
Qu'on peut trouver dans le tutoriel python:
http://perso.club-internet.fr/olberger/python/doc/tut/
4.7.1 Valeurs d'Argument par Défaut
Ce qui signifie que concrêtrement, il ne faut pas utiliser de mutable
pour valeur par défaut. Moi, en général, soit j'utilise des types
"primitifs" (entier, chaines) soit None. AMA, ca donne un code plus clair.
C'est exact j'ai bien initialisé mes listes comme cela liste1 = liste2 = liste3 = liste4= [] Comme je l'avais déjà proposé dans un mail précédent, c'est beaucoup
plus simple avec un ECM (Exemple Complet Minimal). Il s'agit du pplus petit code qui peremet de montrer le problème. En plus d'aider les autres à t'apporter une réponse, ca te permet de clarifier la situation.
Donc si j'ai bien compris: mes quatres listes ne sont en fait qu'une meme et unique liste avec quatres noms différents.... Donc lorsque l'on dit que les listes sont mutables, c'est que une seule et unique liste peut prendre plusieurs noms différents ?
Tu as tout compris. En fait n'importe quel objet peut prendre plusieurs "noms". Certains comme les "cases" d'un tableau n'en portent pas vraiement. Ca s'applique en particulier aux objets mutables ce qui fait que lorsque tu en modifie un, tu le modifie sous tous ses noms.
J'en profite pour mentionner un avertissement important:
"Avertissement important: La valeur par défaut est évaluée seulement une fois. Ceci est important lorsque la valeur par défaut est un objet modifiable comme une liste ou un dictionnaire."
Qu'on peut trouver dans le tutoriel python: http://perso.club-internet.fr/olberger/python/doc/tut/ 4.7.1 Valeurs d'Argument par Défaut
Ce qui signifie que concrêtrement, il ne faut pas utiliser de mutable pour valeur par défaut. Moi, en général, soit j'utilise des types "primitifs" (entier, chaines) soit None. AMA, ca donne un code plus clair.
Laurent Pointal
Francky wrote:
Rebonjour, Merci de cette réponse C'est exact j'ai bien initialisé mes listes comme cela liste1 = liste2 = liste3 = liste4= [] Donc si j'ai bien compris: mes quatres listes ne sont en fait qu'une meme et unique liste avec quatres noms différents....
Tu as créé un objet liste et tu as associé cet objet à quatre noms.
Donc lorsque l'on dit que les listes sont mutables, c'est que une seule et unique liste peut prendre plusieurs noms différents ?
Non.
Mutable veut dire que tu peux modifier l'objet sur place. Exemple s1=s2=s3=s4="Bonjour" Stocke le même objet chaîne dans quatre noms. Mais l'objet chaîne est immutable, si tu fais s3[2]='O', Python va te jeter. l1=l2=l3=l4=[1,2,3,4,5,6,7,8] Stocke le même objet liste dans quatre noms. Et là les listes sont des objets mutables, tu peux écrire l3[2]=0
A+
Laurent.
Francky wrote:
Rebonjour,
Merci de cette réponse
C'est exact j'ai bien initialisé mes listes comme cela
liste1 = liste2 = liste3 = liste4= []
Donc si j'ai bien compris: mes quatres listes ne sont en fait qu'une meme
et unique liste avec quatres noms différents....
Tu as créé un objet liste et tu as associé cet objet à quatre noms.
Donc lorsque l'on dit que les listes sont mutables, c'est que une seule et
unique liste peut prendre plusieurs noms différents ?
Non.
Mutable veut dire que tu peux modifier l'objet sur place.
Exemple
s1=s2=s3=s4="Bonjour"
Stocke le même objet chaîne dans quatre noms. Mais l'objet chaîne est
immutable, si tu fais s3[2]='O', Python va te jeter.
l1=l2=l3=l4=[1,2,3,4,5,6,7,8]
Stocke le même objet liste dans quatre noms. Et là les listes sont des
objets mutables, tu peux écrire l3[2]=0
Rebonjour, Merci de cette réponse C'est exact j'ai bien initialisé mes listes comme cela liste1 = liste2 = liste3 = liste4= [] Donc si j'ai bien compris: mes quatres listes ne sont en fait qu'une meme et unique liste avec quatres noms différents....
Tu as créé un objet liste et tu as associé cet objet à quatre noms.
Donc lorsque l'on dit que les listes sont mutables, c'est que une seule et unique liste peut prendre plusieurs noms différents ?
Non.
Mutable veut dire que tu peux modifier l'objet sur place. Exemple s1=s2=s3=s4="Bonjour" Stocke le même objet chaîne dans quatre noms. Mais l'objet chaîne est immutable, si tu fais s3[2]='O', Python va te jeter. l1=l2=l3=l4=[1,2,3,4,5,6,7,8] Stocke le même objet liste dans quatre noms. Et là les listes sont des objets mutables, tu peux écrire l3[2]=0