IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

erreur sur gestion de liste


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2023
    Messages : 4
    Par défaut erreur sur gestion de liste
    bonjour,

    je débute avec python et je rencontre un soucis sur la gestion de 2 listes que je n ai pas réussi a résoudre

    ma première liste contient ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    self.grille = [
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0],        
                [0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
                [1, -1, -1, 1, 1, -1, -1, 1, 1, 1, -1, -1, 1, 1]
    ma deuxième liste contient ceci, ce sont les coordonnées de ma première liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.valid = [(4,2), (7,10),(8,4)]
    je souhaite me servir de ma 2eme liste self.valid pour intégrer dans ma première liste self.grille le chiffre 9 a tel ou tel coordonnée

    j ai procède comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(3) :
              self.grille[valid[i]][valid[i]] = (9)
    mais je reçois cette erreur

    self.grille[valid_moves[i]][valid_moves[i]] = (9)
    TypeError: list indices must be integers or slices, not tuple
    comment pourrais je remédier a cela ?

    merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 968
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 968
    Par défaut
    (4,2), (7,10), et (8,4) déclaré dans self.valid sont des tuples pas des entiers.

    Tu ne peux pas accéder à self.grille[(4,2)][(4,2)].

  3. #3
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Vous commencez avec python, ne savez pas utiliser des listes, base du langage, mais je vois que vous utilisez self qui indique l'utilisation des classes qui sont des notions avancées du langage.

    Pour votre problème, self.valid[i] va vous retourner le tuple de coordonnées, et donc indexer un tuple à une liste ne se fait pas de cette façon, il faut encore décomposer le tuple résultant.

    Tester ce code en dehors de votre code original.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    grille = [    
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, -1, 1, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 1, -1, 0, 0, 0, 0, 0, 0],        
        [0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
        [1, -1, -1, 1, 1, -1, -1, 1, 1, 1, -1, -1, 1, 1],
    ]
     
    valid = [(4,2), (7,10),(8,4)]
     
    for line, column in valid:
        grille[line][column] = 9
     
    print(grille)

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par ditladite Voir le message
    j ai procède comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(3) :
              self.grille[valid[i]][valid[i]] = (9)
    mais je reçois cette erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    self.grille[valid_moves[i]][valid_moves[i]] = (9)
    TypeError: list indices must be integers or slices, not tuple
    Normal, valid est une liste de tuples donc valid[i] est un tuple. Or un indice doit être un entier, pas un tuple. C'est exactement ce que te dit le message d'erreur et tu aurais réfléchi 30 secondes sur le sens de ce qu'est valid[i] tu l'aurais compris tout seul. Quant aux parenthèses autour du 9 (les parenthèses servent à grouper des éléments et/ou à prioriser des opérations or 9 n'est ni un ensemble d'éléments ni une opération)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in range(3) :
              self.grille[valid[i][0]][valid[i][1]] = 9
    Ce qui est exactement ce qu'a écrit fred1599 en utilisant pour sa part une technique d'unpacking pour descendre chaque indice [0] et [1] dans des variables "line" et "column".
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2023
    Messages : 4
    Par défaut
    merci pour vos reponses

    Vous commencez avec python, ne savez pas utiliser des listes, base du langage, mais je vois que vous utilisez self qui indique l'utilisation des classes qui sont des notions avancées du langage.
    effectivement, mais pour vous repondre, j ai mis les mains dans python il n y a pas longtemps et je n ai aucun bagage en programmation avant cela, mis a part qq tutos et un peu lecture dans l aide de python, donc j ai des lacunes forcement,

    en fait, je cree de petits jeux pour borne de flechettes, et je me contente pour l instant de modifier l un ou l autre deja jeu present et l architecture du programme, class et autres sont deja present et fonctionnel




    tu aurais réfléchi 30 secondes sur le sens de ce qu'est valid[i] tu l'aurais compris tout seul. Quant aux parenthèses autour du 9 (les parenthèses servent à grouper des éléments et/ou à prioriser des opérations or 9 n'est ni un ensemble d'éléments ni une opération)...
    d ici qq temps, ca me paraitra surement logique, on ne devient pas programmeur du jour au lendemain, bien qu avec le peu que je connaisse, je suis arrive a realiser qq jeux fonctionnels

    enocre merci à tous pour votre aide, je vais tester cela

    EDIT :

    meric, je passe en resolu

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par ditladite Voir le message
    effectivement, mais pour vous repondre, j ai mis les mains dans python il n y a pas longtemps et je n ai aucun bagage en programmation avant cela, mis a part qq tutos et un peu lecture dans l aide de python, donc j ai des lacunes forcement)
    Il faudrait vous résoudre à freiner votre envie de réaliser des petits projets pour consacrer plus de temps à essayer de faire les exercices proposés dans un bon tuto.

    Normalement, ce n'est qu'après avoir passe du temps dans la dizaine de chapitres qui présentent les bases que vous pourrez vous lancer à montrer que vous savez mettre en œuvre ce que vous avez appris en vous lançant dans de petits projets.

    Sans çà vous allez avoir 2 problèmes: soit vous bidouillez une solution, soit vous recopiez le code qu'on vous donne sans trop comprendre. Dans les 2 cas, vous aurez des soucis plus tard car une bidouille évolue mal et la structure d'un code que vous n'avez pas pensé, vous jouera des tours.

    Citation Envoyé par ditladite Voir le message
    d ici qq temps, ca me paraitra surement logique, on ne devient pas programmeur du jour au lendemain, bien qu avec le peu que je connaisse, je suis arrive a realiser qq jeux fonctionnels
    Dans le cas présent, python sort un message d'erreur que vous ne savez pas exploiter dans l'incapacité à comprendre les détails du code que vous avez écrit. Faire quelque chose des messages d'erreur et relire son code est bien plus facile à apprendre en essayant de faire les exos (simples) d 'un tuto.
    Vous familiarisez avec les soucis qu'on peut avoir et que faire lorsqu'on écrit du code avec python est très spécifique à python. " programmer" n'a rien à voir! Même si in fine on va fabriquer un truc qui sera écrit avec des instructions du langage python: par où commencer? comment organiser? comment tester? comment diffuser? ....

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD-2013] Erreur sur création de liste
    Par yougmeaz dans le forum VBA Word
    Réponses: 1
    Dernier message: 06/10/2015, 12h11
  2. [PHP-JS] gestion des erreurs sur liste déroulente
    Par HwRZxLc4 dans le forum Langage
    Réponses: 9
    Dernier message: 28/05/2006, 03h21
  3. Erreur sur déclaration de liste
    Par La Truffe dans le forum C++
    Réponses: 4
    Dernier message: 19/02/2006, 19h38
  4. [VBA-E] Pb sur gestion des erreurs
    Par micoscas dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 08/03/2005, 17h08
  5. [servlet] gestion des listes d'erreurs ?
    Par MatMeuh dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 27/10/2004, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo