IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Programme pour un logiciel avec Python 3.2


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut Programme pour un logiciel avec Python 3.2
    Salut à tous, avec une connaissance nous nous sommes fixé pour objectif de réaliser un logiciel de math avec le langage python. Sachant que nous travaillons avec la version 3.2


    J'ai tout dabord fais un programme permettant de calculer les racines d'un trinome dans R. Je vous donne le code pour repasesr par dessus mon travail si ça vous dis, mais normalement ce programme ci fonctionne bien.

    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
    16
    17
    18
    19
    20
    21
    22
    23
     
    from math import* 
     
    while 1:
    	print("Rappel: Un trinome du second degré est de la forme f(x)=ax²+bx+c")
    	a=input("Rentrez un nombre a:")
    	b=input("Rentrez un nombre b:")
    	c=input("Rentrez un nombre c:")
    	a=float(a)
    	b=float(b)
    	c=float(c)
    	Delta=(b**2)-(4*a*c)
    	if Delta <0:
    		print("Il n'y a pas de solution et le trinome est du signe de a")
    	if Delta==0:
    		print("Le trinome à une racine réelle dites double et il est toujours du signe de a, sauf pour la valeur x=a=-b/2a")
    		x=-b/(2*a)
    		print("Le trinome a une racine réelle x=",x,)
    	if Delta >0 :
    		print("Le trinome a deux racines réelles x1 et x2. Il est du signe de a à l'extérieur des racines sur ]-inf;x1[U[x2;+inf[ et du signe contraire sur ]x1;x2[")
    		x1=(-b-sqrt(Delta))/(2*a)
    		x2=(-b+sqrt(Delta))/(2*a)
    		print("Le trinome à deux racines réelles telles que x1=",x1,"et x2=",x2,)
    Je m'attaque maintenant à un programme permettant de calculer le PGCD de deux nombres, mais celui ci plante royalement et j'aimerais avoir votre aide =)
    Soyez indulgents j'ai commencé python il y a quelques moi et pas en cours mais de ma propre initiative (quoique dans certains cours de français ennuyant ahemm j'ai rien dis)

    Donc voilà j'aimerais savoir ce qui cloche ci possible^^et aussi que vous m'aidiez à comprendre.
    Il est difficile de trouver un forum actif sur la programmation alors j'espère que sur un forum de pro je trouverais mon bonheur

    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
    16
    17
     
    print("===Calcul de PGCD===")
    print("Rappel:Si a et b sont deux entiers naturels non nuls, Alors parmi touss les diviseurs commun à a et b, le plus grand est noté PGCD(a,b)")
     
     
    a=input("Rentrez un nombre a:")
    b=input("Rentrez un nombre b:")
     
    a=int(a)
    b=int(b)
     
    if(a>b):
            while(a!=b):
                    PGCD(a,b)=PGCD(b,b-a)
    		print("Le PGCD de",a,"et de",b,"est:",b)
    		if(a=b=1):
                            print("Les nombres",a,"et",b,"sont premier entre eux car leur PGCD vaut 1.")
    Il n'y a que la première partie, mais cela ne marche pas déjà, lorsque je lance mon programme un message d'erreur invalid syntax aparait. Merci pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    Puisque tu testes une égalité et qu'il ne s'agit pas de l'affectation d'une valeur, il ne faut pas écrire
    if (a=b=1): mais if (a==b==1):

    Après correction tu vas avoir un autre problème :
    [code]SyntaxError: can't assign to function call[code]
    PGCD(a,b) ne correspond à aucune fonction PGCD définie avant, sauf si tu l'as omise dans ton bout de code...

    D'autre part, tu as fait le choix de la méthode de calcul des soustractions successives, c'est volontaire ?
    Pourquoi pas l'algorithme d'Euclide ?
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    a,b=3780,432
    c,d=a,b # pour garder les valeurs initiales en vue de leur affichage utérieur
    while not a%b==0:  # Nécessité d'avoir a >= b !
        a,b=b,a%b
    if b==1:
        print("Les nombres",c,"et",d,"sont premier entre eux car leur PGCD vaut 1.")
    else:
        print("Le PGCD de",c,"et de",d,"est:",b)
    Il y a d'autres façons de procéder, comme par exemple d'importer gcd depuis le module fractions et de taper pgcd=gcd(a,b)

    @+

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Lut, et merci pour la réponse.

    Effectivement le double "=" m'avait échappé.

    Ensuite pour la ligne 14 : PGCD(a,b)=PGCD(b,b-a)

    EN fait je pensais que cela me permettrait justement d'associer des valeurs à la fonction PGCD Mais il faut donc dabord déclarer la fonction PGCD c'est bien ça ? On s'y prend comment ?

    Ensuite, oui j'ai choisi la méthode des soustractions de moi même, mais je dosi bien t'avouer que je ne me rappele plus trop pourquoi, ça fait maintenant un peu plus de deux semaines que j'ai écris ce bout de programme.

    Ensuite pour l'import, je ne savais pas que la fonction existait déjà. Si c'est le cas, j'aimerais bien savoir comment elle s'exprime et aussi d'où est ce qu'on peut l'importer, de la bibliothèques math ?

    Toutefois, ce que je dis là est peu être un peu bizarre, mais je préfèrerais créer la fonction oi même pour m'exercer. Je vise une école d'informatique une fois mno année de TS écoulée donc j'aimerais bien faire les choses come il faut, construire mes propres fonctions par exemples etc etc.

    Je sais que le langage dominant est le C, mais mon professeur de physique de l'année passé, grand passioné d'informatique qui a déjà réalisé quelque logiciel m'a dit que c'était peut être plus facile de débuter avec python... A cette époque là, et j'ne susi toujours au même point, je suivais les tutoriels Python et je m'étais arreter au plus dut à comprendre, mais aussi aux plus important: les pointeurs.., bref j'ai pas encore saisi la totalité du truc et pour le moment je bosse sous python alors j'espère que c'est un bon choix^^


    Bon pour revenir sur mon "futur logiciel", j'aimerais savoir également quelque chose.

    Est il possible en se basant sur le premier code que j'ai tapé, à l'aide de turtle de faire en sorte de tracer un repère, jusque là ça devrait être faisable sans trop de dégat, puis par la suite de faire un bout de programme permettant de tracer la fonction polynome que l'utilisateurs aurait rentrer avec les variables a,b et c.

    Voilà merci pour votre aide précieuse.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Points : 67
    Points
    67
    Par défaut
    Ave,

    importation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from fractions import gcd
    >>> gcd(3780,432)
    108
    >>>
    Mais tu as aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> from fractions import Fraction
    >>> Fraction(1,2)+Fraction(1,3)
    Fraction(5, 6)
    >>>
    Définir la fonction.
    Puisque tu utilises les soustractions, voilà par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def PGCD(a,b):
        return b,abs(a-b)
     
    a,b=3780,432
    c,d=a,b
    while a!=b:
        a,b=PGCD(a,b)
    if b==1:
        print ("Les nombres",c,"et",d,"sont premier entre eux car leur PGCD vaut 1.")
    else:
        print ("Le PGCD de",c,"et de",d,"est:",b)
    Les valeurs absolues, parce qu'il arrive que a-b soit négatif (fais un test sans abs, pour voir )

    L'algorithme d'Euclide (divisions successives) qu'on apprend dès la 3e (la méthode des soustractions aussi, d'ailleurs) occasionnerait moins de calculs que les soustractions
    Mieux que turtle : matplotlib (probablement moins "évident") :
    http://matplotlib.sourceforge.net

    @+

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Ok, merci juste une chose que je n'ai pas compris dans ton programme c'est la 2ème ligne.

    Je ne comprends pas la signification de "abs"

    Ensuite, si j'ai pensé à Turtle c'est parce que je me suis acheté le bouquin Apprendre à programmer de Gérard Swinnen et qu'il fait mention de turtle.
    Mais je jèterais aussi un coup d'oeil à celui dont tu me parles.

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 811
    Points : 7 096
    Points
    7 096
    Par défaut
    abs --> valeur absolue

    Les valeurs absolues, parce qu'il arrive que a-b soit négatif (fais un test sans abs, pour voir )
    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)

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Oups j'avais zappé cette ligne Bon et bien merci pour vos réponses je repostes si j'ai un soucis.

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Bon alors désolé, mais je n'y arrive toujours pas, cette fois ce n'est pas un soucis de programme à proprement parler, le problème vient de ma syntaxe.
    Je rentre mon code, et arriver à la dernière condition de ma boucle le message invalid syntax apparait, d'où mon incompréhension, pourquoi "else" ne serait pas valide après un "if"
    Voilà merci à ceux qui seront capable de me réponddre, je reposte le code tapé ligne par ligne dans l'idle.

    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
    16
    17
    18
    19
    20
    21
    22
    23
     
    >>> def PGCD(a,b):
    	return b,abs(a-b)
     
    >>> a=input("Rentrez un nombre a:")
    Rentrez un nombre a:36
    >>> b=input("Rentrez un nombre b:")
    Rentrez un nombre b:2
    >>> a=int(a)
    >>> b=int(b)
    >>> c,d=a,b
    >>> while a!=b:
    	a,b=PGCD(a,b)
     
     
    >>> if b==1:
    	print("Les nombres",c,"et",d," sont premiers entre eux car leur PGCD vaut 1")
     
     
    >>> else:
     
    SyntaxError: invalid syntax
    >>>

  9. #9
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Vous avez entrer une fois de trop (ligne 18) et donc vous etes sorti de votre condition if (en ligne 19).
    else tout seul n'est donc pas compris.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Le problème c'est que si je ne fais pas ce "double entrée", je n'ai pas les 3 chevrons qui apparaissent.

    Cela n'a donc pas d'importance ?

  11. #11
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Points : 1 384
    Points
    1 384
    Par défaut
    Citation Envoyé par Amnael Voir le message
    Le problème c'est que si je ne fais pas ce "double entrée", je n'ai pas les 3 chevrons qui apparaissent.

    Cela n'a donc pas d'importance ?
    Ben si, justement. Tout le bloc (if: ... else: ...) constitue un seul bloc syntaxique et doit donc être entré en une fois.

    Cela dit c'est un peu masochiste de taper tout un programme comme cela dans l'interpréteur, pourquoi tu ne crées pas un script que tu exécutes ?

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Que ceux tu dire par un script que j'exécute ?

    Désolé, je suis vraiment débutant, il est vrai comme me l'a suggéré quelqun que je pourrait utiliser la fonction du PGCD gcd qui est déjà dans python, mais j'ai la certitude qu'il vaut mieux que je travaille cela par moi même, si j'utilisais cette fonction gcd sans avoir au préalable réalisé moi même une fonction PGCD qui marche, j'aurai l'impression d'utiliser le travail de quelqun d'autre alors que je suis capable de le faire moi même.

    Pour en revenir à la remarqué faite préalablement, j'ai à nouveau essayer, et je ne comprend pas pourquoi, quand je suis à la ligne 18, que je tape sur entrée pour me retrouver à la ligne 19, le pc me fait automatiquement sauter la ligne 19 et je retombe donc sur la numéro 20 et l'erreur de syntaxe.

    Je dois aussi avouer que cet interpréteur commence à me taper sur les nerfs =) ddevoir à nouveau retaper tout le programme pour pouvoir tester quelque chose, quand on ets habitué à faire du C dans un compilateur c'est un peu lourd...

    Question: Si je tape directement dans un bloc note le programme et que j'en fais ensuite un copier coller sur l'idle est ce que ça marchera ou pas ? J'ai lu quelque part qu'il valait mieux éviter à cause des problèmes d'incrémentation.


    Merci pour vos réponses.

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Points : 224
    Points
    224
    Par défaut
    Puisque tu as le bouquin "Apprendre à programmer avec Python 3", je te conseille de lire à partir de la page 31
    Premiers scripts, ou comment conserver nos programmes

  14. #14
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 754
    Points : 376
    Points
    376
    Par défaut
    Salut, oui comme dis dans le livre, j'enregistre mes programmes, par exemple le brouillon de celui ci, je l'ai appelé PGCD.py

    N'empêche ça ne règle toujours pas mon problème

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Points : 224
    Points
    224
    Par défaut
    Je pige pas bien ton problème.
    Si tu tapes dans l'interpréteur, quand tu veux faire un else tu ne dois taper qu'une seule fois sur entrée.
    Les chevrons veulent dire que tu changes de bloc, et là tu veux rester dans le même bloc.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> a = True
    >>> if a:
    ...     print "coucou"
    ... else:
    ...     print "au revoir"
    ... 
    coucou
    >>>
    Si tu as enregistré ton programme dans un fichier PGCD.py, tu peux directement l'interpréter. Pour cela il suffit de passer ton fichier comme argument à l'interpréteur .
    soit un fichier coucou.py contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #       coucou.py
     
    a = True
    if a:
        print "coucou"
    else:
        print "au revoir"
    Dans une ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ~$ python coucou.py 
    coucou
    Mais c'est expliqué dans ton bouquin tout ça...

Discussions similaires

  1. Réponses: 8
    Dernier message: 06/12/2014, 18h39
  2. Réponses: 0
    Dernier message: 17/04/2014, 11h46
  3. intéragir avec un logiciel avec un programme python
    Par johnraikonen dans le forum Général Python
    Réponses: 9
    Dernier message: 11/09/2011, 19h50
  4. ouvrir un programme visual basic 2008 avec python
    Par saimyas dans le forum Interfaçage autre langage
    Réponses: 0
    Dernier message: 30/05/2011, 16h22
  5. Quel langage pour un logiciel avec BD pour Windows et Linux
    Par Guilhem_mdg dans le forum Windows
    Réponses: 3
    Dernier message: 19/03/2006, 16h47

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