1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignement
    Inscrit en
    septembre 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignement

    Informations forums :
    Inscription : septembre 2017
    Messages : 28
    Points : 0
    Points
    0

    Par défaut Équation de sec degre

    Salut
    Votre avis sur ce script svp pour débutant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    def equation(a,b,c):#resoudre une equation de 2nd degres de coef a,b,c#
     
     
        delta=(b**2)-(4*a*c)
        if delta<0:return("pas de solution")
        x=(-b-delta**0.5)/(2*a)
        y=(-b+delta**0.5)/(2*a)
        if delta>0:return(x,y)
        if delta==0:return(x)
     
    a=input("entrer a:")
    b=input("entrer b:")
    c=input("entrer c:")
     
    print(equation(a,b,c))

  2. #2
    Membre éprouvé
    Homme Profil pro
    Enseignant
    Inscrit en
    juin 2013
    Messages
    755
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2013
    Messages : 755
    Points : 1 001
    Points
    1 001

    Par défaut

    C'est beau.
    Pas d'aide par mp.

  3. #3
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    10 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 10 338
    Points : 16 907
    Points
    16 907

    Par défaut

    Salut,

    Citation Envoyé par bouchelliga Voir le message
    Votre avis sur ce script svp pour débutant
    Si vous essayez de l'exécuter, çà doit planter avec des messages d'erreurs.
    En tant que débutant, essayer de comprendre le pourquoi de ces messages (mais vous ne les avez pas mentionné) et comment corriger le problème (i.e. commencer par apprendre à le décrire) font partie de l'exercice.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignement
    Inscrit en
    septembre 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignement

    Informations forums :
    Inscription : septembre 2017
    Messages : 28
    Points : 0
    Points
    0

    Par défaut Erreur

    Je comprend pas de quels erreurs tu parle ...j'ai pas remarquer lors de l'exécution

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignement
    Inscrit en
    septembre 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignement

    Informations forums :
    Inscription : septembre 2017
    Messages : 28
    Points : 0
    Points
    0

    Par défaut Application

    Comment je peut rendre ce script comme une application Android executable

  6. #6
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    10 338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 10 338
    Points : 16 907
    Points
    16 907

    Par défaut

    Salut,

    Citation Envoyé par bouchelliga Voir le message
    Je comprend pas de quels erreurs tu parle ...j'ai pas remarquer lors de l'exécution
    C'est que vous ne l'avez même pas essayé car dès qu'on arrive à b**2, çà plante: avec Python3, input ne retourne que des chaînes de caractères.

    Citation Envoyé par bouchelliga Voir le message
    Comment je peut rendre ce script comme une application Android executable
    Après avoir pris le temps d'apprendre à programmer avec Python puis avec Kivy... i.e. pas avant plusieurs semaines de travail assidu.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre éclairé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 419
    Points : 819
    Points
    819
    Billets dans le blog
    1

    Par défaut

    Pour compléter l'idée de wiztricks :
    Que donne ce script si delta <0 ou si a=0 ?

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignement
    Inscrit en
    septembre 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignement

    Informations forums :
    Inscription : septembre 2017
    Messages : 28
    Points : 0
    Points
    0

    Par défaut Comprend

    Pour les équation de sec deg a!=0 si non ça devient du 1er degré
    ...pour delta négatif ...le programme annonce "pas de solution"

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignement
    Inscrit en
    septembre 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignement

    Informations forums :
    Inscription : septembre 2017
    Messages : 28
    Points : 0
    Points
    0

    Par défaut Les errurs

    Pour wistrick
    Je vois pas les erreurs ...j'ai exécuter pas mal de fois sans erreurs

  10. #10
    Membre habitué
    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    mars 2013
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : mars 2013
    Messages : 109
    Points : 134
    Points
    134

    Par défaut

    La fonction input renvoit ce que tu as saisi au clavier sous forme de chaine de caractère.
    Autrement dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print(equation(1,-2,1))      ### fonctionne
    print(equation('1','-2','1')) ### ne fonctionne pas
    Et à priori tu est dans le cas numéro 2 (si bien sûr tu as saisi 1, -2 et 1 au clavier pour les valeurs d'input).

    Autrement, voici quelques piste d'amélioration :

    1) Le nom de la fonction doit etre plus explicite. Ce n'est pas une fonction qui fabrique une équation, et qui plus est, c'est pas n'importe quelle équation. Un truc comme RésoudreEquationDegre2 serait plus approprié à mon avis.

    2) Au début de la fonction vérifier qu'on a bien à faire à une équation du second degré (i.e. a différent de 0).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assert( a != 0 ),"Veuillez specifier une equation de degre 2"
    qui se charge de provoquer une erreur si a==0.
    Ou bien (si la fonction assert te parait trop compliquée) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if a==0 : 
         print("ERREUR: Veuillez specifier une equation de degre 2")
         return
    3) Plutot que de faire 3 if successifs, tu peux mieux mettre en avant le fait que tu traites le problème par disjonction de cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        if delta==0: return(-b/a)
        elif delta>0 :
            x=(-b-delta**0.5)/(2*a)
            y=(-b+delta**0.5)/(2*a)
            return(x,y)
        else :  ### On n'est donc nécessairement dans le cas delta<0 car il n'est ni >0, ni égal à 0
            return("pas de solution")
    4) De plus, c'est mieux de n'avoir qu'un seul return dans une fonction. On peut donc réécrire le code précédent ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        resultat = "pas de solution"
        if delta==0: resultat = -b/a
        elif delta>0 :
            x=(-b-delta**0.5)/(2*a)
            y=(-b+delta**0.5)/(2*a)
            resultat = (x,y)
        return(resultat)

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignement
    Inscrit en
    septembre 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignement

    Informations forums :
    Inscription : septembre 2017
    Messages : 28
    Points : 0
    Points
    0

    Par défaut Merci et bravo

    Merci et bravo

  12. #12
    Membre éclairé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 419
    Points : 819
    Points
    819
    Billets dans le blog
    1

    Par défaut

    Quand on écrit un programme, il faut envisager tous les cas possibles et donc le distrait qui entre a=0 ne doit pas planter le programme mais voir un message d'erreur.

  13. #13
    Membre expert
    Avatar de fred1599
    Homme Profil pro
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    2 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 2 240
    Points : 3 618
    Points
    3 618

    Par défaut

    Citation Envoyé par Michel Voir le message
    Quand on écrit un programme, il faut envisager tous les cas possibles et donc le distrait qui entre a=0 ne doit pas planter le programme mais voir un message d'erreur.
    Pourtant ça doit être le cas, si on prend en compte son code de départ, non ?

    J'ai pas testé, mais quelque chose du genre je pense

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> 2/0
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ZeroDivisionError: division by zero
    qui me semble bien explicite en terme de message d'erreur...



    Une remarque sur le code, il est possible que le PO exécute en python 2.x et non 3.x comme on pourrait le penser, ce qui rendrait son input() version 2 à l'équivalent du eval(input()) version 3, malgré le détail du titre. C'est ce qui pourrait rendre l'incompréhension entre wiztricks et bouchelliga.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  14. #14
    Membre éclairé

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    mars 2002
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : mars 2002
    Messages : 419
    Points : 819
    Points
    819
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par fred1599 Voir le message
    Pourtant ça doit être le cas, si on prend en compte son code de départ, non ?

    J'ai pas testé, mais quelque chose du genre je pense

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> 2/0
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ZeroDivisionError: division by zero
    qui me semble bien explicite en terme de message d'erreur...


    Entièrement d'accord mais une petite phrase en français est plus accessible à un non informaticien, d’où un petit test avec affichage d'un message serait bien venue.

Discussions similaires

  1. Résoudre une équation du second degré
    Par Emmanuel Delahaye dans le forum Télécharger
    Réponses: 3
    Dernier message: 04/12/2011, 03h59
  2. Résolution d'équation de second degrès dans C
    Par acidburns dans le forum Débuter
    Réponses: 5
    Dernier message: 07/11/2011, 22h46
  3. Résoudre et factoriser une Équation du 2 degré
    Par hassenmajor dans le forum Contribuez
    Réponses: 0
    Dernier message: 18/09/2011, 19h52
  4. Résoudre une équation du 3ème degré
    Par princesse_nadou dans le forum MATLAB
    Réponses: 4
    Dernier message: 21/04/2010, 22h27
  5. Visual basic: algo résolvant une équation du second degré
    Par mauriiice dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 05/12/2005, 18h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo