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 :

Problème d'affichage de variable depuis une fonction (débutant) [Python 3.X]


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Points : 20
    Points
    20
    Par défaut Problème d'affichage de variable depuis une fonction (débutant)
    Bonjour tout le monde !

    Alors je présente rapidement mon problème avec des images, lorsque je veux faire ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    nb_1 = 1
    nb_2 = 4
    text = "Video " + str(nb_1) + "/" + str(nb_2) + " was downloaded."
     
    print(text)
    Ça fonctionne:
    Nom : Capture.PNG
Affichages : 120
Taille : 3,2 Ko

    Mais lorsque que je le fais comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    nb_1 = 0
    nb_2 = 0
    text = "Video " + str(nb_1) + "/" + str(nb_2) + " was downloaded."
     
    def a():
    	global nb_1, nb_2
    	nb_1 += 1
    	nb_2 += 4
    	print(text)
     
    a()
    Problème:
    Nom : Capture0.PNG
Affichages : 109
Taille : 3,2 Ko

    J'ai aussi essayé sous la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def a(nb_1, nb_2):
    	nb_1 += 1
    	nb_2 += 4
    	print(text)
    Même si ça m'aurait été problématique ça donne le même résultat et je ne comprends pas du tout alors si quelqu'un pourrait m'indiquer ce que j'ai du louper je serais vraiment reconnaissant ! Merci d'avance et bonne journée ^^

  2. #2
    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,

    C'est normal: la variable text a été construite avec les valeurs courantes de nb_1 et nb_2, et ne changera plus après, même après l'appel de a().

    Si on veut que text soit reconstruite par l'appel de a():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    nb_1 = 0
    nb_2 = 0
    text = "Video " + str(nb_1) + "/" + str(nb_2) + " was downloaded."
     
    def a():
        global nb_1, nb_2, text
        nb_1 += 1
        nb_2 += 4
        text = "Video " + str(nb_1) + "/" + str(nb_2) + " was downloaded."
        print(text)
     
    a()
    # => Video 1/4 was downloaded.
    Chaque nouvel appel de a() incrémente nb_1 (+1) et nb_2 (+4) et reconstruit text (3 variables globales):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a()
    # => Video 2/8 was downloaded.
    a()
    # => Video 3/12 was downloaded.
    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

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Lorsque tu fais text = "Video " + str(nb_1) + "/" + str(nb_2) + " was downloaded." ta chaîne de texte est créée et il n'y a aucune raison pour qu'elle soit modifiée après.

    Par contre avec un peu de formatage on peut le faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    >>> nb_1 = 0
    >>> nb_2 = 0
    >>> text = "Video %s/%s was downloaded"
    >>> def a():
    ...     global nb_1, nb_2
    ...     nb_1 += 1
    ...     nb_2 += 4
    ...     print(text %(nb_1, nb_2))
    ... 
    >>> a()
    Video 1/4 was downloaded
    >>>

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    D'accord j'ai compris mon erreur et c'est vrai que c'est très logique au final, merci beaucoup à vous je mets résolu !

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

Discussions similaires

  1. [bar] Problème d'affichage à géométrie variable
    Par herbert2008 dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/06/2009, 12h00
  2. [MySQL] Problème d'affichage de variables de deux tables
    Par nicobillou dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 08/03/2007, 17h52
  3. problème d'affichage de variables
    Par Jasmine80 dans le forum Langage
    Réponses: 10
    Dernier message: 29/01/2007, 14h17
  4. problème d'affichage de variable
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 00h20
  5. [VBA-E] Problème de portée de variable [débutant]
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/03/2006, 18h28

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