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
    Nouveau membre du Club
    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
    Points : 35
    Points
    35
    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 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    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 éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    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 462
    Points : 9 249
    Points
    9 249
    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
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Membre expérimenté
    Avatar de MPython Alaplancha
    Homme Profil pro
    Paysan à 3 francs six sous
    Inscrit en
    Juin 2018
    Messages
    870
    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 : 870
    Points : 1 522
    Points
    1 522
    Billets dans le blog
    4
    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
    #Rien de nouveau sous le soleil, tout est vanité comme courir après le vent!
    Developpement pour Android avec Python3/Kivy/Buildozer

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    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
    Nouveau membre du Club
    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
    Points : 35
    Points
    35
    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 104
    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 104
    Points : 4 454
    Points
    4 454
    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
    $moi= ( !== ) ? : ;

  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 : 44
    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
    Points : 683
    Points
    683
    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.
    J'aimerais mieux être le premier dans ce village que le second à Rome. (Caius Julius Caesar)

    J'ai aussi un site sur la Grande Guerre: Histoires de Poilus

  9. #9
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    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