Python

Fermé
pecheur25 Messages postés 186 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 10 juillet 2013 - 5 oct. 2010 à 22:24
pecheur25 Messages postés 186 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 10 juillet 2013 - 8 oct. 2010 à 16:08
Bonjour,
Je suis dans un club scientifique dans mon lycée et on va mesurer des valeurs (de vitesse et de rotation du vent) toutes les 2 secondes, pour stocker ces valeurs nous avons penser à python mais comme personne ne sait réellement programmer, j'ai voulu essayé d'apprendre sauf que comme on aimerait bien que les mesures soient lancer au plus vite pour être dans notre planin puisque ces mesures seront effectuées sur 1 an. Avec python on a eu l'idée de copier ces valeurs dans un fichier texte et elles seront séparées par une virgule, et à chaque fois qu'il est minuit python ouvrirai un nouveau fichier texte et recommencerai ... ces valeurs seront copiées à partir d'un autre programme labview qui lui est réalisé, le seul problème est python sauf que personne n'a réellement de bases et j'ai pensé au forum pour voir si vous pouviez nous aider.
J'espère que vous pourrez, en vous remerciant d'avance.

4 réponses

- pk choisir python si personne ne le connait ?
- pk pas une base de données au lieu de fichiers textes ?
0
pecheur25 Messages postés 186 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 10 juillet 2013 18
6 oct. 2010 à 13:39
Oui, effectivement c'est pas faut, mais sauf qu'on ne voit pas comment faire autrement à part utiliser python : on cherche également à faire en sorte que les données prennent le moins de place possible d'où le choix d'un fichier texte au lieu d'un tableur ... par base de donnée, je vois ce que vous voulez dire mais comment faire ?
0
pecheur25 Messages postés 186 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 10 juillet 2013 18
6 oct. 2010 à 20:48
D'ailleur nous ne connaissons pas beaucoup de logiciel ou autres moyens de programmation qui pourrait nouservir et qui soit simple à utiliser c'est pour ça qu'on a choisit python au lieu du C ++ ou C
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
7 oct. 2010 à 12:32
- pk choisir python si personne ne le connait ?

Parce que s'ils connaissaient déjà un langage adapté à leur projet, ils n'auraient pas à faire un choix. C'est d'un bizarre cette question...

La vraie question, c'est « pk choisir Python plutôt qu'un autre langage ? »
Et là, les réponses sont faciles:

- parce que la rapidité avec laquelle, à partir d'une connaissance zéro de Python et même de la programmation, on parvient à écrire des programmes utiles est sans équivalent

- parce qu'il y a des tonnes de bibliothèques toutes prêtes à être utilisées

- parce que l'aptitude de Python à jouer le rôle de liant entre composants hétérogènes, aussi bien logiciels, langages de prog, qu'instruments scientifiques est un atout qui le rend tout à fait pertienent pour des utilisations scientifiques

- parce que Python a une grande portabilité

- parce qu'en tant que langage interprété, on peut l'utiliser de façon interactive + grâce à sa syntaxe désencombrée et à sa clarté, on peut modifier très rapidement des portions plus ou moins importantes d'un code ==> cela permet d'explorer rapidement des hypothèses, des pistes d'algorithmes, des outils, et de revenir en arrière et prendre d'autres directions de développement. Les codes Python sont malléables.

- parce qu'il y a une communauté importante auprès de laquelle on trouve facilement de l'aide

- parce que tous les types d'application sont possibles avec Python

- parce que je n'ai encore pas vu de programmeur expliquant qu'il avait fait une erreur en choisissant d'apprendre Python




- pk pas une base de données au lieu de fichiers textes ?

Parce qu'il leur faudrait apprendre le maniement d'une BDD en plus d'apprendre un langage de programmation.
Or pecheur25 dit qu'ils aimeraient commencer rapidement.





