Problème ajout d'un objet dans une liste Python
Résolu/Fermé
gdepotter
Messages postés
5
Date d'inscription
vendredi 21 décembre 2018
Statut
Membre
Dernière intervention
25 décembre 2018
-
Modifié le 23 déc. 2018 à 21:28
gdepotter Messages postés 5 Date d'inscription vendredi 21 décembre 2018 Statut Membre Dernière intervention 25 décembre 2018 - 25 déc. 2018 à 20:52
gdepotter Messages postés 5 Date d'inscription vendredi 21 décembre 2018 Statut Membre Dernière intervention 25 décembre 2018 - 25 déc. 2018 à 20:52
A voir également:
- Problème ajout d'un objet dans une liste Python
- Liste déroulante excel - Guide
- Vente objet occasion entre particulier - Guide
- Liste déroulante en cascade - Guide
- Citizen code python avis - Accueil - Outils
3 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
21 déc. 2018 à 15:39
21 déc. 2018 à 15:39
Bonjour,
Du python sans indentation, c'est absolument illisible.
Pourriez-vous utiliser la balise < code>, avec le langage idoine (bouton <> dans l'interface de saisie du message), qui permet de conserver la mise en forme et rajoute de la coloration syntaxique ?
Xavier
Du python sans indentation, c'est absolument illisible.
Pourriez-vous utiliser la balise < code>, avec le langage idoine (bouton <> dans l'interface de saisie du message), qui permet de conserver la mise en forme et rajoute de la coloration syntaxique ?
Xavier
Jithel
Messages postés
843
Date d'inscription
mercredi 20 juin 2018
Statut
Membre
Dernière intervention
31 août 2021
171
21 déc. 2018 à 16:13
21 déc. 2018 à 16:13
def imprimer(self): print(self.movie_id) print(self.name) print(self.category)
Essaye avec ce code
gdepotter
Messages postés
5
Date d'inscription
vendredi 21 décembre 2018
Statut
Membre
Dernière intervention
25 décembre 2018
21 déc. 2018 à 16:24
21 déc. 2018 à 16:24
Merci beaucoup, ça a déjà résolu un de mes problèmes! Mais les catégories s'affichent toujours mal. Avez-vous une idée?
Ce que la console affiche :
1
Toy Story (1995)
['Comedy']
2
Jumanji (1995)
['Comedy']
3
Grumpier Old Men (1995)
['Comedy']
4
Waiting to Exhale (1995)
['Comedy']
5
Father of the Bride Part II (1995)
['Comedy']
Ce qu'elle devrait afficher :
1
Toy Story (1995)
['Adventure', 'Animation', 'Children', 'Comedy', 'Fantasy']
2
Jumanji (1995)
['Adventure', 'Children', 'Fantasy']
3
Grumpier Old Men (1995)
['Comedy', 'Romance']
4
Waiting to Exhale (1995)
['Comedy', 'Drama', 'Romance']
5
Father of the Bride Part II (1995)
['Comedy']
Ce que la console affiche :
1
Toy Story (1995)
['Comedy']
2
Jumanji (1995)
['Comedy']
3
Grumpier Old Men (1995)
['Comedy']
4
Waiting to Exhale (1995)
['Comedy']
5
Father of the Bride Part II (1995)
['Comedy']
Ce qu'elle devrait afficher :
1
Toy Story (1995)
['Adventure', 'Animation', 'Children', 'Comedy', 'Fantasy']
2
Jumanji (1995)
['Adventure', 'Children', 'Fantasy']
3
Grumpier Old Men (1995)
['Comedy', 'Romance']
4
Waiting to Exhale (1995)
['Comedy', 'Drama', 'Romance']
5
Father of the Bride Part II (1995)
['Comedy']
Jithel
Messages postés
843
Date d'inscription
mercredi 20 juin 2018
Statut
Membre
Dernière intervention
31 août 2021
171
21 déc. 2018 à 16:52
21 déc. 2018 à 16:52
Il doit y avoir un problème ici :
Vérifie que le print(mot) affiche bien toutes les catégories et non Comedy à chaque fois
for mot in category_ligne.split("|"): print(mot) category.append(mot)
Vérifie que le print(mot) affiche bien toutes les catégories et non Comedy à chaque fois
gdepotter
Messages postés
5
Date d'inscription
vendredi 21 décembre 2018
Statut
Membre
Dernière intervention
25 décembre 2018
21 déc. 2018 à 16:57
21 déc. 2018 à 16:57
Oui il les affiche bien. Ca ne vient pas de là.
Jithel
Messages postés
843
Date d'inscription
mercredi 20 juin 2018
Statut
Membre
Dernière intervention
31 août 2021
171
23 déc. 2018 à 07:12
23 déc. 2018 à 07:12
J'ai comme l'impression qu'il manque un
self.categoryquelque part dans le code de ta classe. Tu es sûr que tu as mis ce code :
def imprimer(self): print(self.movie_id) print(self.name) print(self.category)
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
Modifié le 24 déc. 2018 à 09:39
Modifié le 24 déc. 2018 à 09:39
Bonjour,
Je ne connais pas bien Python, mais il me semble que le tableau category est toujours le même, réutilisé pour chaque objet. Le category.Clear() ne réinstancie pas un nouveau tableau. Du coup chaque objet fait en fait référence au même tableau Category, qui est vidé et rempli à chaque fois. Ne reste donc à la fin que son dernier contenu.
À mon avis, il faudrait soit remplacer category.Clear() par le code pour instancier un nouveau tableau, soit modifier le __init__ de Movie pour faire une copie de category dans un nouveau tableau, plutôt que de référencer le tableau courant.
Xavier
Je ne connais pas bien Python, mais il me semble que le tableau category est toujours le même, réutilisé pour chaque objet. Le category.Clear() ne réinstancie pas un nouveau tableau. Du coup chaque objet fait en fait référence au même tableau Category, qui est vidé et rempli à chaque fois. Ne reste donc à la fin que son dernier contenu.
À mon avis, il faudrait soit remplacer category.Clear() par le code pour instancier un nouveau tableau, soit modifier le __init__ de Movie pour faire une copie de category dans un nouveau tableau, plutôt que de référencer le tableau courant.
Xavier
gdepotter
Messages postés
5
Date d'inscription
vendredi 21 décembre 2018
Statut
Membre
Dernière intervention
25 décembre 2018
25 déc. 2018 à 20:52
25 déc. 2018 à 20:52
Merci beaucoup à tous. Mon problème est résolu grâce à vous ! :)
21 déc. 2018 à 16:03
Code pour ajouter l'objet dans la liste: