Aller au contenu

Messages recommandés

Posté(e)

Bonjour, 

Je dois rectifier un programme pyhton:

Voici l'ennoncé:

image.png.3c01a999fd2788813376f6262f92b362.png

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:

image.thumb.png.128c2884bd8383855c66d4985a1e346a.png

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

  • E-Bahut
Posté(e)

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.

Posté(e)

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")

  • E-Bahut
Posté(e)

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 ?

  • E-Bahut
Posté(e)

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  😷 !!!!

  • E-Bahut
Posté(e)

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.

  • E-Bahut
Posté(e)
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.... 

  • E-Bahut
Posté(e)
  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

  • E-Bahut
Posté(e)

Oui mais as tu observé cela ?

1458233496_EB210129py.png.c9c64e215ce391d5c84c556a1900cc03.png

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é

  • E-Bahut
Posté(e)

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.

image.thumb.png.31b643b6d87f272b89df0d354dac7ea7.png

Bonne nuit.

  • E-Bahut
Posté(e)

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...

Posté(e)

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")

  • E-Bahut
Posté(e)

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 😇....

  • E-Bahut
Posté(e)
  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…

Posté(e)

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]))    
   

  • E-Bahut
Posté(e)

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.

  • E-Bahut
Posté(e)
  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. 😃

  • E-Bahut
Posté(e)
  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]))

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...
spam filtering
spam filtering