Non, y a pas de doute, il n'y a peut être pas que Python qui conviendrait (quoique je ne sache pas quel autre langage fournirait l'équivalent), mais il n'y a pas besoin d'un long examen pour conclure que Python est tout à fait adapté à l'objectif.





Je signale au passage la présence dans le Hors-série No 49 de Août-Septembre 2010 de Linux Magazine d'un article intitulé:
"Accès au matériel ave Python: capteurs et mesures"
dont voici la présentation:

Généralement, les langages interprétés de haut niveau ne se prêtent guère aux accès directs aux périphériques. Il faut cependant noter que Python possède quelques atouts intéressants dans ce domaine. Bien entendu, il ne s'agit pas ici de développer un pilote de périphérique, loin de là. le cas qui nous intéresse ici se résume à la communication série avec des modules de mesure.
0
pecheur25 Messages postés 186 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 10 juillet 2013 18
7 oct. 2010 à 18:20
merci beaucoup heyquem, pur info mon prénom c jérémy. Après je ne sais pas si avec python on peut "copier" les données d'un programme et les mettre dans un fichier texte, je suppose que oui mais après pour bien mettre en oeuvre le programme il faut trouver la bonne source pour débuter à apprendre python car pour l'instant je n'ai trouver d'un pdf expliquant comment apprendre python mais qui est essentiellement sur les maths ... à moins qu'il est surtout basé sur ça...
0
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 130
Modifié par heyquem le 8/10/2010 à 13:15
je n'ai trouvé qu'un pdf expliquant comment apprendre python mais qui est essentiellement sur les maths ... à moins qu'il soit surtout basé sur ça

Non , Python n'est pas cantonné à des traitements mathématiques.
Python n'est pas un langage spécialisé comme MATLAB, Scilab, GNU Octave, PROMELA, CDuce, Esterel.... C'est un langage généraliste interprété de haut niveau.

Qu'il soit interprété, j'y ai fait allusion dans mon post précédent. Pour ce qui est du haut niveau, ça ne veut pas dire qu'il est hyper sophistiqué, ça veut dire qu'il permet d'envisager le développement de programmes dans un mode de pensée proche de l'abstraction de l'esprit humain. Quand je dis "humain", c'est par opposition à "machine". Il y a des langages de bas niveau, DU bas niveau devrait on dire, c'est à dire qui obligent à s'occuper soi-même dans un programme de questions matérielles, notamment de la gestion de la mémoire. C'est le cas du langage C.

Si tu veux mieux comprendre ce que je raconte, fais une recherche sur les mots "garbage collector". Mais tu peux t'en passer allégrement aussi, pour le moment. Sache simplement que Python, comme Java, Ruby, Haskell.. et comme plein d'autres langages d'un plus haut niveau que C, s'occupe de la gestion de la mémoire, et qu'il n'y a donc pas à s'en soucier.

On peut ainsi consacrer son temps à des tâches intellectuelles plus en rapport avec l'objectif du programme qu'on veut écrire: la caractéristique d'un langage de haut-niveau, c'est de permettre de coder le plus possible comme on pense, c'est à dire en ne s'occupant que de l'aspect algorithmique d'un problème à traiter sans être obligé de se préocuper de tâches trop subalternes parasitant le fil conducteur.

Python est un des langages de niveaux d'abstraction les plus élevés: on écrit un code Python avec des composants (mots clés, fonctions built-in, syntaxe, modules, classes..) qui évoquent plus les actions qu'on veut déclencher que le comment le font les outils. Mais Python possède deux avantages supplémentaire:
- du fait de sa syntaxe claire qui vise la simplicité, il permet de coder comme on "parle" sa pensée, ce qui n'est pas le cas de Ruby et Perl, aux syntaxes plus condensées, et même cabalistique pour Perl, qui font un peu écran par rapport aux concepts mis en jeu dans un programme
- Python offre tout de même des facilités de réalisation des tâches techniques orientées vers la gestion du système ou le contrôle d'instruments.

