kwark Posted February 23, 2021 Posted February 23, 2021 salut a tous  c'est quoi cette erreur ???  http://www.noelshack.com/2021-08-2-1614120190-informatique.png    Quote
Ancien Responsable MatiÚre Herlock Posted February 23, 2021 Ancien Responsable MatiÚre Posted February 23, 2021 (edited) @PassOuPACESJe crois que quand tu as défini ta fonction les accolades ou plutÎt parentheses tu ne les as pas collées à ta fonction. Edited February 23, 2021 by Herlock Quote
Ancien du Bureau Sans-Visage Posted February 24, 2021 Ancien du Bureau Posted February 24, 2021 Salut !  Il y a 6 heures, Herlock a dit : @PassOuPACESJe crois que quand tu as dĂ©fini ta fonction les accolades ou plutĂŽt parentheses tu ne les as pas collĂ©es Ă ta fonction. Alors je suis surpris aussi mais ça a l'air de marcher :'))) Ici ce qui pose problĂšme, ce que dit le message d'erreur, c'est que tu fais une addition entre un "str" et un "none" Je te mets la "solution" en cachĂ© au cas oĂč tu ai envie de chercher seul Ă partir de ce que je viens de dire ^^  RĂ©vĂ©lation En fait, ton programme gĂ©nĂšre un "None" puisque tu fais "Return" tout court, en gros il est considĂ©rĂ© comme "vide", ce n'est ni un int ni un str Donc, pour rĂ©gler ça, vu que tu dĂ©cides veux faire des additions entre ta fonction et une variable (int), il va falloir que ta fonction soit un int Pour cela, il suffit de retourner un int, donc => Return 0  Herlock 1 Quote
kwark Posted February 24, 2021 Author Posted February 24, 2021 (edited)  salut @DuTACKauTac  ah oui j'avais pas pensé à ca c'est vrai  mais quand je change mon programme il marche toujours pas, ça m'affiche "null"  http://www.noelshack.com/2021-08-3-1614166624-null.png Edited February 24, 2021 by PassOuPACES Quote
Ancien du Bureau Sans-Visage Posted February 24, 2021 Ancien du Bureau Posted February 24, 2021 il y a 8 minutes, PassOuPACES a dit : ça m'affiche "null"  ça je pense que c'est à cause du fait que tu as défini "if nb == -1" Du coup quand ton nb arrive à -1, plutot que de juste marquer 0, il va marque "" soit Null Tu comprends ? Quote
kwark Posted February 24, 2021 Author Posted February 24, 2021 @DuTACKauTac pourtant il m'affiche la mĂȘme chose si je met "if nb < 0"  Quote
Ancien du Bureau Sans-Visage Posted February 24, 2021 Ancien du Bureau Posted February 24, 2021 il y a 3 minutes, PassOuPACES a dit : @DuTACKauTac pourtant il m'affiche la mĂȘme chose si je met "if nb < 0"  Parce que c'est exactement la mĂȘme chose Il faudrait que tu fasses par exemple:  if nb == 0 :   return "0"  Et il me semble que ça devrait marcher  Quote
kwark Posted February 24, 2021 Author Posted February 24, 2021 @DuTACKauTac ça marche toujours pas, ça m'affiche la mĂȘme chose Quote
Ancien du Bureau Sans-Visage Posted February 24, 2021 Ancien du Bureau Posted February 24, 2021 Ă lâinstant, PassOuPACES a dit : @DuTACKauTac ça marche toujours pas, ça m'affiche la mĂȘme chose  Ah ouaaais ? Je peux voir un screen stp ?  Quote
kwark Posted February 24, 2021 Author Posted February 24, 2021 ouiii http://www.noelshack.com/2021-08-3-1614168501-null.png Quote
Ancien du Bureau Solution Sans-Visage Posted February 24, 2021 Ancien du Bureau Solution Posted February 24, 2021 il y a 6 minutes, PassOuPACES a dit : ouiii http://www.noelshack.com/2021-08-3-1614168501-null.png  Okay, j'ai fait un test en modifiant mon programme, je crois que le problĂšme c'est que tu fais: print(affichercolonne(nombrelu)) Alors que le print() est pas nĂ©cessaire, puisqu'il est compris dans le programme (ça me fait la mĂȘme chose que toi, ça me met "null")  Du coup je crois que je t'ai dit une bĂȘtise avant, essaies en modifiant juste ça, et si je me trompe par ton programme s'arrĂȘtera Ă "1 0" et il te manquera le "0", donc Ă ce moment lĂ il faudra remodifier la condition "if nb ==" dĂ©solĂ© :'))) kwark 1 Quote
kwark Posted February 24, 2021 Author Posted February 24, 2021 @DuTACKauTac Merciiii ça a marché  j'imagine que c'est parce que pour la derniÚre ligne on fait print alors qu'on a rien à afficher   Quote
Ancien du Bureau Sans-Visage Posted February 24, 2021 Ancien du Bureau Posted February 24, 2021 Je pense que du coup quand on arrive au print() tout en bas y a tout le programme qui se dĂ©roule et donc qui s'imprime, et une fois que le programme a fini de se dĂ©rouler, le print() entre en jeu... sauf que du coup la derniĂšre valeur retournĂ©e ça devrait ĂȘtre "0" donc je vois pas pourquoi Null   il y a 22 minutes, PassOuPACES a dit : http://www.noelshack.com/2021-08-3-1614168501-null.png @MrPouple @clemens vous pourriez dire ce que vous en penser svp ? MrPouple 1 Quote
Ancien du Bureau MrPouple Posted February 24, 2021 Ancien du Bureau Posted February 24, 2021 Salut !  Le problĂšme vient du fait qu'Ă la fin ta fonction affichercolonne ne renvoie rien (et en programmation, rien, c'est "null" ou "None"). Alors la solution c'est : def affichercolonne(nb): if nb == 0: return "0" print(afficherligne(nb)) affichercolonne(nb-1) return "0" def afficherligne(nb): if nb == 0 : return "0" x = afficherligne(nb-1) return str(nb) + " " + x nombreLu = int(input()) print(affichercolonne(nombreLu)) Reprenons ensemble : Mettons que nombreLu = 1 pour faire simple. 1 - On appelle affichercolonne(1) 2 - La condition est pas remplie on appelle afficherligne(1) On est dans afficher ligne et nb est pas Ă©gal Ă 0 On appelle afficherligne(0) Ca nous envoie 0 x = 0 donc On retourne "1" + "0" On imprime donc ce que afficherligne(1) nous a renvoyĂ© soit "1 0" On lance affichercolonne(0) Ca retourne 0 ta ligne affichercolonne(0) retourne donc 0 mais pas ta fonction de base Tu dois terminer enfin ta fonction en retournant 0 Ce qu'il faut bien se rendre compte ici, c'est que ton if nb == 0 dans affichercolonne est appelĂ© Ă l'intĂ©rieur de cette mĂȘme fonction, donc quand tu retournes 0 une fois que le compte Ă rebours est terminĂ©, tu le retournes dans la fonction elle mĂȘme et pas vers l'extĂ©rieur de la fonction. Puisque si tu y rĂ©flĂ©chis bien, une fois que ton programme a dĂ©passĂ© la ligne affichercolonne(0), il est terminĂ©. Tu peux donc trĂšs bien mettre ton return 0 juste Ă la fin. Peut-ĂȘtre que tu comprendras mieux en voyant que ce programme lĂ fait exactement ce qui est demandĂ© par l'exo :  def affichercolonne(nb): if nb == 0: return "Le TAT c\' est la vie" print(afficherligne(nb)) affichercolonne(nb-1) return "0" def afficherligne(nb): if nb == 0 : return "0" x = afficherligne(nb-1) return str(nb) + " " + x nombreLu = int(input()) print(affichercolonne(nombreLu))  VoilĂ , n'hĂ©site pas Ă poser des questions si tu ne comprends toujours pas, la rĂ©cursion c'est vraiment un truc de tarĂ© ça fait vriller la tĂȘte hyper vite  Mais ça peut se rĂ©vĂ©ler trĂšs utile pour optimiser des algorithmes ou pour (qui l'eĂ»t cru) simplifier certains programmes.  Au plaisir   Sans-Visage 1 Quote
Ancien du Bureau Sans-Visage Posted February 24, 2021 Ancien du Bureau Posted February 24, 2021 Oooooh yes merci beaucoup !! <33 J'ai du relire à peu prÚs 8 fois mais maintenant mon petit cerveau a compris mdrrr MrPouple 1 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.