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 :

Débutant, valeur d'une variable depuis une autre


Sujet :

Python

  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Débutant, valeur d'une variable depuis une autre
    Bonjour, à tous!

    Je sollicite votre aide car je débute en python, et je bloque sur un point. Plutôt qu'un long discours qui sera aussi peu clair que mon titre je vous présente en code le principe qui me coince :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    yp1 = 15
    yp2 = 20
     
    for i in range(1,3):
        yp="yp"+str(i)
        print yp
    Quand je lance ce code il m'affiche "yp1" puis "yp2", or je voudrais qu'il m'affiche "15" puis "20". Je suppose qu'il faut transformer le "string" ypi en la valeur de ypi mais je ne sais pas comment faire...
    Dans les FAQ j'ai vu "Comment déclarer une variable à partir d'une chaine de caractères ?" mais je n'ai pas compris...

    J'espère que vous pourrez m'aider. Merci d'avance.

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    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 817
    Points : 7 110
    Points
    7 110
    Par défaut
    Alors avant toute chose utilise les balises permettant d'indiquer ton code

    ensuite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    yp1=15
    yp2=20
     
    print yp1 # affiche 15
    print yp2 # affiche 20
    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)

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Utilise: print eval(yp)

    La fonction eval() calcule l'expression passée sous forme de chaine de caractères. Comme yp est une variable, elle est remplacée par sa valeur qui est une chaine, et celle-ci est calculée.

    Autre exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    x = "2*3"
    print eval(x)
    6
    print eval("2*3")
    6
    Tyrtamos
    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
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    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 817
    Points : 7 110
    Points
    7 110
    Par défaut
    Voila seulement que je comprend ce que tu veux faire

    La solution est celle de Tyrtamos

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    yp1=15
    yp2=20
    for i in range(1, 3):
        yp="yp"+str(i)
        print eval(yp)
    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)

  5. #5
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Woah merci pour la rapidité! J'ai édité mon premier post pour rajouter la balise de code.

    C'est exactement ce que je voulais, merci Tyrtamos et fred1599.

    J'ai une question subsidiare : si je rajoute une deuxième variable dans ma chaine comme ça (avec la balise s'il vous plaît )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    yp1=15
    yp2=20
    xp1=40
    xp2=50
    for i in range(1, 3):
        yp="yp"+str(i)
        xp="xp"+str(i)
        print eval(yp)
        print eval(xp)
    j'ai le message d'erreur "invalid syntax" qui renvoie sur xp... On ne peut pas mettre plusieurs variables à définir dans une boucle for?

  6. #6
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par fabrice_84 Voir le message
    j'ai le message d'erreur "invalid syntax" qui renvoie sur xp... On ne peut pas mettre plusieurs variables à définir dans une boucle for?
    Chez moi, ton code fonctionne, et affiche:

    15
    40
    20
    50

    ???

    Tyrtamos
    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

  7. #7
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Alors là je pige pas... J'ai refais un copier coller de mon code depuis IE et là ça marche, alors que quand je tappe la même chose dans l'éditeur ça bug!

    ça peut venir du fait que j'utilise notepad++?

  8. #8
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    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 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par fabrice_84 Voir le message
    ça peut venir du fait que j'utilise notepad++?
    Je ne sais pas: je ne le connais pas.

    Essaye d'utiliser idle (livré avec Python).

    Tyrtamos
    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

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Points : 131
    Points
    131
    Par défaut
    Ca sent l'erreur de tabulation a plein nez ton affaire

    Remplace les tabulations par 4 espaces dans ton editeur et tu ne devrai plus avoir de probleme

    Sous notepad ++:
    (Paramétrage -> reference -> Onglet Divers, Paramétrage de tab cohe "Remplacer par un espace")

  10. #10
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Oui je pense que ça doit venir d'une mauvaise interprétation des espaces...

    En tout cas merci pour votre aide et votre efficacité, tout fonctionne maintenant!

    A bientôt.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Points : 131
    Points
    131
    Par défaut
    tout fonctionne maintenant!
    Alors on coche "Résolu"...

  12. #12
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Voilà qui est fait!

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

Discussions similaires

  1. [Débutant] Affecter une variable d'une classe C# à une variable Javascript
    Par SultanGeek dans le forum C#
    Réponses: 0
    Dernier message: 20/06/2015, 20h42
  2. Réponses: 6
    Dernier message: 16/06/2011, 12h45
  3. Modifier une variable d'une classe depuis une autre classe
    Par Kezado dans le forum Général Java
    Réponses: 8
    Dernier message: 23/09/2010, 14h52
  4. transmission des valeurs d'une variable d'une fonction a une autre
    Par Invité dans le forum GTK+ avec C & C++
    Réponses: 7
    Dernier message: 22/07/2009, 23h05
  5. Réponses: 0
    Dernier message: 21/01/2009, 13h52

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