Enfin bref, tout ça pour dire que toute cette abstraction et ces aptitudes ont été amplement mises à profit par une vaste communauté de développeurs pour la réalisation de toutes les applications concevables. Et comme les principes de la conception de base de Python ont été bien choisis, ce langage est apte à assurer des applications d'une grande diversité. Dans cette variété, il y a entre autres le maniement des fichiers et des textes, dans lequel Python est même particulièrement habile et pratique, à l'instar d'un Perl. Donc pas de souci de ce coté là.




Concernant un tutoriel, je ne sais pas quel conseil donner.

Celui de Swinnen est abondamment loué mais moi je ne l'aime pas trop. Il est assez bien adapté à l'apprentissage pour quelqu'un qui n'a jamais fait de programmation, c'est pour ça qu'il s'étale dans des explications parfois longuettes et qui ne vont en fait pas très en profondeur.

Le livre Dive into Python est plein d'intelligence, mais je ne crois pas qu'il soit adapté à une débutant. Il a une façon de présenter les choses, sans progressivité dans les exemples, qui n'est pas le mieux quand on débarque soit en prog soit en Python. Quand je le lisais au début, je n'y comprenais rien.

Il y a les cours sur Python sur
https://python.developpez.com/cours/
Mais ils sont trop copieux pour un débutant et plus tout à fait à la page.

Tu peux essayer de trouver ton bonheur dans cette page
http://www.python-eggs.org/?row=0

Il y a un cours sur Python sur le Site du Zéro. Je ne peux pas le critiquer trop fortement parce que je ne l'ai pas beaucoup lu, mais je pense qu'il faut s'en méfier. J'y ai lu des choses contestables qui me font douter de la qualité de l'ensemble, et je ne suis pas le seul.

Il y a une source bien plus autorisée et fiable: la doc officielle sur https://www.python.org/
Il faut chercher dans la rubrique DOCUMENTATION
Mais c'est prolifique, ça peut impressioner au début.





En fait, je n'arrive pas non plus à trouver de tutoriel allant à l'essentiel sans trop de blabla mais sans être incompréhensible, bien fait et agréable, sur Python.
C'est pour ça que je suis assez partisan de la démarche qui consiste à plonger dans le bain sans faire trop de préalables et sans se laisser impressionner. Se dire: qu'est ce que je veux faire ?, chercher sur google-yahoo-bing-hotmail... des références au sujet qu'on se donne, et foncer.

Et s'aider de la FAQ Python suivante qui est pas mal:
https://python.developpez.com/faq/
c'est encore le mieux pour avancer rapidement mais précisément à mon avis.

Et poser des questions sur les forums.





D'ailleurs ...
je ne sais pas si avec python on peut "copier" les données d'un programme et les mettre dans un fichier texte
Bien sûr, bien sûr.
Qu'est ce que tu entends par « données d'un programme » ? Je suppose qu'il s'agit des 43200 mesures d'une journée.

La façon de mesurer les grandeurs physiques qui vous intéressent avec un capteur, puis de les acheminer vers l'ordinateur, c'est à vous de voir, parce que je ne suis pas spécialement compétent sur cette partie.

Mais ensuite, c'est fastoche.
Admettons que vous ayez 43200 valeurs dans une liste li :
[ 234,254,324,124,246,387,.....etc ]
Pour mettre ça dans un fichier plat:

f = open('journee_7_octobre_2010','w')
li_chaines = map(str,li)
f.write( '\n'.join(li_chaines) )
f.close()

et voilà.

Petite explication:
les éléments de li sont des nombres entiers. Pour écrire dans un fichier texte, il faut avoir une chaîne à écrire.

La fonction map() appliquée à li avec la fonction str() fait ceci: elle transforme tous les éléments de li en leur appliquant la fonction str(), c'est à dire en remplaçant un élément nombre entier par la chaîne qui représente cet entier sous forme ... de chaîne de caractères.

