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 :

impossible d'accéder à une variable qui a été créée par un script et non manuellement


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 impossible d'accéder à une variable qui a été créée par un script et non manuellement
    Bonjour

    j'ai des variables qui s'appellent "liste_marie", "liste_john" etc...
    elles n'ont pas été créées à la main mais selon le script ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    noms=["marie", "john", "eric"]
    for i in noms:
        var="liste_"+i #je crée mes variables
        print (var)
        var=[]
        print (var)
        var.append("pomme")
        var.append("poire")
        print (var)
        #print (liste_marie)
    ce code marche
    mais si je décommente la derniere ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    noms=["marie", "john", "eric"]
    for i in noms:
        var="liste_"+i #je crée mes variables
        print (var)
        var=[]
        print (var)
        var.append("pomme")
        var.append("poire")
        print (var)
        print (liste_marie)
    il ne me reconnait pas "liste_marie"

    pourquoi?
    et comment faire pour qu'il la reconnaisse?

    merci

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 672
    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 672
    Points : 5 253
    Points
    5 253
    Par défaut
    Il ne reconnait pas liste_marie car tu n'a déclaré aucune variable portant ce nom.
    Pour qu'il la reconnaisse, il faut écrire une ligne qui affecte quelque chose à cette variable.

    Edit :
    Si l'objectif est de donner des pommes et des poires à marie, john et éric tu peux éventuellement passer par un dictionnaire :

    Il y a sans doute plus élégant mais puisque tu semble débutant, ceci sera sans doute plus facile à comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    noms = {
        "marie" : [],
        "john" : [],
        "eric" : []
    }
    for key, value in noms.items():
        value.append("pomme")
        value.append("poire")
     
    print(noms)

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Bonjour,

    dans ton code, tu assignes via une boucle à ta variable var une string contenant "liste_" suivi d'un des noms de ta liste en ligne 1.

    Plus loin, tu changes le type de var qui devient une liste vide, que tu alimentes après.

    Tu confonds entre une variable qui contient "quelque chose" et une variable qui se nomme "quelque chose".

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Une proposition en version objet, à voir en fonction de tes connaissances en matière d'objets.

    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
    class Personne:
        def __init__(self, nom: str) -> None:
            self.nom: str = nom
            self.fruits: list[str] = []
     
        def ajoute_fruit(self, fruit: str) -> None:
            self.fruits.append(fruit)
     
        def __str__(self) -> str:
            return self.nom
     
    noms: list[str] = ["marie", "john", "eric"]
    personnes: dict[str, Personne] = {}
     
    for nom in noms:
        personne: Personne = Personne(nom=nom)
        for fruit in ('pomme','poire'):
            personne.ajoute_fruit(fruit=fruit)
            personnes[personne] = personne
    for personne in personnes:
        print(personne, ":", personnes[personne].fruits)
    En résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    marie : ['pomme', 'poire']
    john : ['pomme', 'poire']
    eric : ['pomme', 'poire']

  5. #5
    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 sqlbeginner Voir le message
    impossible d'accéder à une variable qui a été réée par un script et non manuellement
    il ne me reconnait pas "liste_marie"
    Et voilà. Une variable c'est un outil permettant de mémoriser une valeur. Cet outil de programmation doit, comme tous les autres outils, être créé manuellement.
    Ca ne te viendrait pas à l'idée (enfin j'espère) d'écrire...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var="for"
    var i in range(10): print(i)
    ... donc c'est pareil avec les variables. Leur nom doit représenter quelque chose, pas être du nom de cette chose. De plus, même si cette instruction marie="marie" est parfaitement légale, cela ne viendrait à l'idée de personne de l'écrire. Parce qu'une variable "varie" (d'où le nom) et que si son contenu change, son nom n'a alors plus de rapport. Donc le nom d'une variable restera très "ensembliste" (ex nom="marie"). Et si tu veux regrouper plusieurs éléments dans une collection tu as à ta disposition des outils (tuple, list, set, dict) pour ça.
    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]

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    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 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Citation Envoyé par sqlbeginner Voir le message
    pourquoi?
    et comment faire pour qu'il la reconnaisse?
    Une variable, c'est un peu plus qu'une chaine de caractères. Avec quel tuto. vous vous êtes lancé dans l'apprentissage de Python? C'est là que vous devriez trouver des réponses à ce genre de questions avec les exercices qui vont avec pour assimiler tout ça.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/01/2015, 22h37
  2. Impossible d'accéder à une variable
    Par 3Dgirl dans le forum Débuter
    Réponses: 5
    Dernier message: 20/05/2009, 14h16
  3. Accéder à une variable qui est dans une string
    Par ploxien dans le forum Langage
    Réponses: 4
    Dernier message: 13/04/2007, 14h48
  4. Contenu d'une variable qui disparait :/
    Par Aleksis dans le forum C++
    Réponses: 10
    Dernier message: 02/06/2006, 15h50
  5. [PERL] accéder à une variable d'une autre classe
    Par LE NEINDRE dans le forum Langage
    Réponses: 8
    Dernier message: 11/01/2006, 17h06

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