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 :

UnboundLocalError pour une variable


Sujet :

Python

  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut UnboundLocalError pour une variable
    J'ai toujours le même problême, lorsque j'affecte la valeur de retour d'une fonction à une variable.

    voici mon code:

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    #calcule les carectéristiques d'un entier en fonction de ses autres caractéristiques
    def identifieEntier(entier):
     
    	testEntier = testEntier(entier)
    	if testEntier == True:
    		signe = signe(entier)
    		parite = parite(entier)	
    		if parite == True and entier != 2:
    			premier = False	#un nombre premier n'est jamais pair à l'exception de 2
    			carre = carre(entier)
    		else:
    			carre=False	#un nombre carre est toujours pair
    			premier=premier(entier)
    			if premier==True:
    				mersenne=mersenne(entier)
    			else: 
    				mersenne=False
    				parfait=parfait(entier)
    			if parfait==True:
    				triangulaire=True	#un nombre parfait est forcément tringulaire
    			else: 
    				triangulaire=triangulaire(entier)
     
    		narcissique=narcissique(entier)	 
    		kaprekar=kaprekar(entier)		
    	else: 
    		print "Entrez un entier!"
     
    def valider(event): #évènment associé à la touche enter sur la zone de texte 
    	entier = int(entree.get())
    	identifieEntier(entier)
    Après éxécution j'ai le message d'erreur suivant:
    UnboundLocalError: local variable 'testEntier' referenced before assignment

    Est ce que quelqu'un pourrait me dire clairement ce que ça veut dire?
    Je crois que je n'ai pas tout saisi au niveau des variables en python...
    On peut quand même affecter la valeur de retour d'une fonction dans une variable?

    merci

  2. #2
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Biensur que tu peux affecter le retour d'une fonction dans une variable ou objet... sinon je ne vois pas l'interet d'une fonction, il y aurait que des procédure.

    Deja la ligne testentier=testentier(entier) ca ne va pas.
    En plus tu fais ca pour chaque fonctions....

    en gros avec ta facon de programmer : tu essaie de faire une espece de concaténation...

    sauf que : testentier est une fonction et tu assigne a testentier la valeur qu'elle meme retourne.

    Essaie ton programme avec des noms différents comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IsAInteger=testentier(entier)

    Change tes nom de variable essaie d'etre un peu original sinon tu va jamais t'en sortir.

    La fonction testentier elle est ou ?

    Fais quelque chose plutot comme ca.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def MaFonction1(ARG1):
                   return ARG1
     
    maVariable1=Mafonction1(24)
     
    def MaFonction2(ARG2):
                   return ARG2
     
    maVariable2=Mafonction2(maVariable1)
    Une fonction retourne un objet d'un certain type. Il suffit de mettre le retour de cette fonction dans un meme type d'objet....

  3. #3
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    726
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 726
    Points : 266
    Points
    266
    Par défaut bool object is not callable
    J'ai modifié mon code comme suit

    varTestEntier = testEntier(entier) #la fonction testEntier(entier) retourne un booléen
    if varTestEntier == True:
    ....

    mais j'ai maintenant le message d'erreur suivant:

    TypeError: 'bool' object is not callable

    Pourquoi ne peut-on pas appeller un objet de type booléen?

    merci

  4. #4
    Membre éclairé
    Avatar de parp1
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    829
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Mai 2005
    Messages : 829
    Points : 872
    Points
    872
    Par défaut
    Tu peux nous poster ta fonction Testentier MERCI:

    J'ai essayer ca.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> def test(arg1):
    	if arg1>0: bool=True
    	else: bool=False
    	return bool
     
    >>> a=test(-21)
    >>> if a ==False:
    	print "a est négatif"
     
     
    a est négatif
    >>>
    Il doit te manquer un return OBJETBOOLEEN

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/12/2007, 11h52
  2. Obtenir le nombre de valeurs non manquantes pour une variable
    Par marie mouse dans le forum SAS Base
    Réponses: 5
    Dernier message: 14/12/2007, 17h33
  3. Masquer des items pour une variable d'un tableau croisé dynamique en VBA
    Par Pietro_L dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/10/2007, 16h35
  4. 2 valeurs possibles pour une variable : méthode Seek
    Par Corinne4775 dans le forum Access
    Réponses: 8
    Dernier message: 12/02/2007, 19h00
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h22

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