Ensuite, regarde dans la doc ce que fait join().

Le liant '\n' est un "caractère" qui lorsqu'il est lu et interprété par un moteur de rendu d'affichage provoque un saut à la ligne. C'est ainsi qu'on obteint des lignes dans un affichage.





Mais ce n'est pas la meilleure façon de faire.

Le module cPickle permet d'enregistrer en fichier des objets directement sous leur nature, c'est à dire sans avoir à en obtenir une représentation sous forme de chaîne.

La fonction cPickle.dump() enregistre l'objet dans un fichier en le sérialisant, c'est à dire en en faisant un flux d'octets.

La fonction cPickle.load() fait l'inverse: elle lit un fichier contenant des objets sérialisés et elle rapatrie ces objets dans un programme en les déserialisant.



Voici comment ça se passe:

li = [23,45,23,76,45,89]

from cPickle import dump,load

f = open('journee_7_octobre_2010','w')
dump(li,f)
f.close()

f = open('journee_7_octobre_2010','r')
liste = load(f)
f.close()

print 'id(li)    =',id(li)
print 'id(liste) =',id(liste)
print 'adresse de li==adresse de liste  est :',id(li)==id(liste)
print ' valeur de li== valeur de liste  est :',li==liste

fastoche, isn't it ?

= est un opérateur d'affectation: X = 10 signifie "X prend la valeur 10"
(en fait attention, en Python ça ne se passe pas véritablement comme ça. En réalité un objet 10 est créé en mémoire et une référence X enregistre son adresse. Voilà, comme ça tu sais déjà un truc essentiel que même des pythonistes depuis 3 ans n'ont jamais réalisé.)

== signifie "est égal à" . C'est pour faire des tests.

La fonction id() fournit l'adresse d'un objet en mémoire vive.
Le fait que id(li)==id(liste) est False traduit que li et liste sont deux objets différents, ce qui montre que dump() et load() ont bien fait quelque chose.

Mais les éléments de li et liste sont identiques et leurs valeurs globales sont donc identiques:
li==liste est True.
C'est bien ce qui est attendu...





Bon, j'ai été plus long que je ne voulais, mais te voilà ainsi en piste. À toi de voir si tu as envie de continuer avec Python.

Essaie d'aller sur des forums C++ et Java et demande comment faire pour enregistrer des valeurs dans un fichier. Je serais curieux de voir les réponses et les préalables nécessaires avant de parvenir à faire tourner un programme.


En Perl, ce serait aussi assez facile, mais le problème c'est que la variété d'applications offerte par Perl est moins étendue et ce serait embêtant pour l'avenir. Du moins c'est ce que j'en ai comme idée, qui demanderait à être argumentée. Cependant j'ai déjà trouvé cet avis autorisé:

Perl permet de développer tout type d'applications (déconseillé pour le calcul scientifique).
http://articles.mongueurs.net/magazines/linuxmag39.html</code>




Comme je ne veux rien cacher, je signale aussi l'aticle suivant qui dit que Ruby est le meilleur:
http://www.eyrolles.com/Informatique/Interviews/LJulliard/
Apparemment, Ruby pourrait être utile et rapidement mobilisable pour votre projet, lui aussi. À voir concrètement, là aussi.



Enfin, en cherchant encore je suis tombé sur le livre suivant dont le principe me plait bien, car il est à espérer qu'on y trouve des considérations objectives:
Comment choisir un langage de programmation.
http://www.h-k.fr/publications/technique_et_pratique.html#CCLP
0
pecheur25 Messages postés 186 Date d'inscription lundi 4 août 2008 Statut Membre Dernière intervention 10 juillet 2013 18
8 oct. 2010 à 16:08
Merci beaucoup ! Je vais éssayé de voir avec ton aide précieuse et te retiens en cas de problème ! ;) bonne fin de journée !
0