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 :

accéder aux valeurs d'une variable avec une boucle for qui itere sur une partie du nom de ma variable


Sujet :

Python

  1. #1
    Membre averti
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2022
    Messages : 36
    Par défaut accéder aux valeurs d'une variable avec une boucle for qui itere sur une partie du nom de ma variable
    Bonjour
    j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a1 = "aaaa"
    a2 = "aaaa"
    a3 = "aaaa"
    a3 = "bbbb"

    j'aimerai, avec une boucle for, accéder aux valeurs des a1, a2, a3.

    j'ai essayé ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    a1 = "aaaa"
    a2 = "aaaa"
    a3 = "aaaa"
    a3 = "bbbb"
     
    for i in range(1, 4):
        var = "a"+str(i)
        print(var)

    il m'affiche:
    a1
    a2
    a3
    or j'aimerai accéder aux valeurs assignées aux variables, c'est à dire afficher les valeurs que contiennent a1, a2 a3
    est-ce possible?

    en gros j'aimerai accéder à leurs valeurs pour ensuite tester les valeurs avec une boucle if.
    du genre si a(i) == "bbbb" alors on fait ceci, sinon on fait cela..

    est-ce possible?

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 657
    Par défaut
    salut,

    Citation Envoyé par sqlbeginner Voir le message
    j'ai le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    a1 = "aaaa"
    a2 = "aaaa"
    a3 = "aaaa"
    a3 = "bbbb"
    pourquoi ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour

    C'est techniquement possible, même si ce n'est pas recommandé (il faut éviter eval pour des problèmes de sécurité):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    a1 = "aaaa"
    a2 = "aaaa"
    a3 = "aaaa"
    a4 = "bbbb"
     
    for i in range(1, 5):
        var = "a"+str(i)
        print(eval(var))
    Ce qui affiche bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    aaaa
    aaaa
    aaaa
    bbbb

  4. #4
    Membre Expert
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    923
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Paysan à 3 francs six sous
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2018
    Messages : 923
    Billets dans le blog
    8
    Par défaut
    Bonjour. La bonne façon de faire est d'itérer sur une liste de valeur ou sur sur les valeurs d un dictionnaire... Ce choix dépendra de tes besoins

  5. #5
    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
    Salut,

    Citation Envoyé par sqlbeginner Voir le message
    j'aimera, avec une boucle for, accéder aux valeurs des a1, a2, a3.
    On peut itérer sur des objets qui sont "itérables" comme les séquences que sont listes et tuples.
    Du coup plutôt que fabriquer pleins de variables où on cable une indice dans le nom, on écrira:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a = "aaaa", "aaaa", "aaaa", "bbbb"
    et si on veut afficher avec des indices renumérotés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> for i, v in enumerate(a, 1):
    ...     print(i, v)
    ...
    1 aaaa
    2 aaaa
    3 aaaa
    4 bbbb
    Tout ça pour dire que si vous êtes sorti de la case tuto sans avoir le réflexe de penser collection et de créer des tas de variables, il est peut être prématuré de programmer autre chose que des exercices.

    note: normalement, dans tous les bons tutos on apprend que les noms des variables sont clef du dictionnaire globals(). Ce qui permet d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> a1 = "aaaa"
    >>> a2 = "aaaa"
    >>> a3 = "aaaa"
    >>> a3 = "bbbb"
    >>> for i in range(1, 5):
    ...     print(i, globals()[f'a{i}'])
    ...
    1 aaaa
    2 aaaa
    3 bbbb
    4 bbbb
    Et de réaliser qu'au pire, il sera plus judicieux de créer un dictionnaire spécifique (au pire, c'est un dictionnaire est une collection d'objets qui a d'autres intérêts que d'être séquence et qu'il n'est peut être pas utile d'utiliser ici).
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre averti
    Femme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2022
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Juin 2022
    Messages : 36
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    salut,


    pourquoi ?
    je sais pas, c'est ce qu'on me donne.
    qu'est ce que je peux leur proposer d'autres? de le mettre sous forme de liste?

  7. #7
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 323
    Par défaut
    bonjour
    Citation Envoyé par sqlbeginner Voir le message
    j'ai le code suivant
    Désolé de rajouter une couche, mais c'est pour ton bien et non t'enfoncer.

    Tu nous donnes une structure que nous ne devrions jamais trouver dans n'importe quel langage de programmation.
    Débuter avec cela, c'est partir avec une balle dans le pied ! Avant de coder, on se doit de réfléchir un minimum et, plus notre niveau est bas et plus nous devrions faire chauffer nos neurones avant tout code.

    Citation Envoyé par sqlbeginner Voir le message
    je sais pas, c'est ce qu'on me donne.
    Des noms ! mais qui est ce "on" qui te donne une chose qui ne devrait pas exister ?
    Citation Envoyé par sqlbeginner Voir le message
    de le mettre sous forme de liste?
    Tu as déjà eu des suggestions ! Il n'y a que toi qui puisses savoir quel est le type python adéquat. Cela dépend uniquement de ce que tu comptes faire après avec tes variables. Et si ce "on" ne t'a pas renseigné, alors tu as peut-être 36 solutions

  8. #8
    Membre éclairé Avatar de Tillo
    Homme Profil pro
    Webmaster
    Inscrit en
    Octobre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 494
    Par défaut
    Citation Envoyé par sqlbeginner Voir le message
    je sais pas, c'est ce qu'on me donne.
    qu'est ce que je peux leur proposer d'autres? de le mettre sous forme de liste?
    Je vais peut-être dire une bêtise, mais c'est peut-être le but de ton énoncé : te faire réfléchir, et t'amener à utiliser une méthode "propre" comme par exemple les listes.

  9. #9
    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 sqlbeginner Voir le message
    je sais pas, c'est ce qu'on me donne.
    qu'est ce que je peux leur proposer d'autres? de le mettre sous forme de liste?
    Qui vous donne çà?

    Le boulot du programmeur sera de reformuler un besoin en structures de données et algorithmes permis par le langage, la bibliothèque,...

    A priori, les utilisateurs ne codent pas: c'est pas eux qui décident du choix entre 4 variables, une liste ou un dictionnaire mais le programmeur (qui à priori saura argumenter le pourquoi de son choix).

    Et vous voyez bien que même le titre de la discussion vous vous accrochez: "accéder aux valeurs d'une variable avec une boucle for qui itere sur une partie du nom de ma variable"

    Il n'y a pas une "variable" mais 4. Une "partie du nom de ma variable", c'est une juste autre variable!

    Si vous voulez programmer (avec Python ou n'importe quoi d'autre), vous ne pouvez pas "tordre" ce que propose le langage à votre sauce mais (avoir appris à) reformuler votre problème pour utiliser les possibilités offertes par le langage.

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

Discussions similaires

  1. [Python 3.X] Dictionnaire python accéder aux valeurs d'une clé
    Par tom31 dans le forum Général Python
    Réponses: 3
    Dernier message: 26/07/2020, 21h16
  2. accéder aux valeurs d'une structure avec operateur []
    Par BioKore dans le forum Débuter
    Réponses: 16
    Dernier message: 10/09/2019, 20h39
  3. Accéder aux valeurs des éléments d'une matrice
    Par alvinleetya dans le forum OpenCV
    Réponses: 5
    Dernier message: 01/10/2012, 16h19
  4. Réponses: 3
    Dernier message: 17/03/2011, 13h51
  5. Réponses: 2
    Dernier message: 09/11/2007, 15h32

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