En fait j'ai un petit problème... Je suis actuellement sur un projet de compteur de points pour le tennis, sauf que quand j'execute le code suivant, je me retrouve avec un UnboundLocalError: local variable 'point1' referenced before assignment :
C'est normal, le problème vient du fait que tu essaies de redéfinir une variable globale depuis ta fonction.
Normalement il me semble que tkinter fournisse un type IntVar pour ce genre de choses.
point1 est une variable globale et rien n'empêche d'utiliser une variable de même nom dans la fonction: il suffit de la créer avant d'y accéder.
Par exemple si j'écris:
def f():
a = 1
print (a)
J'accède à la variable après l'avoir créée, elle est locale.
def f():
print (a)
a = 1
Si je peux accéder à la variable, c'est qu'elle est globale... Et la créer ensuite suppose fabriquer une variable locale du même nom, ce qui est interdit sans avoir ajouté global a.
En fait j'ai un petit problème... Je suis actuellement sur un projet de compteur de points pour le tennis, sauf que quand j'execute le code suivant, je me retrouve avec un UnboundLocalError: local variable 'point1' referenced before assignment :
Ton erreur vient de la ligne 45 mais potentiellement de toutes les lignes dans le code de ta fonction joueur1 où tu affectes une variable définie à l'extérieur, et il y en a un paquet . C'est une erreur très courante.
Tu pourrais y remédier en les déclarant en global dans le corps de ta fonction (ligne 35) mais ce serait une très mauvaise solution tout simplement parce que ta fonction est mal construite, elle est sans argument et sans return et c'est avec cela qu'une fonction doit le plus souvent communiquer avec son environnement (et pas au travers de variables globales).
Je ne suis pas sûr que tu connaisses suffisamment Python pour te lancer dans ce genre de programme, rien que quand je vois que tu écris point1 = int(0), après si c'est un exercice qu'on t'a imposé, bien sûr tu n'y peux rien.
Donc mon conseil : apprends un minimum Python et construis des fonctions qui aient des paramètres appropriés et qui aient des return ou qui modifient les arguments qu'elle reçoit.
- Edité par PascalOrtiz 29 novembre 2020 à 11:56:54
En fait, je ne l'avais pas mis avant, mais j'essayais juste de remédier à ça, avant le forum.
UnboundLocalError
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
Découverte Python Doc Tkinter Les chaînes de caractères