E-Bahut PAVE Posté(e) le 16 janvier 2021 E-Bahut Signaler Share Posté(e) le 16 janvier 2021 il y a 9 minutes, Clemmellian a dit : Bon, on progresse ! Ci dessus c'est ce que renvoie ton programme. Je voudrais maintenant ton script qui a produit ce résultat Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Clemmellian Posté(e) le 16 janvier 2021 Auteur Signaler Share Posté(e) le 16 janvier 2021 Oui alors : # listes des données à traiter (c'est un peu inutile ici mais comme tu veux des listes....) listeA=[1,-2] # coordonnées du point A listen=[2,-3] # coordonnées du VECTEUR normal n # l'équation de la droite passant par A(xA;yA) dont n(a,b) est un vecteur normal # est de la forme ax + by + c = 0 print("a coefficient de x :", listen[0]) print("b coefficient de y :", listen[1]) # calcul de c c= (listen[0]*listeA[0]+listen[1]*listeA[1]) print("c = ",c) Sauf que le programme affiche c = 8 au lieu de -8 listeA=[1,-2] listen=[2,-3] 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) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 16 janvier 2021 E-Bahut Signaler Share Posté(e) le 16 janvier 2021 C'est normal, il manque un signe - dans ton expression de c ! c= - ( a*xA + b*yA) t'a dit PAVE ! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Clemmellian Posté(e) le 16 janvier 2021 Auteur Signaler Share Posté(e) le 16 janvier 2021 Merci C'est bon listeA=[1,-2] listen=[2,-3] 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) Il manque juste à dire qu'il n'existe aucune droite si il y a un vecteur nul Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 16 janvier 2021 E-Bahut Signaler Share Posté(e) le 16 janvier 2021 Il ne te reste plus qu'à arranger un peu tout ça, n'oublie pas qu'on te demande de gérer le cas du vecteur normal nul. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Clemmellian Posté(e) le 16 janvier 2021 Auteur Signaler Share Posté(e) le 16 janvier 2021 if listen==[0,0]: print("aucune équation de droite possible")je voulais mettre ça : Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut PAVE Posté(e) le 16 janvier 2021 E-Bahut Signaler Share Posté(e) le 16 janvier 2021 il y a 3 minutes, Clemmellian a dit : Merci C'est bon listeA=[1,-2] listen=[2,-3] 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) Il manque juste à dire qu'il n'existe aucune droite si il y a un vecteur nul Merci à Jules qui est intervenu pendant que dégustais ma soupe bien chaude . Bon alors on complète avec ce fichu cas particulier... Je te suggère de reprendre ce que tu avais proposé au départ avec un test IF..... puis ELSE ... qui était plutôt bien vu !! Et te souvenir que pour afficher un message l'instruction est print(). Essaye de remettre ce test en place dans ton script et exécute ton script, pour voir s'il tourne correctement quand le vecteur n a pour coordonnées (0;0). On attend pour appeler les secours si ça plante pour toi 🤓. Je découvre ton dernier message... tu es en bonne voie !! Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Clemmellian Posté(e) le 16 janvier 2021 Auteur Signaler Share Posté(e) le 16 janvier 2021 Alors : 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) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Clemmellian Posté(e) le 16 janvier 2021 Auteur Signaler Share Posté(e) le 16 janvier 2021 ? Je pense qu'il marche parce que quand je change les coordonnées de n, en mettant 0,0 cela apparait bien "aucune droite d'équation possible". Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut PAVE Posté(e) le 16 janvier 2021 E-Bahut Signaler Share Posté(e) le 16 janvier 2021 Oui il marche mais quand le vecteur est le vecteur nul, ,il y a un c=0 qui s'affiche... et qui ne devrait pas 🤓 ! Pas grave; il suffit d'indenter les 2 dernières lignes pour qu'elles ne soient exécutées que si le vecteur n'est pas nul donc dans la partie else du test. Bon, je pense que tu as fait du bon travail 🙂. Je t'envoie un script équivalent à celui-ci mais un peu plus élaboré... il permet comme je crois Pzorba (?) te l'avait suggéré, de saisir les données à la volée (quand on lance le programme). Copie le, fait le tourner et essaye de comprendre en quoi il diffère. xA=float(input("abscisse xA du point A ? ")) yA=float(input("ordonnée yA du point A ? ")) a=float(input("1ère coordonnée a du vecteur normal n ? ")) b=float(input("2ème coordonnée b du vecteur normal n ? ")) if a==0 and b==0: print("n est le vecteur nul donc aucune équation de droite possible") else: c= -(a*xA +b*yA) # affichage des résultats print() print("Dans l'équation ax+by+c = 0") print (" le coefficient a de x est : ",a) print (" le coefficient b de y est : ",b) print (" le coefficient constant c est :",c) print() print() print(" ",round(a),"*x + ",round(b),"*y + ",round(c)," = 0",sep="") Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Clemmellian Posté(e) le 17 janvier 2021 Auteur Signaler Share Posté(e) le 17 janvier 2021 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) Comme ceci ? Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 17 janvier 2021 E-Bahut Signaler Share Posté(e) le 17 janvier 2021 Bonjour PAVE, J'avais également pensé à un affichage de l'équation, mais j'ai abandonné. Tu as essayé ton script * avec une coordonnée nulle pour le vecteur ? * avec une ordonnée négative pour le vecteur normal ? *0 avec un résultat négatif pour c ? Je ne suis pas non plus d'accord avec l'utilisation de round, quid du cas des coordonnées non entières ? Tu comprends pourquoi je n'ai pas persisté. En fait, il faudrait créer une fonction qui retourne une chaine pour les produits a*x, b*y et pour c, tenant compte de tous les cas possibles. Ceci dépasse évidemment largement le contexte de l'exercice. A la rigueur, pour le script de base de l'élève, on aurait pu préciser après le else la forme de l'équation ax+by+c=0. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut PAVE Posté(e) le 17 janvier 2021 E-Bahut Signaler Share Posté(e) le 17 janvier 2021 Bonjour Jules, Tu es trop exigeant ! Moi qui était si fier d'avoir écrit l'équation de la droite 😪. Mais reconnait quand même que dans les cas particuliers que tu soulèves 🏋️♂️, ce qui s'affiche n'est pas faux et que la présence des parenthèses autour des coefficients nuls ou négatifs rend l'expression tout à fait.... lisible et mathématiquement correcte. C'est sûr qu'en multipliant les tests et en créant une belle chaine de caractères, on pourrait faire mieux 😇 mais bon, c'est dimanche et on n'est pas payés plus. Amicalement. @ Clemme Il y a 1 heure, Clemmellian a dit : Comme ceci ? Essaye et tu verras... 🤓 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 17 janvier 2021 E-Bahut Signaler Share Posté(e) le 17 janvier 2021 il y a 25 minutes, PAVE a dit : Mais reconnait quand même que dans les cas particuliers que tu soulèves 🏋️♂️, ce qui s'affiche n'est pas faux et que la présence des parenthèses autour des coefficients nuls ou négatifs rend l'expression tout à fait.... lisible et mathématiquement correcte. Je ne peux pas juger sur le "mathématiquement correcte", n'ayant pas été prof de maths. Moi, cette écriture me choque un peu, mais c'est un avis personnel, donc qui n'engage que moi. Il faudrait avoir l'avis d'un enseignant de la matière, dans le contexte de l'enseignement aux élèves. Cela dit, l'essentiel, c'est que Clemmellian s'en sorte et surtout, assimile quelques subtilités du langage Python. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut PAVE Posté(e) le 17 janvier 2021 E-Bahut Signaler Share Posté(e) le 17 janvier 2021 Citation print("L'équation est donc : (",round(a,4),")*x +(",round(b,4),")*y+(",round(c,4),")= 0",sep="") Concernant l'utilisation de la fonction round(), il est vrai qu'utilisée sans argument (comme dans mon programme initial), l'affichage n'est pas acceptable lorsque les données ne sont pas entières. Avec un argument comme ci-dessus, c'est nettement mieux.... mais avec des données entières (comme dans l'exemple de l'énoncé), les coefficients entiers s'affichent... avec une décimale égale à 0 !! On n'est jamais content 😬. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 17 janvier 2021 E-Bahut Signaler Share Posté(e) le 17 janvier 2021 il y a une heure, PAVE a dit : mais avec des données entières (comme dans l'exemple de l'énoncé), les coefficients entiers s'affichent... avec une décimale égale à 0 !! C'est ce qu'on obtient également sans utiliser "round", donc simplement avec print(a,"*x + ",b,"*y + ",c," = 0",sep=""). C'est le premier problème que j'avais détecté en essayant d'afficher l'équation avec des valeurs entières. Du coup, j'avais utilisé str : print(str(a)+"*x + "+str(b)+"*y + "+str(c)+" = 0") Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Clemmellian Posté(e) le 17 janvier 2021 Auteur Signaler Share Posté(e) le 17 janvier 2021 Donc j'ai essayé mon programme avec d'autres valeurs et il fonctionne bien Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut PAVE Posté(e) le 17 janvier 2021 E-Bahut Signaler Share Posté(e) le 17 janvier 2021 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Clemmellian Posté(e) le 17 janvier 2021 Auteur Signaler Share Posté(e) le 17 janvier 2021 Merci Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut PAVE Posté(e) le 17 janvier 2021 E-Bahut Signaler Share Posté(e) le 17 janvier 2021 Bonne continuation.😃 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
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.