Élu Etudiant FabienDespascito Posted February 26, 2021 Élu Etudiant Posted February 26, 2021 Salut les pros de l'informatique (aka @DuTACKauTac ) Je me décide enfin de rattraper mon retard en Info Dans calculs récursifs lorsque je rentre ce code : Révélation from printer import * resultat = 1 def factorielle(depart): if depart == 0: return resultat *= depart factorielle(depart - 1) nombre = int(input()) factorielle(nombre) print(resultat) Ils me disent : UnboundLocalError: local variable 'resultat' referenced before assignment on line 6 Je comprends pas l'erreur. Je sais que c'est pas la correction du prof, mais j'aimerais savoir la signification de cette erreur que je retrouve souvent en plus Merci Quote
Solution Shrex Posted February 26, 2021 Solution Posted February 26, 2021 J'ai une idée mais je suis pas sûr En fait quand tu utilises une variable dans ta fonction (ici resultat), il faut qu'elle soit assigné dans la fonction et pas en dehors Genre "def factorielle(depart,resultat)" et quand t'appelles ta fonction tu mets : "factorielle(nombre,1)" (j'ai mis 1 vu que c'est ce que tu as mis au début) Par contre je pense pas que tu puisses print(resultat) donc faut que tu explication en dessous si tu veux réfléchir Révélation dans ta fonction à la fin il faut qu'elle renvoie resultat Donc faut que tu mettes à un certain endroit de ta fonction return resultat Puis quand tu appelles ta fonction, tu fais directement print(factorielle(nombre,1) Quote
Élu Etudiant FabienDespascito Posted February 26, 2021 Author Élu Etudiant Posted February 26, 2021 (edited) @ShrexOuais je pense que c'est ça Pendant que t'y es tu peux m'expliquer ce qu'est l'instruction return Je ne vois pas la différence entre return 1 ou return variable Edited February 26, 2021 by FabienDespascito Quote
Ancien du Bureau Sans-Visage Posted February 26, 2021 Ancien du Bureau Posted February 26, 2021 Hey :') il y a 7 minutes, FabienDespascito a dit : Je ne vois pas la différence entre return 1 ou return variable Return te permet de renvoyer le programme Imaginons que tu fais : Def addition(nombres): variable = nombre + nombre return variable Ou si tu fais Def adyssion(nnombr): jemlinfo = nnombr + 2 return 1 print(addition(2)) va t'imprimer 4 print(adyssion(2)) imprimera toujours 1 Tackompris ? FabienDespascito 1 Quote
Shrex Posted February 26, 2021 Posted February 26, 2021 (edited) En fait quand tu utilises une fonction faut bien qu'à la fin elle soit "égale" à quelque chose (qu'elle renvoie un quelque chose) : un string, un nombre, etc... Il faut obligatoirement, si tu veux renvoyer ce quelque chose pour le print par exemple, utiliser la fonction return J'étais en train de faire un exemple avec des fonctions telle que TonyTony(Chopper) mais le RM a répondu plus vite Edited February 26, 2021 by Shrex FabienDespascito 1 Quote
Ancien du Bureau Sans-Visage Posted February 26, 2021 Ancien du Bureau Posted February 26, 2021 (edited) il y a 4 minutes, Shrex a dit : TonyTony(Chopper) Oooooh Edited February 26, 2021 by DuTACKauTac Shrex 1 Quote
Élu Etudiant FabienDespascito Posted February 26, 2021 Author Élu Etudiant Posted February 26, 2021 @Shrex@DuTACKauTac Si je comprends bien return permet de définir le résultat d'une fonction (que l'on utilise comme une variable, genre print(fonction) ou for fonction in range) ? Donc si on met return sans rien après, on définit la fonction comme étant nulle ? il y a 4 minutes, Shrex a dit : TonyTony(Chopper) Magnifique Quote
Ancien du Bureau Sans-Visage Posted February 26, 2021 Ancien du Bureau Posted February 26, 2021 il y a 1 minute, FabienDespascito a dit : on définit la fonction comme étant nulle ? Exact, return tout court donnera Null Par contre le "for fonction in range" non :') À la limite tu pourrais faire "for loop in range(fonction)" FabienDespascito 1 Quote
Élu Etudiant FabienDespascito Posted February 26, 2021 Author Élu Etudiant Posted February 26, 2021 il y a 1 minute, DuTACKauTac a dit : Par contre le "for fonction in range" non :') Ouais j'ai compris en me relisant Merci @Shrex @DuTACKauTac Shrex and Sans-Visage 1 1 Quote
Ancien du Bureau Sans-Visage Posted February 26, 2021 Ancien du Bureau Posted February 26, 2021 Avec plaisir Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.