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 :

J'ai besoin d'une variable compteur j'ai l'erreur "utilisation avant assignement" :


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 313
    Par défaut J'ai besoin d'une variable compteur j'ai l'erreur "utilisation avant assignement" :
    Salut !

    comment faire pour éviter le message d'erreur ?

    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
    num = 0
     
    liste = [[0,-1],3,[-1,-1],4]
     
    def affiche() :
        taille = len(liste)
        if num < taille :
            # faire ceci
            num += 1
     
        else :
            #faire cela
            num = 0
     
    affiche()
    l'erreur est :

    if num < taille :
    UnboundLocalError: local variable 'num' referenced before assignment


    Je veux éviter de donner num en paramètre à la fonction car cette fonction est appelée dans une boucle de jeu, et donc ça la remettrait à zéro à chaque frame, c'est pas bon.

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 389
    Billets dans le blog
    48
    Par défaut
    Salut,

    Tu fais num += 1 à l'intérieur d'une fonction. Donc l'interpréteur cherche une valeur locale (dans la fonction), mais comme cette variable n'a jamais été définie localement, l'interpréteur couine...

    Le plus simple est de la déclarer global.

    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
    num = 0
     
    liste = [[0,-1],3,[-1,-1],4]
     
    def affiche() :
        global num
        taille = len(liste)
        if num < taille :
            # faire ceci
            num += 1
     
        else :
            #faire cela
            num = 0
     
    affiche()

  3. #3
    Membre confirmé
    Homme Profil pro
    sans
    Inscrit en
    Mai 2023
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mai 2023
    Messages : 313
    Par défaut
    Merci !

    mais dans le code que j'ai affiché, num n'est pas déclarée globale déjà ?

    Lol, je viens de mieux voir, ok il faut le mot global quoi !

    Merci je vais faire ça, super !

    Pour moi, une variable déclarée à l'intérieur d'une fonction était locale et la même déclarée avant la fonction était globale, mais il semble qu'avec python il faille préciser :/

    c'est BON !!!! Résolu !

    Je mets en résolu, merci !!!

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 954
    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 : 4 954
    Par défaut
    Bonjour,

    Tout cela est bien documenté : https://docs.python.org/3/faq/progra...le-has-a-value

    Le mot-clé global fonctionne, mais il est généralement déconseillé en architecture logicielle (et particulièrement dans les jeux vidéo). Si votre jeu s'agrandit et que vous souhaitez afficher deux éléments différents à des vitesses différentes, une seule variable globale num créera des conflits.

    Vous arriverez sans doute doucement vers la classe et comprendrez son intérêt...
    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)

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

Discussions similaires

  1. [12c] Cursor ayant besoin d'une variable calculée
    Par CinePhil dans le forum PL/SQL
    Réponses: 2
    Dernier message: 07/09/2021, 17h26
  2. Réponses: 6
    Dernier message: 18/07/2018, 08h54
  3. Création d'une variable compteur
    Par malia.mit dans le forum SAS Base
    Réponses: 1
    Dernier message: 17/07/2015, 14h21
  4. [XL-2007] Mise en place d'une variable compteur
    Par pascal4782 dans le forum Conception
    Réponses: 1
    Dernier message: 07/05/2012, 17h43
  5. Incrémentation d'une variable compteur avec retain
    Par AstridG dans le forum SAS Base
    Réponses: 6
    Dernier message: 09/12/2010, 17h17

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