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 :

Problème pour faire mes courbes


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Par défaut Problème pour faire mes courbes
    Bonjour, je me lance depuis peu dans la programmation. J'ai opté pour python.
    Là je suis parti du projet de dessiner les courbes de l'IMC:

    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
    24
    25
    26
    27
    28
    29
    30
    #!/usr/bin/python3.1
    # -*-coding:Utf-8 -* 
     
    #étape suivante connaître les fonctions à l'origine des courbes IMC
    # ce serait poids en kg sur taille exprimé en mètre
    # x la taille y le poids ? donc y/x**2, sachant que x est compris entre 1.50 et 2.10 et y entre 40 et 130
     
    import numpy as np
    import matplotlib.pyplot as plt
     
    plt.clf()
     
    y = np.linspace(40,130,1)
    x = np.linspace((1,50),(2,10),1)
    imc = (y/x**2)
    while imc.all >=float(16.5) and imc.all <=float(18.5):
        plt.plot(x,y,imc)
        plt.show() # erreur ligne 38 indentation obligatoire
    #pas de courbe dessinée     
     
     
    #ne fonctionne pas avec array
    #j'essaie avec array
     
    y = np.array([40,130])
    x = np.array([(1,50),(2,10)])
    imc = (y/x**2)
    while imc.all >= float(16.5) and imc.all <= float(18.5):
        plt.plot(x,y,imc)
        plt.show() # erreur ligne 38 indentation obligatoire
    me renvoie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
      File "courbe IMC.py", line 17, in <module>
        while imc.all >=float(16.5) and imc.all <=float(18.5):
    TypeError: unorderable types: builtin_function_or_method() >= float()
    Ce mini code serait inenvisageable avec des nombres réels ?

    Merci d'éclairer le débutant que je suis

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par calixtus06 Voir le message
    Ce mini code serait inenvisageable avec des nombres réels ?

    Merci d'éclairer le débutant que je suis
    L'erreur dit juste que vous comparez des patates avec des oranges et que çà Python ne sait pas faire.
    note: imc est un tableau, imc.all une méthode... difficile de les comparez à un float.
    L'autre erreur qui est masquée par celle-ci est l'instruction while imc.all >= float(16.5) and imc.all <= float(18.5):. Si la condition était bien écrite, rien dans le corps de la boucle ne modifie imc pour que la condition puisse être fausse et sortir de la boucle.

    Il vous fait prendre le temps d'apprendre à jouer avec les constructions de base: boucles, conditions, .... sur des objets simples avant de vous lancer à les utiliser avec des objets plus complexes.

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

  3. #3
    Membre averti
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Il vous fait prendre le temps d'apprendre à jouer avec les constructions de base: boucles, conditions, .... sur des objets simples avant de vous lancer à les utiliser avec des objets plus complexes.
    - W
    C'est ce que je pensais faire .Mais je ne vois pas où finit le simple et où commence le compliqué.

    J'essaie d'écrire plus simplement (?)

    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
    #!/usr/bin/python3.1
    # -*-coding:Utf-8 -* 
     
    # connaître les fonctions à l'origine des courbes IMC
    # ce serait poids en kg sur taille exprimé en mètre
    # x la taille y le poids  donc la formule est y/x**2, sachant que x est compris entre 1.50 et 2.10 et y entre 40 et 130
     
    import numpy as np
    import matplotlib.pyplot as plt
     
     
    x = np.linspace(1.5,2.10,10)
    imc = [(y/x**2) for y in range(40,140)]
    plt.plot (x,y,imc)
    plt.show()
    Comment définir y qui pour moi semblait être défini dans range ?

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    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 : 1 229
    Par défaut
    Ecrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imc = [(y/x**2) for y in range(40,140)]
    C'est comme écrire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    imc = []
    for y in range(40,140) :
        imc.append(y/x**2)
    donc y n'existe que dans la boucle for, et pas à l'extérieur.
    Si vous voulez qu'il existe à l'extérieur, définissez-le à l'extérieur :


    Ensuite vous voulez tracer une fonction imc(x,y), donc la représentation de ça c'est une surface dans un espace 3D. plot c'est pour du 2D, et tracer y=f(x).

    Regarde ceci :
    https://matplotlib.org/2.0.0/example...ce3d_demo.html

    Observe d'ailleurs dans ce lien comment est construit Z à partir de X et Y ...

  5. #5
    Membre expérimenté
    Profil pro
    Loisir
    Inscrit en
    Novembre 2011
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Loisir

    Informations forums :
    Inscription : Novembre 2011
    Messages : 159
    Par défaut
    Bonjour,

    comme précisé par wiztricks, tu grilles les étapes. Regarde l'aide de plt.plot avec la fonction help(), regarde la longueur de x, y et imc avec len() et les dimensions avec np.ndim().

  6. #6
    Membre averti
    Homme Profil pro
    Professeur de guitare
    Inscrit en
    Mai 2017
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Professeur de guitare

    Informations forums :
    Inscription : Mai 2017
    Messages : 61
    Par défaut
    Citation Envoyé par Supernul Voir le message
    Bonjour,

    comme précisé par wiztricks, tu grilles les étapes. Regarde l'aide de plt.plot avec la fonction help(), regarde la longueur de x, y et imc avec len() et les dimensions avec np.ndim().
    Bonjour, peut être que je grille des étapes sans m'en rendre compte . Que proposez vous ? A force de tâtonner des langages sans objectif je ne sais plus quelle direction prendre. Du coup je me suis dit que dessiner des courbes serait relativement aisé. (?)

    Comment ouvres tu help () j'ai l'impression que tu m'indiques une manip depuis le terminal . Est ce possible depuis mon IDE ?
    Qu'entends tu par longueur de x ?

  7. #7
    Membre confirmé Avatar de racine carrée
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 156
    Par défaut
    Salut,
    Il suffit de tapper help(fonction) dans l'invite de commande python pour avoir de l'aide sur une fonction (ici c'est help(plt.plot))
    Pour accéder à cette invite de commande (terminal) on peut directement lancer le programme python.exe, mais normalement c'est aussi possible depuis l'IDE (qui devrait être composé de 2 parties normalement: une partie fichier, et une partie invite de commandes)
    Sinon, la longueur de x, c'est le nombre d'éléments (ici le nombre d'abcisses et donc de points à tracer) qu'il comporte, puisque c'est une liste (plot prend en argument deux listes de même taille: la liste des abcisses, et celle des ordonnées).
    ps: quel IDE utilises-tu ?

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par calixtus06 Voir le message
    peut être que je grille des étapes sans m'en rendre compte . Que proposez vous ?
    Vous voyez bien que vous avez des difficultés à comprendre les indications qu'on essaie de vous donner.
    Pourtant, si vous aviez potassé un peu les premiers chapitres de n'importe quel (bon) tuto. sur Python, vous n'auriez aucun soucis à avoir ce qu'est la console, une boucle, des conditions, des listes,...
    Ce boulot de prise en main est indispensable, histoire d'avoir un minimum de bases avant de partir à l'aventure comme utiliser numpy et matplotlib... et, même si çà va vous prendre du temps, personne ne pourra le faire à votre place...

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

Discussions similaires

  1. problème pour faire des blocs
    Par tinkye_winkye dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 04/01/2005, 14h13
  2. [SQL] problème pour faire ma requete
    Par seb.briet dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/12/2004, 16h51
  3. [FLASH MX2004] Problème pour faire un bouton play
    Par melanie075 dans le forum Flash
    Réponses: 13
    Dernier message: 16/12/2004, 22h55
  4. Réponses: 9
    Dernier message: 24/05/2003, 10h25

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