Home
0a-IntroPython - BCPST2 ENCPB--Lycée Pierre
Contents
1. PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a 2 0 b 3 print type a type b print atb a b axb a b a b print atb gt axb print a b b a b xb a b print bxxa axxb Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Comparer l exemple pr c dent Python comprend les nombres complexes Le nombre i s crit 1j Le nombre 3 2i s crit 3 2j j doit toujours tre pr c d d un nombre entier ou r el Les op rateurs arithm tiques sont les m mes que pour les nombres r els Les op rateurs de comparaison autres que l galit ou la diff rence n ont pas de sens pourquoi On peut r cup rer partie r elle et partie imaginaire d un objet de type nombre complexe en utilisant la notation d attributs associ s un objet Un nombre complexe n est que le couple de ses parties r elle et imaginaire Si z est un objet de type complex que celui ci soit r f renc par une tiquette soit le r sultat d une expression etc alors z real et z imag parties r elle et imaginaire de z sont des objets de type float PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a 2 0 1 b 3 0 c 3 print type a type b typel c print atb a b axb a b print axx2 real axx2 imag axx2 c axb bxa print type c c print atb gt axb Clique
2. les programmes que nous avons rencontr s jusqu pr sent ont une ex cution lin aire ils sont compos s d une suite d instructions que l on ex cute l une apr s l autre dans PythonTutor chaque clic sur Forward gt la fl che verte descend d une ligne Un programme informatique en g n ral n a pas ce comportement lin aire On doit avoir la possibilit de sauter directement d une ligne d instruction une autre qui peut tre situ e en amont ou en aval dans le texte Ce saut peut tre conditionn ou pas i e ne s effectuer que si une certaine condition est vraie En Python ceci est impl ment via trois instructions if while et for L instruction i f permet de sauter en avant dans le d roulement du programme Les deux autres instructions permettent de sauter en arri re 2 3 1 Ex cution conditionnelle i f L instruction if dans sa version la plus simple permet d ex cuter un ensemble d instructions pourvu qu un certain objet bool en p soit la valeur True Son insertion dans le programme suit le sch ma suivant amont L bloc aval Le d roulement du programme est le suivant la suite d instructions amont est ex cut e jusqu ce que le curseur arrive if p p est un objet peut tre issu du calcul d une expression de type bool en qui est valu Deux possibilit s s offrent alors Si p vaut True la suite d instructions bloc puis la suite d
3. instructions aval sont ex cut es Si p vaut False la suite d instructions bloc n est pas ex cut e et on saute directement l ex cution de la suite d instructions aval La suite d instructions bloc est appel e le bloc de programme associ l instruction conditionnelle if p Un bloc de programme Python associ une instruction de contr le se rep re au en fin d instruction de contr le et est d limit uniquement par l indentation de 4 espaces relativement au d but de l instruction de contr le Il est crucial lors de la saisie du texte du programme de respecter les indentations du texte PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a 0 1 fin amontl if a lt axa debut blocl print a est inferieur a son carre print coucou fin blocli print on continue le programme a 1 1 debut avall fin amont2 if a lt axa debut bloc2 print a est inferieur a son carre print coucou fin bloc2 print c est la derniere ligne debut aval2 Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Bien observer la fa on dont la fl che verte se d place par sauts ou pas On voit dans cet exemple deux blocs de programmes marqu s par les commentaires commen ant par associ s aux deux if successifs Dans les deux cas l objet bool en valu est l expression lt axa issue
4. rence l objet bool en r sultat du test d galit de deux entiers T tiquette b r f rence l objet bool en r sultat du test de comparaison gt de deux entiers l tiquette c r f rence l objet bool en r sultat du test de comparaison lt de deux entiers on imprime les valeurs de a b et c PET O Er RS N ES on imprime les r sultats des op rations a et b a ou b non a et b ou c 2 2 2 Les entiers Un objet de type int repr sentant un nombre entier se d finit soit en le d clarant explicitement sous forme d cimale a 2 soit comme le r sultat d op rations sur des objets menant un entier p ex a b 2 3 pourvu que b soit un entier Les op rateurs arithm tiques autoris s sont 1 la somme la diff rence x le produit 2 la division ce r sultat peut tre de type r el si la division ne tombe pas juste 3 respectivement le reste et le quotient dans la division euclidienne 4 xx l exponentiation a xb calcule a Les expressions peuvent tre parenth s es avec les r gles usuelles de priorit s On peut comparer deux expressions enti res le r sultat tant alors un bool en Les op rateurs de comparaison ils ne sont pas forc ment sp cifiques aux entiers sont 1 l galit 2 la diff rence 3 les deux in galit s strictes gt et lt 4 les deux in galit s larges gt et lt PythonTutor Entrez le texte suivant dans la fenetre de cod
5. y placer des commentaires
6. du r sultat d une comparaison Une version plus labor e de l instruction i f permet d effectuer un bloc de programme si l objet bool en test est vrai et un autre bloc de programme s il est faux c est la forme if else Son insertion dans le programme suit le sch ma suivant amont if p blocv else blocF aval Le d roulement du programme est le suivant la suite d instructions amont est ex cut e jusqu ce que le curseur arrive if p Deux possibilit s s offrent alors Sip vaut True le bloc de programme b1ocV est ex cut puis on saute directement l ex cution de la suite d instructions aval Si p vaut False le bloc de programme blocV n est pas ex cut le bloc de programme blocF est ex cut et on continue l ex cution de la suite d instructions aval PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a 0 1 fin amontl if a lt axa debut blocV1 print a est inferieur a son carre fin blocV1 else debut blocF1 print a est superieur strict a son carre fin blocFi print on continue le programme a 1 1 debut avall fin amont2 if a lt axa debut blocv2 print a est inferieur a son carre fin blocv2 else debut blocF2 print a est superieur strict a son carre fin blocF2 print c est la derniere ligne debut aval2 Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la p
7. et Backward lt et observez la progression dans le code Que se passe t il CAE D l objet 1 2 est cr l tiquette a le r f rence l objet 1 3 est cr l tiquette b le r f rence On cr e l objet somme des objets r f renc s par a et b Celui ci est r f renc par l tiquette c On affiche les identit s de ces diff rents objets On recr e l objet somme des objets objets r f renc s par a et b Celui ci est r f renc par tiquette a On affiche les identit s de ces diff rents objets b L tiquette a vient de changer d objet r f renc Les objets r f renc s par a et c ont m me valeur ils n ont pourtant pas forc ment m me identit Notre premi re instruction de contr le if On teste l galit de a et c ici on teste s ils ont m me valeur ce qui est caract ristique des tiquettes r f ren ant des types num riques On verra sur d autres exemples que pour les autres types la comparaison est une comparaison d identit 2 2 Les types d objets fondamentaux En Python tout est objet Il y a cependant une hi rarchie des objets relativement leur complexit On va en dresser une liste pratique non exhaustive Pour la liste compl te difficilement compr hensible pour un novice on peut se r f rer https docs python org 3 3 reference datamodel html Les objets les plus simples sont les objets de type num riques simples bool ens en
8. 0 len s 1 s 1 le dernier caract re de la cha ne s On peut lire la cha ne l envers avec des indices n gatifs s i j la sous cha ne comprise entre les indices i et j x in s retourne un bool en vrai si et seulement si x est une sous cha ne de s x not in s retourne un bool en vrai si et seulement i x n est pas une sous cha ne de s di ST ON EN ER Os PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor s abcdef t wxyz l len s m len t print type s type t type l type m l m print s tt type s t len s t u s t v u 2 4 print u v prine a an u a in Y print min bcade print max acebd Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code 2 2 5 t uples Les cha nes que nous venons de voir sont des cas particulier d un type d objet conteneur plus g n ral le t uple Un t uple permet de grouper un nombre fini d objets de types h t rog nes en une suite finie et ordonn e La syntaxe est d crire la liste des objets en commen ant par une parenth se ouvrante de s parer les objets par des virgules et de finir la liste par une parenth se fermante Les commandes agissant sur une telle suite sont tr s similaires celles agissant sur les cha nes de caract res PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor
9. Ex cutez ce script La fonction f est maintenant d finie i e il s agit d un objet Python occupant une place physique en m moire et nous pouvons l utiliser dans la console Si par exemple nous voulons en tracer le graphe IPython Entrez les lignes suivantes dans la console IPython x np linspace 0 0 0 5 500 pit plot x x 3 3 Utiliser les modules Dans le script xexpx py de l exemple pr c dent il y a deux commandes d utilisation de modules import Les deux modules concern s numpy et mathplotlib pyplot sont des modules d di s au calcul scientifique Le code les renomme respectivement np et plt ce qui est la fa on standard pour les surnommer Les sites http matplotlib org et http www numpy org contiennent outre la documentation compl te de ces modules en anglais des exemples d utilisation tr s tr s instructifs Nous les utiliserons syst matiquement Ceci signifie que vos scripts contiendront quasiment toujours ces deux directives d importation La fonction np exp est la fonction exp d finie dans le module surnomm np i e le module numpy La fonction plt plot est la fonction plot d finie dans le module surnomm p1t i e le sous modulematplotlib pyplot On peut crire ses propres modules sans aucune difficult ce qui permet de placer les fonctions relatives un type d objet personnalis dans un fichier autonome et donc de segmenter le travail Pyzo Ajoutez le text
10. Lyc e Pierre Gilles de Gennes BCPST2 Math matiques 2015 2016 Feuille de TP Python 01 Introduction Python en BCPST 1 Python en BCPST kezako Python est un langage de programmation g n raliste et universel Il a notamment t adopt par le MIT pour ses cours d introduction l informatique Il est disponible sur tous les types de machines contemporaines Conna tre le b a ba de Python c est donc mettre un pied dans le monde de l informatique au sens le plus large possible Conna tre le b a ba de Python et ce sera notre modeste but cette ann e est aussi un moyen efficace de tester exp rimenter simuler et illustrer les notions au programme de l ann e Nous allons donc explorer le versant scientifique de Python L objectif de cette s rie de TD TP est d une part de vous permettre de d velopper un petit projet dont le th me sera li celui de votre TIPE que vous devrez exposer l oral et d autre part d acqu rir le minimum d aisance pour tre en mesure d aborder les questions de programmation et d interpr tations graphiques lors des preuves d crit et d oral Il n est pas possible d tre exhaustif et pour les compl ments d information quelques recherches sur Internet ou dans l aide en ligne de Python deviennent tr s vite n cessaires 2 Tous premiers pas en Python Il faudra que vous ayiez tr s rapidement sur vos machines personnelles l environnement de d veloppement
11. Pyzo Python3 3 disponible l adresse http www pyzo org downloads html En attendant d avoir une installation fonctionnelle on peut aller sur PythonTutor http pythontutor com visualize html mode edit qui va nous permettre d illustrer notre propos pr liminaire Il faut choisir d utiliser Python3 3 sinon le code ne se comportera pas toujours comme pr vu Vous pouvez copier coller les bouts de code du texte dans PythonTutor Il faut faire attention respecter les indentations le nombre d espace au d but de chaque ligne car celles ci ont une signification importante dans le langage PythonTutor permet via une ex cution pas pas de comprendre comment et surtout dans quel ordre les instructions s ex cutent Il montre comment se cr ent et disparaissent des objets nombres fonctions tableaux dans la m moire de l ordina teur Son utilisation est limit e de petits programmes mais est tr s instructive Python est un langage interpr t qui peut s utiliser par l interm diaire d une console dans laquelle on entre les commandes ou par l ex cution d un fichier texte un script ou un programme qui contient les commandes Python 2 1 Objets et tiquettes Le premier point comprendre est que Python traite avec des objets C est la fa on dont Python stocke les donn es les organise et permet leur utilisation Ces objets sont pratiquement parlant des zones de la m moire identifi es une tell
12. a abcdef pi 3 14 1n2 0 69 tuple_nimp a ln2 pi True 3 gt 2 and 1 gt 0 print type tuple_ nimp print len tuple_ nimp tuple_nimp2 1 2 j ahah print len tuple_ nimp2 tuple_nimp3 tuple nimp tuple_ nimp2 2 6 print id tuple nimp3 tuple_nimp3 1 hihi tuple_nimp3 tuple_ nimp3 0 hihi tuple_ nimp3 2 print id tuple nimp3 Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Il faut absolument remarquer que la ligne avec est ill gale enlevez le et faites tourner le script on ne peut pas changer l identit d un l ment particulier d un t uple On pourra par contre construire un nouveau t uple partir d un t uple existant comme dans l avant derni re ligne La syntaxe objet permet de fabriquer un t uple ne contenant qu un l ment 2 2 6 Listes Les t uples les cha nes de caract res les nombres sont des objets immuables On ne peut changer leur valeur la valeur d un t uple est la liste des identit s des composants La derni re structure importante pour cette introduction est une structure mutable la structure de liste Disons grossi re ment qu il s agit de la variante du type t uple qui autorise la modification des composants La syntaxe est d crire la liste des objets en commen ant par un crochet ouvrant de s parer les objets par des virgules et de finir la liste par un
13. a 2 1 if axa lt 2 a print le carre de a est inferieur a son double if axa lt a print a est inferieur a son carre else print a est superieur strict a son carre else print le carre de a est strict superieur a son double if axa lt a print a est inferieur a son carre else print a est superieur strict a son carre print fin du programme Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code On a la d sagr able impression d avoir recopi 4 fois la m me chose on r glera ce probl me en 2 4 Ceci dit on a en comptant grossi rement 4 possibilit s de sortie pour une valeur de a donn e Est ce qu une analyse math matique un peu plus fine permettrait de montrer qu un cas ne peut jamais arriver Pour finir sur i f on peut signaler la construction elif permettant de contracter des else if successifs amont dE EL blocvi elif p2 blocFrir2v2 elif p3 blocrir2V3 blocF1ir2F3 aval 2 3 2 Boucle avec condition de continuation while L instruction while permet de recommencer une suite d instructions le bloc de programme associ cette instruction de contr le tant qu un certain objet bool en p est la valeur True Son insertion dans le programme suit le sch ma suivant amont while p bloc aval Le d roulement du programme est le suivant la suite d instructions amont est ex cut e j
14. a lt a print a est inferieur a son carre else print a est superieur strict a son carre def f a if axa lt 2xa print le carre de a est inferieur a son double else print le carre de ra est strict superieur a son double def cont une fonction sans argument print on continue le programme debut du programme principal liste 0 1 1 1 1 1 2 1 imprime _cont False for X in liste if imprime_cont cont f x g x print fin du programme Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Pour finir les objets fonctions peuvent tre mis en listes recevoir d autres tiquettes que celle re ue initialement tre eux m mes arguments de fonctions PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor def f1 x print x L K lt O return 2 0 xx else return 3 0xx def f2 x return x def f3 z return z z def g x 4 return x f x def h f def phi x return xxf x return phi T E2 2 print type f print f 01 2 f 1 1 2 f 21 2 print g f 01 2 psi h f 01 aree t oE print psi 2 Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Pourquoi les r sultats affich s aux lignes 20 et 23 sont ils identiques Comprendre la nature des objets r f renc s p
15. amme f 1 1 print on continue le programme ET 1 print on continue le programme E 21 print fin du programme Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code On voit qu on y a gagn au plan de la lisibilit et de la maintenance si on doit changer un texte il suffit de le changer une fois dans le corps de la fonction f Le texte qui tait crit 4 fois ne l est plus qu une Cependant ce code n est pas enti rement factoris Voici une version am lior e PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor def g a if axa lt a print a est inferieur a son carre else print a est superieur strict a son carre def f a if axa lt 2xa print le carre de a est inferieur a son double g a else print le carre de a est strict superieur a son double g a def cont une fonction sans argument print on continue le programme debut du programme principal E 01 cont f 1 1 cont f 1 1 cont 2 1 print fin du programme Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Et finalement la version la plus l gante en utilisant une liste et une boucle for PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor def g a if ax
16. ar les tiquettes 2 5 Modules externes Lorsque l on prend Python nu seules les instructions de contr le et objets et fonctions de base comme print sont d finies en anglais built in Il est clair que l on ne peut r inventer la roue chaque fois et des communaut s de d veloppeurs ont crit et crivent encore de nouveaux types d objets et de nouvelles fonctions nous permettant d avancer un peu Ces nouvelles fonctionnalit s sont regroup es dans des scripts particuliers les modules On peut par exemple faire du calcul scientifique la MatLab en utilisant les modules numpy scipy et sympy avoir des fonctionnalit s graphiques avanc es en utilisant le module matplotlib etc PythonTutor n admet le chargement que de tr s peu de modules A titre d exemple les fonctions math matiques avanc es celles d une calculatrice scientifique du commerce sont regroup es dans un module standard nomm math Nous ne nous en servirons pas pendant l ann e mais PythonTutor accepte de le charger Nous commen ons par importer le module dans notre script ce qui nous permettra d utiliser la fonction exponentielle dont l tiquette originale est math exp De m me la constante r elle m est d finie dans module comme tant math pi PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor import math e math exp 1 print type e e print type math exp print math pi Cliq
17. crochet fermant Les commandes agissant sur une telle suite sont tr s similaires celles agissant sur les t uple auxquelles on ajoute les commandes permettant la modification des composants PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a abcdef pi 3 14 1n2 0 69 liste _nimp a ln2 pi True 3 gt 2 and 1 gt 0 print type liste_nimp print len liste _nimp liste_nimp2 1 2 5 ahah print len liste _nimp2 liste _nimp3 liste nimptliste _nimp2 2 6 print id liste nimp3 liste_nimp3 1 hihi print id liste _nimp3 liste _nimp extend liste _nimp2 liste_nimpd liste nimp 2 6 print id liste nimpd liste _nimp4 3 2 71 print liste _nimp31 3 Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Remarquer la syntaxe de m thode associ e un objet utilis e dans la ligne liste _nimp extend liste_nimp2 Cette syntaxe est du type objet methode argument Elle permet d appliquer une fonction un objet En quelque sorte cette syntaxe permet la fonction de faire partie int grante de la sp cification du type d objet Que fait la commande Elle dit liste Liste_nimp de prendre la liste pass e en argument et de se l ajouter elle m me en fin de liste On peut bien videmment faire des listes de listes on peut faire des listes de n importe quoi des listes de t uples des t u
18. e Une utilisation simple de la boucle while est la r p tition d une action un certain nombre de fois fix l avance PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor i 0 nb_tours 10 while i lt nb_ tours i i 1 print c est le tour numero i prine OR a fart i tours Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code De m me l exemple suivant trouve l indice de la premi re occurrence d un caract re dans une cha ne de caract res PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor s abcdefgh car e nb_ tours max lent s car_trouve False i 0 while i lt nb_tours max and not car _ trouve car_trouve s i car i i 1 if i nb_tours_max print car n est pas dans s else print La premiere occurence de car dans s est a l indice i 1 Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code 2 3 3 It ration for L instruction for permet de parcourir dans l ordre une liste au sens large ce peut tre un t uple une cha ne de caract re d objets et d appliquer une suite d instructions le bloc de programme associ l instruction for chacun des objets de la liste Son insertion dans le programme suit le sch ma suivant amont for x in liste bloc aval L
19. e bloc seulement l objet r f renc par x dans le bloc principal du programme Dans la variante suivante l objet r f renc par l tiquette y utilis e dans le bloc principal est visible depuis le bloc de d finition de la fonction L objet r f renc par l tiquette x utilis e dans le bloc principal n est visible pas depuis le bloc de d finition de la fonction PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor def f x prine 2 LE x lt 0 return 2 0 x else return yxx x 3 0 print x y 3 a f 2 print ay y 4 a f 2 print a y Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code L utilisation de fonctions permet la factorisation du code c est dire viter le pr sence de bouts de code similaires diff rents emplacements du code On reprend l exemple de la section sur if PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor def f a if axa lt 2 xa print le carre de if axa lt a print a est inferieur a son carre a est inferieur a son double else print a est superieur strict a son carre else print le carre de if axa lt a a est strict superieur a son double print a est inferieur a son carre else print a est superieur strict a son carre debut du programme principal f 0 1 print on continue le progr
20. e d roulement du programme est le suivant la suite d instructions amont est ex cut e jusqu ce que le curseur arrive for x in liste liste est une liste d objets ou un t uple l tiquette x r f rence le premier objet de la liste et le bloc de programme bloc est ex cut puis l tiquette x r f rence le deuxi me objet de la liste et le bloc de programme bloc est ex cut puis l tiquette x r f rence le troisi me objet de la liste et le bloc de programme bloc est ex cut et ainsi de suite jusqu puisement de la liste la suite d instructions aval est alors ex cut e Une utilisation simple de la boucle for est la r p tition d une action un certain nombre de fois fix l avance N Il faut cr er une liste des nombres entiers compris entre 0 et N 1 et boucler sur cette liste d entiers Observer l utilisation de la fonction range cet effet En Python3 3 l objet d fini par range n est pas une liste d entiers Il s agit d un it rateur notion hors pro gramme PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor nb_tours 10 for i in range nb_ tours print c est le tour numero i prine On a fait ALL tours print range nb tours Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code On peut boucler sur d autres listes et si le
21. e de PythonTutor a 2 p 3 print print print print print print type a type b atb a b axb a b a b a b gt axb a bxb a bxb a b a bxb a bxb a b bxxa axxb Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Expliquer les r sultats des deux derni res lignes 2 2 3 R els et complexes Un objet de type float repr sentant un nombre r el se d finit soit en le d clarant explicitement sous forme d cimale a 2 0 pi 3 141592 soit comme le r sultat d op rations sur des objets menant un nombre r el p ex c b 2 x3 a Les op rateurs arithm tiques et de comparaison sont les m mes que pour les nombres entiers l exception notable de et 2 5 PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a 2 0 b 3 0 print type a type b print atb a b axb a b a b print atb gt axb print a bxb a bxb a b print bxxa axxb Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Expliquer les r sultats des deux derni res lignes et comparer l exemple pr c dent On peut m langer des op rations portant sur les entiers et les r els un entier sera alors transform naturellement en r el SI par hasard vous utilisez Python2 7 les divisions enti res ne se comporte pas de la m me fa on ce qui peut tre source d erreur
22. e suivant au fichier monmodule py def mafonction x print Ma premi re fonction en module son argument vaut x N oubliez pas de sauver le fichier Pyzo Ajoutez le texte suivant au fichier testmodule py import monmodule as mm mm mafonction 2 mm mafonction haha N oubliez pas de sauver le fichier Ex cutez uniquement testmodule py Il donne le r sultat escompt si le module est dans le m me r pertoire que ce script On peut avoir des scripts qui sont la fois des modules et des programmes principaux Cela permet dans le corps du script d inclure des tests des fonctionnalit s du module Ces tests ne sont pas ex cut s lorsque le script est utilis en tant que module Pyzo Modifiez le fichier monmodule py de la fa on suivante def mafonction x print Ma premi re fonction en module son argument vaut x au cas ou ce script serait appele directement on peut mettre des ftests du module LE name_ _main__ mafonction li mafonction truc N oubliez pas de sauver le fichier 3 4 Syst me d aide documenter et commenter son code Pour obtenir la syntaxe d une fonction particuli re ou la documentation d un objet il suffit d utiliser la fonction help dans la console Par exemple en tapant help np exp dans la console IPython on obtient la documentation de la fonction exp du module np a k a numpy Faites maintenant la m me chose en tapant help
23. e zone contenant le code d crivant un objet N oubliez jamais qu une zone m moire contient une suite de bits chacun d entre eux pouvant valoir O ou 1 Un objet Python et plus g n ralement tout ce que vous rencontrez dans votre environnement informatis quotidien est cod par une suite suffisamment longue de 0 et de 1 Chaque objet poss de une identit un type et une valeur Un objet est r f renc dans le script par une tiquette aussi appel un identificateur L utilisation de ces tiquettes est similaire celle des variables d un autre langage de programmation ou d un fragment de discours math matique Le type d un objet Python est similaire au type d un objet math matique nombres fonctions ensembles matrices On cr un objet en crivant une expression on lui affecte est l op rateur d affectation une tiquette on l utilise en le r f ren ant par cette tiquette et quand on n a plus besoin de lui soit on le d truit volontairement instruction del soit il se fait d truire par l interpr teur PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a 1 2 print type a print idi a b a print a 1 3 Print id b id a id b Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Que fait on que voit on 1 Premi re tape On a cr l objet un no
24. f o f est l tiquette de la fonction f que l on d finit dans le script Le r sultat n est que peu signifiant On aimerait bien surtout si on doit r utiliser les objets d finis qu apparaisse un mode d emploi succinct des objets que nous d finissons Pyzo Modifiez le fichier xexpx py de la fa on suivante import numpy as np import matplotlib pyplot as plt def f x Calcule x exp x LLES LE LI return xxnp exp x on utilise np exp qui applique l exponentiell a un tableau de nombres N oubliez pas de sauver le fichier Executez et utilisez l inspecteur sur f C est plus satisfaisant Les documentations de niveau professionnel ressemblent ceci Pyzo Modifiez le fichier xexpx py de la fa on suivante import numpy as np import matplotlib pyplot as plt def f x Calcule x exp x Parameters x 4 ndarray Un tableau de nombres reels Returns res ndarray La fonction x gt x exp x appliquee a x return xxnp exp x N oubliez pas de sauver le fichier Executez et utilisez l inspecteur sur C est encore plus satisfaisant Le code que vous crivez doit tre int gralement document et comment Un commentaire commence par le caract re Les commentaires ne sont pas lus par l interpr teur et sont destin s vous m me ou toute autre personne qui doit lire et comprendre votre code Il est extr mement important de documenter votre travail et d
25. ire est d organiser votre espace de travail en r pertoires sous r pertoires etc Mon conseil est d utiliser un r pertoire par TD TP et un r pertoire pour le projet Evitez notamment pour le projet de faire un r pertoire par session de travail la duplication des fichiers apporte beaucoup de confusion Que ce soit pour les noms de repertoires de fichiers etc n utilisez que les caract res alphanum riques NON ACCENTUES et _ ne mettez pas d espace L environnement de travail de Pyzo permet d ex cuter votre script ceci peut se faire suivant deux modes Le mode script le r pertoire de travail est alors celui de votre script un nouvel interpr teur vide est lanc Le mode console le script est excut dans la console active Pour ce dernier mode il faut faire attention au r pertoire dans lequel on travaille surtout la premi re ex cution On peut afficher le nom du repertoire de travail par la commande pwa lister son contenu par la commande 1s et changer de repertoire par la commande cd nouveau_ rep La commande cd permet de remonter dans la hi rarchie des r pertoires Si vous n tes pas dans le bon repertoire de travail Python ne trouvera pas vos donn es les modules personnels etc L dition d un nouveau script se fait en cliquant sur le menu Fichier gt Nouveau la sauvegarde en cliquant sur Fichier gt Sauvegarder etc Pyzo Ajoutez le texte suivant au fichier hello py p
26. mbre r el 1 2 de type float que l on a tiquet a On voit cet objet appara tre dans la m moire principale Global Frame de l interpr teur sur la droite Deuxi me tape on demande Python d afficher print le type type de l objet r f renc par l tiquette a 3 Troisi me tape on demande Python d afficher print l identit id de l objet r f renc par l tiquette a C est S 6 un code interne l interpr teur dont nous ne nous servirons pas Quatri me tape on introduit une tiquette b et l on d clare que l objet r f renc par b est le m me que celui r f renc par a Cinqui me tape on a cr l objet de type float 1 3 et on le r f rence l aide de l tiquette a On demande d afficher les identit s de a et b On constate que celles ci sont diff rentes On peut faire des op rations sur des objets pour cr er de nouveaux objets que l on peut tiqueter Ici on va additionner des nombres r els On peut aussi faire des comparaisons et suivant le r sultat vrai ou faux de cette comparaison effectuer une ou des op rations PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a 1 2 b 1 3 c a b PEINE a a b prine id a id b id c id a id b id c if a c prine a vaut ce if a c print a est different de c Cliquez sur Visualize avancez ou reculez avec Forward gt
27. ne console Python interactive proche dans l esprit de la console de Matlab pour ceux qui connaissent Lancer Pyzo en cliquant sur la bonne ic ne icone dans le lanceur d applications partir du dossier d installation On doit pouvoir installer cette don py Vhome jcleger BCPST fornV2015 01 RevisionsRapidesAnalyse python integration py Interactive Editor for Pyth X jon Affichage Param tres Shell Ex cuter Outils Aide g E Fie bronsor an C amp pnron F mome ciegercPsrpyton put doc on free sh FIGURE 1 Pyzo l ouverture Par d faut s ouvre une fen tre divis e en quatre parties voir figure 1 La partie en bas gauche est l diteur de scripts C est l o l on crit les programmes destin s tre sauv s dans des fichiers La partie en haut est la console IPython de l on peut lancer un script placer des commandes Python ex cut es imm diatement demander de l aide help objet help commande voir certains r sultats graphiques etc La partie en bas droite comprend d une part une description des objets d finis dans le code source et d autre part un explorateur de fichiers On peut changer ces fen tres en allant dans le menu Outils 3 1 Edition et execution de scripts Lors des TD TP ou de la r alisation de votre projet vous aurez crire des scripts que ce soit les programmes principaux ou des modules La premi re chose fa
28. ples de listes Ce peut tre utile pour coder des vecteurs des matrices une liste de vecteurs des graphes etc PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor liste _disparate tf 0 1 2 3 ftsuc bidule chouette Meroe 0 191 matrice print matrice 1 2 print matrice 2 2 3 print matrice 1 3 print matrice 1 3 1 1 Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Expliquer le r sultat de la derni re ligne qui n est pas forc ment celui escompt 2 2 7 Des types d objets il y en a d autres Nous avons vu quelques types fondamentaux qui vont nous permettre de d buter le travail Il ne faut cependant pas perdre de vue qu il y a de nombreux autres types d objets nous aurons affaire en cours de travail aux types dictionnaire fichier et fonction Ce dernier type est particulier il permet par exemple de passer une fonction en param tre d une autre ce qui est tr s int ressant en calcul num rique D autres types d objets sont d finis dans les modules nous nous servirons notamment d un type du module numpy qui permet de faire du calcul matriciel Nous limiterons drastiquement la vari t d objets utilis s ainsi que le nombre de modules 2 3 Blocs de programme et instructions de contr le A une exception pr s le programme d introduction contenant des if
29. rint bonjour le monde N oubliez pas de sauver le fichier Pour ex cuter le fichier courant cliquer sur l option d sir e du menu Ex cuter Le r sultat du programme appara t dans la console IPython Pyzo Ajoutez le texte suivant au fichier TeteAToto py def f i PELE a AN print Print IFL print La t te Toto f 0 f 1 N oubliez pas de sauver le fichier Ex cutez Les accents apparaissent ils dans le texte crit S ils n apparaissent pas ajouter dans la premi re ligne du script coding utf 8 x D une mani re g n rale il est pr f rable d avoir en ent te de chaque fichier qq lignes de code du type x coding utf 8 x URL Created on Date remplir author votre nom LR ce qui identifie le fichier et limine les probl mes de caract res sp ciaux 3 2 Le mode interactif IPython On peut rentrer directement des commandes Python dans la console IPython cela peut tre utile pour tester le r sultat de scripts faire une repr sentation graphique rapide etc Cette console s utilise un peu comme une calculatrice ou une application de type Maple ou Matlab Par exemple supposons que l on travaille avec une fonction d finie dans un script Pyzo Ajoutez le texte suivant au fichier xexpx py import numpy as np import matplotlib pyplot as plt def f x return xxnp exp x N oubliez pas de sauver le fichier
30. rogression dans le code Un bloc de programme peut bien videmment contenir des instructions de contr le En un sens on peut imbriquer ces blocs de programme les uns dans les autres PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a 0 1 if axa lt 2xa print le carre de a est inferieur a son double if axa lt a print a est inferieur a son carre else print a est superieur strict a son carre else print le carre de a est strict superieur a son double if axa lt a print a est inferieur a son carre else print a est superieur strict a son carre print on continue le programme a 1 1 if axa lt 2xa print le carre de a est inferieur a son double if axa lt a print a est inferieur a son carre else print a est superieur strict a son carre else print le carre de a est strict superieur a son double if axa lt a print a est inferieur a son carre else print a est superieur strict a son carre print on continue le programme a 1 1 if axa lt 2xa print le carre de a est inferieur a son double if axa lt print a est inferieur a son carre else print a est superieur strict a son carre else print le carre de a est strict superieur a son double if axa lt a print a est inferieur a son carre else print a est superieur strict a son carre print on continue le programme
31. s commandes utilis es le permettent on peut boucler sur des listes d objets h t ro g nes PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor pi 3 14 e 2 71 In2 0 69 liste e pi ln2 for x in liste print x at x lxxxx Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor pi 3 14 e 2 71 In2 0 69 txt1i abcdefgh txt2 uvwxyz liste fe txtl pi txt2 ln2 for x in liste PEINE X Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code et l on peut bien s r imbriquer des boucles notamment lorsque l on a des listes de listes noter la d finition de la liste qui s tend sur plusieurs lignes PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor liste 0 1 2 3 Teruo bidule cheusette F e Oy ET for x in liste Tor y Ain X print y Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code 2 4 Les fonctions des objets presque comme les autres Une fonction python est une mani re de placer un bloc de programme dans un objet de sorte pouvoir le r utiliser plusieurs fois avec la possibilit de fixer les valeurs de certains param tres Le comportement e
32. st en ceci similaire celui d une fonction math matique Lorsque l on utilise la fonction exp on dispose d une machine dont on ne conna t pas forc ment le fonctionnement interne et qui tant donn un param tre r el x pass en argument calcule ou retourne la valeur du nombre exp x La d finition d une fonction se fait gr ce la directive def suivie d une tiquette pour cette fonction le nom de la fonction ainsi que la liste des param tres qui est une liste d tiquettes plac e entre parenth ses Vient ensuite dans un bloc de programme la suite des instructions permettant le calcul de la valeur de retour de la fonction valeur de retour qui sera renvoy e au moment o l interpr teur rencontre l instruction return Il peut ne pas y avoir de valeur de retour par exemple dans le cas o une fonction s occupe seulement de l affichage Le retour se fait alors la fin du bloc de programme associ la fonction Une erreur commune et curieuse chez les d butants est la confusion entre print et return print imprime son argument l cran et la valeur de celui ci est perdue return passe la valeur en argument l endroit appelant la fonction cete valeur peut tre r cup r e dans un identifica teur et utilis e d autres fins Voici par exemple la d finition d une fonction tiquet e f dont l argument est un objet r el et qui retourne un nombre r el PythonTutor Entre
33. tiers r els complexes viennent ensuite les objets en suite finie cha nes de caract res t uples listes et les objets dictionnaires hors programme Les fonctions et les fichiers sont aussi des objets Chaque type d objet poss de ses propri t s propres que ce soit au niveau de la r cup ration de la valeur de l objet ou des op rations fonctions le concernant 2 2 1 Les bool ens Il n y a que deux objets bool ens True et False repr sentant les valeurs de v rit vrai 1 et faux 0 Un bool en est typiquement la valeur de v rit d une expression de comparaison La valeur de v rit de 2 est gal 0 est faux celle de 2 est gal 0 ou 2 est pair est vrai Un bool en est l argument naturel d une instruction de contr le de type if ou while Les op rations de la logique usuelle s appliquent aux bool ens pour donner comme r sultat un bool en PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor a True b False print type a id a type b id b a 2 0 b 2 gt 0 c 2 lt 0 print a b c priat a and b a or not a and b 6r Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Que voit on l objet True est r f renc par l tiquette a l objet False est r f renc par l tiquette b On crit le type et l identit de ces objets T tiquette a r f
34. uez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code On peut surnommer le module avec la directive as afin d all ger les critures PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor import math as m e m exp 1 print type e e print type m exp print m pi Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Pour aller plus loin et pouvoir utiliser nos modules de r f rence nous allons nous placer dans un environnement de travail Pyzo nous laissant absolument toute libert Par ailleurs du fait que c est une bonne pratique de programmation en vue du projet nous verrons comment crire ses propres modules Ceci permet de segmenter le travail faire en sous travaux ordonn s hi rarchiquement 3 Utiliser Pyzo Je suppose pr sent que vous avez install l environnement Pyzo sur votre machine Si vous avez des difficult s le faire demandez une de vos connaissances de vous montrer comment faire Les principales sources de connaissance en informatique tant dans l ordre 1 Internet et l aide en ligne 2 les amis 3 le prof si la situation est d sesp r e il ne faut pas h siter faire part de ses difficult s au monde entier Pyzo installe sur votre machine un interpr teur Python en version 3 3 des modules numpy matplotlib u
35. usqu ce que le curseur arrive while p pest un objet peut tre issu du calcul d une expression de type bool en Deux possibilit s s offrent alors Si p vaut True la suite d instructions bloc est ex cut e et l on revient au d but de bloc Si p vaut False la suite d instructions bloc n est pas ex cut e et on saute directement l ex cution de la suite d instructions aval Il doit tre clair que si on ne veut pas se trouver dans une boucle infinie l objet p valant True si on entre dans cette boucle doit tre modifi par bloc pour permettre la sortie de la boucle Les codes suivants fournissent des boucles infinies la derni re instruction n est th oriquement jamais atteinte Le deuxi me code risque de mener une interruption du programme les entiers Python sont en nombre fini PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor while True debut bloc print l eternite est longue fin bloc print surtout vers la fin Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor i 0 while i gt 0 debut bloc print l eternite est longue i i 1 fin bloc print surtout vers la fin Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le cod
36. z le texte suivant dans la fenetre de code de PythonTutor def f x LE x lt 0 return 2 0xx else return 3 0 x a f 2 b f 4 print type a type f Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Le bloc de programme d finissant f commence la ligne 2 et finit la ligne 5 Le bloc principal de programme comprend la d finition de la fonction et continue la ligne 6 Observer particuli rement comment le pointeur de ligne se d place lors des appels la fonction lignes 6 et 7 On voit que a est un objet de type nombre r el alors que f est un objet de type fonction Il est important de comprendre la notion de port e ou de visibilit d une variable On modifie un peu l exemple pr c dent PythonTutor Entrez le texte suivant dans la fenetre de code de PythonTutor def f x print x if x lt 0 return 2 0 xx else return 3 0 xx x 3 0 print x a f 2 print x Cliquez sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code On a dessein utilis la m me tiquette x comme tiquette dans le bloc principal et comme tiquette dans le bloc de d finition de la fonction L objet r f renc par x d pend de l endroit o l on se trouve dans le texte du programme En un sens le fait d utiliser x dans le bloc de d finition de f masque dans c
37. z sur Visualize avancez ou reculez avec Forward gt et Backward lt et observez la progression dans le code Au cas o l on doit faire des calculs plus avanc s sur les nombres complexes il faut utiliser une librairie ou un module externe Ceci ne fonctionne pas toujours tr s bien dans PythonTutor et nous reviendrons sur ce point plus tard en utilisant Pyzo 2 2 4 Cha nes de caract res En calcul scientifique on est peu amen s effectuer des op rations sur des cha nes de caract res hormis pour crire les r sultats de nos calculs sous forme lisible et peut tre pour certains codages penser une cha ne ADN Une cha ne de caract re de type str est une suite finie et ordonn e de caract res par exemple l instruction s abcdef donne l tiquette s au mot form successivement des lettres a b f On utilise des guillemets simples ou doubles pour encadrer la suite de lettres Une cha ne peut contenir tous les caract res apparaissant au clavier et d autres plus exotiques comme les caract res de contr le Le caract re d chappement joue un r le particulier dans le codage des caract res exotiques Voici quelques commandes pour manipuler les cha nes de caract res On suppose que s t sont des objets de type str len s la longueur de s c est un entier s t la cha ne issue de la concat nation de s et t s i le caract re d indice i de la cha ne s Les indices vont de
Download Pdf Manuals
Related Search
Related Contents
tronçonneuse thermique petrol chain saw motosega a miscela Technical Manual for a Coupled Sea-Ice/Ocean Circulation ASRock B75M-DGS Quick Start Manual Acer Aspire TC605 POSIM EVO Téléchargez le bulletin - Association des Amis du Vieil Arles USER- MANUAL - Tamson Acerca del Inversor solar Xantrex para conexión a la red DigiPower SP-CKC100 User's Manual Copyright © All rights reserved.
Failed to retrieve file