Clemmellian Posté(e) le 29 janvier 2021 Signaler Posté(e) le 29 janvier 2021 Bonjour, Je dois rectifier un programme pyhton: Voici l'ennoncé: Mon programme: listeA=[1,-2] listen=[2,-3] if listen==[0,0]: print("aucune équation de droite possible") else: print("a coefficient de x :", listen[0]) print("b coefficient de y :", listen[1]) c= -(listen[0]*listeA[0]+listen[1]*listeA[1]) print("c = ",c) Voici l'aide: Pour ce programme, il faudrait un seul print avec les différents paramètres afin d'afficher réellement une équation de droite. Mais je ne sais pas comment faire Citer
E-Bahut julesx Posté(e) le 29 janvier 2021 E-Bahut Signaler Posté(e) le 29 janvier 2021 Bonjour, Dans ton fil précédent à ce sujet, des solutions avaient été envisagées. Regarde-les et vois si tu peux compléter ce qui figure dans l'aide. Citer
Clemmellian Posté(e) le 29 janvier 2021 Auteur Signaler Posté(e) le 29 janvier 2021 Je ne comprends pas listeA=[1,-2] listen=[2,-3] if listen==[0,0]: print("aucune équation de droite possible") else: c= -(listen[0]*listeA[0]+listen[1]*listeA[1]) return("une equation cartésienne est:a,"*x + ",b,"*y + ",c," = "0") Citer
E-Bahut julesx Posté(e) le 29 janvier 2021 E-Bahut Signaler Posté(e) le 29 janvier 2021 Vu l'aide, on te demande de créer une fonction. Ce que tu as écrit ne convient absolument pas, en particulier, return doit accompagner un def quelque chose. Pourquoi ne pars tu pas de ce qui est écrit dans l'aide ? Citer
E-Bahut PAVE Posté(e) le 29 janvier 2021 E-Bahut Signaler Posté(e) le 29 janvier 2021 Le programme auquel tu étais parvenue était opérationnel et répondait à la demande de l'énoncé. J'espère que tu avais compris, ce que nous avions établi... ensemble. Ton prof veut que tu modifies ce script et que tu le transformes en une "fonction" Python. Le cœur de ton script va rester le même mais le contexte (la présentation) va évoluer. Le recours à une fonction ne figure pas dans l'énoncé mais dans l'aide, on VOIT qu'une fonction doit être utilisée : def equat_cart(A,u): # cette ligne crée (def) une fonction notée equat_cart() qui requiert (nécessite) 2 arguments (2 données). Les 2 arguments notés ici A et u sont bien sûr respectivement la liste des coordonnées du point A et la liste des coordonnées du vecteur u. Il te faut donc "adapter" les notations : ce que tu avais noté : listeA sera ici noté tout simplement A donc A=[1,-2] et listen sera noté u avec u=[2,-3] NB : les valeurs numériques affectées à A et u peuvent bien sûr être modifiées. Si on utilise ces nouvelles notations et en supprimant les affichages (print) non indispensables, ton précédent programme, il devient : A=[1,-2] u=[2,-3] if u==[0,0]: print("la droite n'existe pas") else: print("a coefficient de x :", listen[0]) supprimé print("b coefficient de y :", listen[1]) supprimé c= -(u[0]*A[0]+u[1]*A[1]) print("c = ",c)Ton programme avec les nouvelles notations : C'est ce programme qu'il va te falloir mettre dans la fonction demandée et adapter... en conséquence. Tu as du déjà voir en cours des exemples de fonctions.... Essaye de faire... je vais aller regarder le journal télévisé puis manger 😷 !!!! Citer
E-Bahut julesx Posté(e) le 29 janvier 2021 E-Bahut Signaler Posté(e) le 29 janvier 2021 N.B. : Pour moi, les valeurs de A et u ne doivent pas être explicitées mais utilisées dans l'appel à la fonction def equat_cart(A,u) sous la forme equat_cart([1,-2],[2,-3]) par exemple avec un print si le résultat ne s'affiche pas dans la console. Pour info, je me suis amusé à écrire un formatage pour l'écriture du résultat, le nombre de lignes de la partie du script correspondante dépasse largement celle du script de départ. A au moins un cas particulier près, on obtient quelque chose de "joli", ci joint Une équation cartésienne est : 2x-3y-8=0 et un des cas particulier, celui avec a=0 et b>0 Une équation cartésienne est : +3y-6=0 Il est évident que ce n'est pas le but recherché, c'était juste le "fun" pour moi. Citer
Clemmellian Posté(e) le 29 janvier 2021 Auteur Signaler Posté(e) le 29 janvier 2021 Mais il nous manque : Citer
E-Bahut julesx Posté(e) le 29 janvier 2021 E-Bahut Signaler Posté(e) le 29 janvier 2021 Bien sûr, c'est justement ce qu'on te demande de rajouter ! Citer
Clemmellian Posté(e) le 29 janvier 2021 Auteur Signaler Posté(e) le 29 janvier 2021 D'accord après le : print("c = ",c) ? Citer
E-Bahut PAVE Posté(e) le 29 janvier 2021 E-Bahut Signaler Posté(e) le 29 janvier 2021 def equat_cart(A,u): if u==[0,0]: return("la droite n'existe pas") else: c= -(u[0]*A[0]+u[1]*A[1]) return("une équation cartésienne est:....." Comprends tu ce script de la fonction (et rien que de la fonction) ? Les print() ont été nécessairement remplacés par des return. Je n'ai pas écrit la dernière ligne.... Citer
Clemmellian Posté(e) le 29 janvier 2021 Auteur Signaler Posté(e) le 29 janvier 2021 D'accord: "a coefficient de x","b coefficient de y" Citer
E-Bahut PAVE Posté(e) le 29 janvier 2021 E-Bahut Signaler Posté(e) le 29 janvier 2021 Le 29/01/2021 à 20:05, Clemmellian a dit : D'accord après le : print("c = ",c) ? Expand Cette ligne est à supprimer et à remplacer par.... un return ... de l'équation mise plus ou moins en forme 🙄 Lis mon précédent message Citer
Clemmellian Posté(e) le 29 janvier 2021 Auteur Signaler Posté(e) le 29 janvier 2021 Oui mais il est ecrit qu'il faut : Citer
E-Bahut PAVE Posté(e) le 29 janvier 2021 E-Bahut Signaler Posté(e) le 29 janvier 2021 Oui mais as tu observé cela ? et si on se moque de la présentation (!!) a est u[0], b est u[1] et c est...c. Essaye cela. NB : j'ai rajouté la chaine "=0" qui manque dans l'énoncé Citer
E-Bahut PAVE Posté(e) le 29 janvier 2021 E-Bahut Signaler Posté(e) le 29 janvier 2021 Il se fait tard.... u[0], u[1] sont des nombres ce qui pose problème quand on veut les concaténer (associer) avec des chaines de caractères. Il faut les transformer en chaines de caractères (string) avec la fonction str(). Ainsi str(u[0]) est... une chaine de caractères. Pour concaténer ces "bout de chaines", on met des signes + entre les morceaux. Essaye cela : return ("une équation cartésienne est: "+ str(u[0])+ "*x + "+str(u[1])+"*y + "+ str(c) +" = 0") l'affichage est... fort laid et pas très lisible mais tout y est. Bonne nuit. Citer
E-Bahut pzorba75 Posté(e) le 30 janvier 2021 E-Bahut Signaler Posté(e) le 30 janvier 2021 Avec un petit effort en programmation, on peut essayer d'améliorer l'affichage 2*x+-3*y+-8=0 et obtenir 2*x-3*y-8=0. En restant conforme aux règles mathématiques... Citer
Clemmellian Posté(e) le 30 janvier 2021 Auteur Signaler Posté(e) le 30 janvier 2021 Donc est-ce qu'il faut utiliser la fonction str() ? def equat_cart(A,u): if u==[0,0]: return("la droite n'existe pas") else: c= -(u[0]*A[0]+u[1]*A[1]) return("une équation cartésienne est:"+str(u[0])+ "*x + "+str(u[1])+"*y + "+str(c) +" =0") Citer
E-Bahut PAVE Posté(e) le 30 janvier 2021 E-Bahut Signaler Posté(e) le 30 janvier 2021 Si tu as compris à quoi sert la fonction str(), tu peux laisser comme cela. La programmation y est minimaliste et conforme à la demande de ton prof telle qu'elle s'est manifestée dans l'aide qu'il t'a fournie. Complément pour le plaisir : Dans la première mouture que tu avais posté il y a quelques jours, j'avais essayé d'améliorer l'affichage en mettant systématiquement des parenthèses autour de a, b et c. Mais ce bricolage d'affichage n'était pas la panacée !! (2)*x+(-3)*y+(-8)=0. Pzorba a mieux à nous proposer. Peut-être pourrait-il nous montrer, si cela n'est pas trop compliqué, ce qu'il a réalisé... 🙄 Jules avait aussi fait des... efforts d'affichage (voir son message). Pour le "fun", il peut nous faire part de ses recherches... s'il le veut 🤔 Citation Pour info, je me suis amusé à écrire un formatage pour l'écriture du résultat, le nombre de lignes de la partie du script correspondante dépasse largement celle du script de départ. A au moins un cas particulier près, on obtient quelque chose de "joli", ci joint Une équation cartésienne est : 2x-3y-8=0 et un des cas particulier, celui avec a=0 et b>0 Une équation cartésienne est : +3y-6=0 Il est évident que ce n'est pas le but recherché, c'était juste le "fun" pour moi. Expand Bien sûr si des personnes qui suivent ce "fil" en silence, ont des idées... qu'ils s'expriment 🤨. Il n'y a rien à gagner 😇.... Citer
E-Bahut julesx Posté(e) le 30 janvier 2021 E-Bahut Signaler Posté(e) le 30 janvier 2021 Le 30/01/2021 à 11:29, PAVE a dit : Jules avait aussi fait des... efforts d'affichage (voir son message). Pour le "fun", il peut nous faire part de ses recherches... s'il le veut Expand Pas de problème, mais tant que Clemmellian n'avait pas été au bout de son exercice, je ne voulais pas encore compliquer davantage. Ci joint le fichier py. Comme dit, je n'ai pas résolu correctement le cas a=0. equation_cartesienne.pyAller chercher des informations… Citer
Clemmellian Posté(e) le 30 janvier 2021 Auteur Signaler Posté(e) le 30 janvier 2021 Merci, mais pour verifier si le programme marche je fais juste tourner avec le bouton vert? def equat_cart(A,u): if u==[0,0]: return("la droite n'existe pas") else: c= -(u[0]*A[0]+u[1]*A[1]) return("une équation cartésienne est:"+str(u[0])+ "*x + "+str(u[1])+"*y + "+str(c) +"=0") print(equa_cart([1,-2],[2,-3])) Citer
E-Bahut julesx Posté(e) le 30 janvier 2021 E-Bahut Signaler Posté(e) le 30 janvier 2021 Je suppose que l'appui sur le bouton vert déclenche l'exécution du script. Par contre, sauf si tu as mal recopié ton script, le print(equa_cart([1,-2],[2,-3])) doit être mis en début de ligne. def equat_cart(A,u): if u==[0,0]: return("la droite n'existe pas") else: c= -(u[0]*A[0]+u[1]*A[1]) return("une équation cartésienne est:"+str(u[0])+ "*x + "+str(u[1])+"*y + "+str(c) +"=0") print(equa_cart([1,-2],[2,-3]) Tel que tu l'as écrit, il ferait partie de la définition de la fonction et ne serait pas traité correctement. Citer
Clemmellian Posté(e) le 30 janvier 2021 Auteur Signaler Posté(e) le 30 janvier 2021 Mince ça me dit ça : Citer
E-Bahut PAVE Posté(e) le 30 janvier 2021 E-Bahut Signaler Posté(e) le 30 janvier 2021 Le 30/01/2021 à 12:36, julesx a dit : [...] return("une équation cartésienne est:"+str(u[0])+ "*x + "+str(u[1])+"*y + "+str(c) +"=0") print(equa_cart([1,-2],[2,-3]) Tel que tu l'as écrit, il ferait partie de la définition de la fonction et ne serait pas traité correctement. Expand Sauf incompréhension de ma part, pour que le print de la dernière ligne soit exécuté comme programme appelant la fonction, il faut mettre 2 lignes vides entre lui et la fonction (je n'arrive pas à retrouver où j'ai lu cela 😟) A Jules, bravo pour ta fonction st() et sa batterie de tests. 😃 Citer
Clemmellian Posté(e) le 30 janvier 2021 Auteur Signaler Posté(e) le 30 janvier 2021 Merciii Toujours pas Citer
E-Bahut julesx Posté(e) le 30 janvier 2021 E-Bahut Signaler Posté(e) le 30 janvier 2021 Le 30/01/2021 à 14:28, PAVE a dit : Sauf incompréhension de ma part, pour que le print de la dernière ligne soit exécuté comme programme appelant la fonction, il faut mettre 2 lignes vides entre lui et la fonction (je n'arrive pas à retrouver où j'ai lu cela 😟 Expand A priori, chez moi, ça s'exécute sans ligne de séparation. Le 30/01/2021 à 14:29, Clemmellian a dit : Merciii Toujours pas Expand C'est normal, ta fonction s'appelle equat_cart et tu l'appelles par equa_cart. C'est un peu de ma faute, j'ai recopié bêtement ton post sans vérifier. En plus, j'ai oublié une parenthèse à la fin du print. def equat_cart(A,u): if u==[0,0]: return("la droite n'existe pas") else: c= -(u[0]*A[0]+u[1]*A[1]) return("une équation cartésienne est:"+str(u[0])+ "*x + "+str(u[1])+"*y + "+str(c) +"=0") print(equat_cart([1,-2],[2,-3])) Citer
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.