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 :

Créer une variable indicée [Python 3.X]


Sujet :

Python

  1. #1
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut Créer une variable indicée
    Bonjour à tous,

    Je souhaite pour simplifier mon code une variable à laquelle je concatène un indice.
    J'ai ce bout de code :
    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
     
    led1 = tk.PhotoImage(file="images/led_green.png")
        canvas1 = tk.Canvas(frame, width=largeur, height=hauteur)
        canvas1.create_image(largeur/2, hauteur/2, image=led1)
        canvas1.grid(row=0, column=0)
     
        led2 = tk.PhotoImage(file="images/led_green.png")
        canvas2 = tk.Canvas(frame, width=largeur, height=hauteur)
        canvas2.create_image(largeur / 2, hauteur / 2, image=led2)
        canvas2.grid(row=0, column=1)
     
        led3 = tk.PhotoImage(file="images/led_green.png")
        canvas3 = tk.Canvas(frame, width=largeur, height=hauteur)
        canvas3.create_image(largeur / 2, hauteur / 2, image=led3)
        canvas3.grid(row=0, column=2)
    Je souhaite le simplifier de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for i in range(3):
     
        led+i = tk.PhotoImage(file="images/led_green.png")
        canvas+i = tk.Canvas(frame, width=largeur, height=hauteur)
        canvas+i.create_image(largeur / 2, hauteur / 2, image=led2)
        canvas+i.grid(row=0, column=1)
    Merci bien de votre aide.

  2. #2
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    Vous devriez tout simplement utiliser un (des?) dictionnaire(s) ou listes.

    Après il vous appartient de choisir la structure la plus adapté (un seul dictionnaire, dictionnaire de listes, liste de dictionnaires, ect ...)

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    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 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Citation Envoyé par thierrybatlle Voir le message
    Je souhaite le simplifier de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in range(3):
     
        led+i = tk.PhotoImage(file="images/led_green.png")
        canvas+i = tk.Canvas(frame, width=largeur, height=hauteur)
        canvas+i.create_image(largeur / 2, hauteur / 2, image=led2)
        canvas+i.grid(row=0, column=1)
    Merci bien de votre aide.
    Sans déconner ? T'es ingénieur dev et tu connais pas les tableaux ???


    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    elem=tuple({} for i in range(3))
    for i in range(3):
        elem[i]["led"]=tk.PhotoImage(file="images/led_green.png")
        elem[i]["canvas"]=tk.Canvas(frame, width=largeur, height=hauteur)
        elem[i]["canvas"].create_image(largeur / 2, hauteur / 2, image=led2)
        elem[i]["canvas"].grid(row=0, column=1)
    # for

    Ok, là c'est un tableau de dicos créé à la volée (donc une syntaxe qui ne saute pas forcément immédiatement à l'esprit quand on n'a pas l'habitude) mais si le fait de regrouper "led" et "canvas" ensemble est peut-être pas évident, tu ne pouvais pas au-moins ne pas penser à un tableau de led et un autre de canvas séparés. Me semble que tu t'es un peu surestimé dans ton profil.
    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]

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    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 : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    Bonjour,

    C'est une très mauvaise pratique que de vouloir modifier et créer dynamiquement des variables (je vois venir le globals à grand pas).

    Il est aussi possible de créer une fonction retournant un tuple avec les objets led et canvas. À chaque appel de cette fonction un nouveau tuple d'objets différents sera créé, il suffit de l'ajouter à une liste.

    Il y a plein de solutions qui n'ont pas été citées ici, mais la plus naturelle reste la liste.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

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

Discussions similaires

  1. Créer une variable avec un indice qui change
    Par Marissa1990 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 12/11/2016, 22h41
  2. [Sécurité] Peut on créer une variable $_SERVER
    Par Cr@zyDeep dans le forum Langage
    Réponses: 6
    Dernier message: 12/05/2006, 09h27
  3. Créer une variable varchar interne à une procédure stockée
    Par killysui dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 26/04/2006, 17h59
  4. Réponses: 8
    Dernier message: 06/02/2006, 16h38
  5. [JDOM] Créer une variable xml directement dans java
    Par Tigrounette dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 18/12/2005, 14h21

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