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 :

incrementation d'une variable


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Technicien Electroniquqe
    Inscrit en
    Septembre 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Electroniquqe

    Informations forums :
    Inscription : Septembre 2020
    Messages : 16
    Par défaut incrementation d'une variable
    Bonjour,

    Le question est vraiment toute bête ...
    Celle ci fonctionne très bien dans le standard en Faisant un i = i + 1.

    Seulement dans mon cas, l'incrémentation se fait en cliquant sur un bouton fait via Tkinter.
    Application faite sur un RaspBerry Pi 3+.
    Lorsque le bouton + est activé cela vas dans une définition, qui est censé faire l'incrémentation.
    Dons mon cas : Race = Race + 1.

    Et cela me sort ce message :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Exception in Tkinter callbalck
    Traceback (most recent call last):
        File "usr/lib/python2.7/lib-tk/Tkinter.py, line 1550, in __call__
              return self.func(*args
        File "Afficheur_Race-V0.py", line 62, in NumP
              Race = Race + 1
    UnboundlocalError: local variable 'Race' referenced before assignment
    Mon manque de connaissance en Python, ne me permet pas de comprendre se qui bloque.
    J'en vient donc à votre expérience pour une solution.

    Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 679
    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 679
    Par défaut
    Salut,

    Citation Envoyé par Yoko_14D Voir le message
    Mon manque de connaissance en Python, ne me permet pas de comprendre se qui bloque.
    J'en vient donc à votre expérience pour une solution.
    Permettre à une fonction de modifier une variable globale est dans tous les bons tutos.

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

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Electroniquqe
    Inscrit en
    Septembre 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Electroniquqe

    Informations forums :
    Inscription : Septembre 2020
    Messages : 16
    Par défaut
    J'aimerais bien le trouvé ce bon tutos.
    Car je pense qu'il y a pas mal d'autres informations qui pourrait me servir.
    Dans ma recherche, sur l'incrémentation.
    Cela reste toujours sur une standard.

    Dans mon cas, je suis dans un def xxx():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def NumP():
         Race = Race + 1 
         l = Label(Aff_Race, text = Race, Padx=20, Pady=15)
         l.grid(row=0, calumn=1)
    Pas de soucis pour l'affichage de la Race dans les autres def.
    Mais l'incrémentation elle ne veut pas ...

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 679
    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 679
    Par défaut
    Salut,

    Citation Envoyé par Yoko_14D Voir le message
    J'aimerais bien le trouvé ce bon tutos.
    Car je pense qu'il y a pas mal d'autres informations qui pourrait me servir.
    C'est pas compliqué: ils ont une table des matières et un chapitre qui parle de fonction (où il est difficile de passer à côté de la portée des variables. Dans le Swinnen, c'est ici.

    Et oui je pense aussi que çà serait bien que vous trouviez un bon tuto. et y passiez du temps... avant d'abandonner à force de patauger.

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

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Electroniquqe
    Inscrit en
    Septembre 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Electroniquqe

    Informations forums :
    Inscription : Septembre 2020
    Messages : 16
    Par défaut
    Merci pour ton retour, et le lien que je viens d'explorer;

    Seulement voila, cela ne vas pas mieux.
    Comme je suis dans une def XXX(),
    dans les () je mes ma varaible Race.
    Ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def NumP(Race):
         Race = Race + 1 
         l = Label(Aff_Race, text = Race, Padx=20, Pady=15)
         l.grid(row=0, calumn=1)
    Sauf que cela n'est pas mieux, cela me donne toujours le même message d'erreur.
    A savoir, que cette variable Race est fixé par un def, qui indique la Race ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def Num0():
         Race = 0
         l = Label(Aff_Race, text = Race, Padx=20, Pady=15)
         l.grid(row=0, calumn=1)
    La variable Race est donc fixé dans cette def, mais ne semble pas redescendre.

    Mon langage de base étant le C, je n'arrive pas à suivre la logique de la variable ...

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 679
    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 679
    Par défaut
    Salut,

    Citation Envoyé par Yoko_14D Voir le message
    Mon langage de base étant le C, je n'arrive pas à suivre la logique de la variable ...
    Je n'ai pas la prétention de vous l'expliquer mieux que la page de tuto. que je vous ai indiqué.
    A vous de la relire et de passer un peu de temps sur les explications autour du mot clef "global".

    Essayer d'oublier un peu le langage C: Python est un autre langage où si des constructions sont familière au programmeur C/C++, c'est jusqu'à ce qu'il se rende compte que ces similitudes le foutent dedans (on dit "faux amis").

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

  7. #7
    Membre averti
    Homme Profil pro
    Technicien Electroniquqe
    Inscrit en
    Septembre 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Electroniquqe

    Informations forums :
    Inscription : Septembre 2020
    Messages : 16
    Par défaut
    Ok, effectivemnent le C n'a rien à voir ...
    puisque j'avais déclaré la variable Race en global dés le début du programme.
    Or cela doit se faire à chaque intervention sur cette variable.
    Merci pour les infos.
    Je vais pouvoir passer à une autre étape du programme.

  8. #8
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 801
    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 801
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Yoko_14D Voir le message
    Or cela doit se faire à chaque intervention sur cette variable.
    Pas tout à fait.

    Une variable déclarée en dehors de toute fonction est alors immédiatement accessible de partout, y compris dans les fonctions
    Ex
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def toto(): print(race)
    race=10
    toto()
    Il suffit juste de passer par l'instruction qui crée la variable avant l'appel qui l'utilise. Mais la variable n'est pas modifiable, et si on en crée une de même nom alors elle prend le pas (là c'est comme en C).

    Si on veut pouvoir modifier la variable, il faut spécifier global non pas à chaque intervention mais une fois dans la fonction qui va la modifier
    Ex
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def toto():
        global race
        race+=1
        print(race)
        race*=2
        print(race)
     
    race=10
    toto()
    On retrouve le même mécanisme en C avec le mot clef extern qui permet d'indiquer dans une fonction qu'on va utiliser une variable globale. Sauf qu'en C ce n'est malheureusement pas obligatoire de le mettre.

    Citation Envoyé par wiztricks Voir le message
    Python est un autre langage où si des constructions sont familière au programmeur C/C++, c'est jusqu'à ce qu'il se rende compte que ces similitudes le foutent dedans (on dit "faux amis").
    Moi je trouve pas. Je trouve plutôt que ces ressemblances permettent de mieux comprendre la logique de Python (par exemple pourquoi une copie de tableau ne copie que la référence)...
    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]

  9. #9
    Membre averti
    Homme Profil pro
    Technicien Electroniquqe
    Inscrit en
    Septembre 2020
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Electroniquqe

    Informations forums :
    Inscription : Septembre 2020
    Messages : 16
    Par défaut
    Justement, j'ai plusieur def, un pour chaque numéro du clavier.
    Donc à chaque fois je modifie la variable Race, et par défaut faire un rappel en global.

Discussions similaires

  1. Simple incrementation d'une variable
    Par Mentos4k dans le forum Débuter avec Java
    Réponses: 8
    Dernier message: 26/01/2019, 00h41
  2. incrementer nombre à une variable
    Par stefanelle dans le forum Langage
    Réponses: 6
    Dernier message: 28/08/2009, 15h44
  3. dernier auto-increment vers une variable
    Par H-bil dans le forum C#
    Réponses: 22
    Dernier message: 06/06/2008, 08h09
  4. Incrémentation d'une variable
    Par tarzanjane dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 16h04
  5. [débutant]Problemem d'incrementation d'une variable
    Par sakuragikan dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/08/2005, 08h16

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