apprendre_python3_5
TRANSCRIPT
-
7/26/2019 apprendre_python3_5
1/472
-
7/26/2019 apprendre_python3_5
2/472
Pages de variables
Document = Apprendre programmer avec Python
NumeroExercice = 0
caractres invisibles blancs :ttt
Point est une variable qui sert afficher/masquer un point dans le titre courant de la page de droite : .
La version numrique de ce texte peut tre tlcharge librement partir du site :http://inforef.be/swi/python.htm
uel!ues paragraphes de cet ouvrage ont "t" adapt"s de :How to think like a computer scientistdeAllen B. Downe! "e##re $l%ner & 'hris (eers
disponible sur : http:##thin$python%comou : http:##&&&%openboo$pro'ect%net#thin$()py
Copyright (C) 2000-2012 Grard Swinnen
*+ouvrage !ui suit est distribu" suivant les termes de la *icence Creative Commons, Paternit"-Pasd+.tilisation (ommerciale-Partage des (onditions /nitiales l+/denti!ue - %0 1rance 2%
(ela signi3ie !ue vous pouve4 copier5 modi3ier et redistribuer ces pages tout 3ait librement5 pourautant !ue vous respectie4 un certain nombre de rgles !ui sont pr"cis"es dans cette licence5 dont letexte complet peut 6tre consult" dans l+annexe (5 page 778%
Pour l+essentiel5 sache4 !ue vous ne pouve4 pas vous approprier ce texte pour le redistribuer ensuite9modi3i" ou non en d"3inissant vous-m6me d+autres droits de copie% *e document !ue vousredistribue45 modi3i" ou non5 doit obligatoirement inclure int"gralement le texte de la licence cit"eci-dessus5 le pr"sent avis et la pr"3ace !ui suit% *+accs ces notes doit rester libre pour tout le monde%;ous 6tes autoris" demander une contribution 3inancire ceux !ui vous redistribue4 ces notes5mais la somme demand"e ne peut concerner !ue les 3rais de reproduction% ;ous ne pouve4 pasredistribuer ces notes en exigeant pour vous-m6me des droits d+auteur5 ni limiter les droits dereproduction des copies !ue vous distribue4% *a di33usion commerciale de ce texte en librairie5 sous la
3orme classi!ue d+un manuel imprim"5 est r"serv"e exclusivement la maison d+"dition Eyrolles9Paris%
La couverture
'hoisie dlibrment hors propos! l)illustration de couverture est la reproduction d)une *uvre l)huile ralisepar l)auteur d)apr+s une gravure de ".". Bau,ean. $lle met en sc+ne un petit sloop de cabotage de la #in du -esi+cle.'es b/timents de 01 1 tonneaux possdaient une grande voile de #ortune! utilise par vent arri+re comme on levoit ici! ainsi qu)un hunier pour les plus grands d)entre eux.
-
7/26/2019 apprendre_python3_5
3/472
2race 3opper! inventeur du compilateur :4 5our moi! la programmation est plus qu)un art appliqu important. ')est aussi une ambitieuse qute menedans les tr#onds de la connaissance. 6
7 (aximilien! 8lise! Lucille! Augustin et Alexane.
-
7/26/2019 apprendre_python3_5
4/472
-
7/26/2019 apprendre_python3_5
5/472
5r#aceEn tant !ue pro3esseur ayant prati!u" l
-
7/26/2019 apprendre_python3_5
6/472
;
servons par ailleurs !ue les 'eunes !ui arrivent au'ourd
-
7/26/2019 apprendre_python3_5
7/472
;;
Nous avons alors d"cid" d
-
7/26/2019 apprendre_python3_5
8/472
;;;
Python est portable5 non seulement sur les di33"rentes variantes d
-
7/26/2019 apprendre_python3_5
9/472
;F
Python est un langage !ui continue & "oluer5 soutenu par une communaut" d
-
7/26/2019 apprendre_python3_5
10/472
F
*indows5 ?nix5 etc%5 son tutorieloriginal5 son manuel der#rence5 la documentationdes biblioth!ues de 3onctions5 etc% sont disponibles en t"l"chargementgratuit depuis /nternet5 partir du site &eb o33iciel : http://www.python.org
;ous pouve4 aussi trouver en ligne et en 3ran@ais5 l de Iobert (ordeau5pro3esseur l
-
7/26/2019 apprendre_python3_5
11/472
F;
/l existe "galement de trs bons ouvrages imprim"s concernant Python% *a plupart concernent encorePython %x5 mais vous ne devre4 gure "prouver de di33icult"s adapter leurs exemples Python >% En
langue 3ran@aise5 vous pourre4 trs pro3itablement consulter les manuels ci-aprs : rogrammation ython5 par Mare$ Uiad"5 "ditions Eyrolles5 Paris5 00F5 8GR p%5 /)VN
FWG---7G>-8% (G8 p%5 /)VN FWG--W770-7G-0 et FWG--W770-F8-7% (-0F>R->5trs complet5 trs clair5 agr"able lire et !ui utilise une m"thodologie "prouv"e%
Pour aller plus loin5 notamment dans l5 et surtout l
-
7/26/2019 apprendre_python3_5
12/472
F;;
,emerciements
(e livre est pour une partie le r"sultat d
-
7/26/2019 apprendre_python3_5
13/472
-
7/26/2019 apprendre_python3_5
14/472
F;
2. 3nstructions r!p!titives ............................................................................................ 4#a00ectation........................................................................................................................................................... 62#ptitions en boucle L"instruction 9hile........................................................................................................ 6'
'ommentaires .......................................................................................................................................................................................................... GJemarques .................................................................................................................................................................................................................GK8laboration de tables ..............................................................................................................................................................................................GK'onstruction d)une suite mathmatique ...........................................................................................................................................................1
*remiers scripts, ou comment conser)er nos programmes............................................................................. 315robl+mes ventuels lis aux caract+res accentus .........................................................................................................................................M
5. rincipaux types de donn!es ................................................................................... 04Les donnes numriques........................................................................................................................................ 32
Le tpe integer ..........................................................................................................................................................................................................H
Le t+pe 0loat............................................................................................................................................................. 34Les donnes alphanumriques.............................................................................................................................. :
Le tpe string ............................................................................................................................................................................................................M-Jemarques.......................................................................................................................................................................................................... MG
-
7/26/2019 apprendre_python3_5
15/472
F
=aleurs par d0aut pour les param8tres............................................................................................................. 2!/rguments a)ec tiquettes.................................................................................................................................... 22
9. %tilisation de fentres et de graphismes ............................................................... 48nter0aces graphiques $?
-
7/26/2019 apprendre_python3_5
16/472
F;
'onversion d)une chaNne string en chaNne btes...................................................................................................................................... -'onversions automatiques lors du traitement des #ichiers.................................................................................................................... -
'as des scripts 5thon.................................................................................................................................................................................... -MAccder d)autres caract+res que ceux du clavier ........................................................................................................................................-ILes chaNnes sont des ob,ets ..................................................................................................................................................................................-0onctions intgres ............................................................................................................................................................................................... -ormatage des chaNnes de caract+res ............................................................................................................................................................... -ormatage des chaNnes 4 l)ancienne 6 ........................................................................................................................................................... -M1
Le point sur les listes............................................................................................................................................ 11D#inition d)une liste P acc+s ses lments ................................................................................................................................................... -M-Les listes sont modi#iables ...................................................................................................................................................................................-MGLes listes sont des ob,ets .......................................................................................................................................................................................-MG
-
7/26/2019 apprendre_python3_5
17/472
F;;
D#inition concr+te d)une mthode dans un script ........................................................................................................................................-HI$ssai de la mthode! dans une instance quelconque .....................................................................................................................................-HI
La mthode constructeur.................................................................................................................................... 12!$xemple ....................................................................................................................................................................................................................-H0Dspaces de noms des classes et instances.......................................................................................................... 1':Eritage.................................................................................................................................................................. 1'1Eritage et pol+morphisme................................................................................................................................. 1'6
'ommentaires ........................................................................................................................................................................................................ -MModules contenant des biblioth8ques de classes............................................................................................. 1'2
-0. Classes et interfaces graphi"ues ........................................................................... -8-(ode des couleurs ; un petit proet bien encapsul..........................................................................................141
'ahier des charges de notre programme.................................................................................................................................................... -KG
(ise en *uvre concr+te................................................................................................................................................................................. -KG'ommentaires.................................................................................................................................................................................................. -K
*etit train ; hritage, change d"in0ormations entre obets........................................................................... 145'ahier des charges.......................................................................................................................................................................................... -K0;mplmentation............................................................................................................................................................................................... -K0'ommentaires.................................................................................................................................................................................................. -KH
scillo?raphe ; un 9idget personnalis............................................................................................................ 14'$xprimentation.............................................................................................................................................................................................. G11'ahier des charges.......................................................................................................................................................................................... G1-;mplmentation............................................................................................................................................................................................... G1-
(urseurs ; un 9idget composite.......................................................................................................................... 6:35rsentation du widget 9cale ............................................................................................................................................................................. G1'onstruction d)un panneau de contrOle trois curseurs .............................................................................................................................G1M
'ommentaires.................................................................................................................................................................................................. G105ropagation des vnements........................................................................................................................................................................ G1
ntgration de 9idgets composites dans une application s+nth8se..............................................................6:''ommentaires.................................................................................................................................................................................................. G-1
-2. +t pour "uel"ues widgets de plus... ....................................................................... -4Les boutons radio.................................................................................................................................................. 612
'ommentaires ........................................................................................................................................................................................................ G-
-
7/26/2019 apprendre_python3_5
18/472
F;;;
Barres d"outils e&pressions lambda................................................................................................................ 634(taprogrammation P expressions lambda ................................................................................................................................................... GM1
5assage d)une #onction Rou d)une mthodeS comme argument ..................................................................................................................GM-CenFtres a)ec menus............................................................................................................................................ 66
'ahier des charges de l)exercice .........................................................................................................................................................................GM5remi+re bauche du programme ..................................................................................................................................................................... GM
Analse du script......................... ................ .............. ............... .............. ............... ............... .............. .............. ................ ............. ............... ... GMMA,out de la rubrique (usiciens ..........................................................................................................................................................................GM0
Analse du script......................... ................ .............. ............... .............. ............... ............... .............. .............. ................ ............. ............... ... GMHA,out de la rubrique 5eintres ..............................................................................................................................................................................GMH
Analse du script......................... ................ .............. ............... .............. ............... ............... .............. .............. ................ ............. ............... ... GMA,out de la rubrique @ptions .............................................................................................................................................................................. GM(enu avec cases cocher ....................................................................................................................................................................................GMK(enu avec choix exclusi#s ...................................................................................................................................................................................GI1'ontrOle du #lux d)excution l)aide d)une liste ............................................................................................................................................ GI-5rslection d)une rubrique ................................................................................................................................................................................GIG
-5. (nalyse de programmes concrets ......................................................................... 55Ieu des bombardes................................................................................................................................................ 655
5rototpage d)une classe 'anon ........................................................................................................................................................................ GI'ommentaires.................................................................................................................................................................................................. G01
A,out de mthodes au prototpe ........................................................................................................................................................................G0-'ommentaires.................................................................................................................................................................................................. G0G
Dveloppement de l)application .........................................................................................................................................................................G0'ommentaires.................................................................................................................................................................................................. G0
Dveloppements complmentaires ....................................................................................................................................................................G0K'ommentaires.................................................................................................................................................................................................. GH
Ieu de *ing............................................................................................................................................................. 6235rincipe ....................................................................................................................................................................................................................GHM5rogrammation ......................................................................................................................................................................................................GHM
'ahier des charges du logiciel dvelopper.............................................................................................................................................. GHI
-6. #estion dune base de donn!es .............................................................................. 48Les bases de donnes............................................................................................................................................ 624
92BDJ P Le mod+le clientserveur .....................................................................................................................................................................G1Le langage 9UL .......................................................................................................................................................................................................G-9ULite .......................................................................................................................................................................................................................GG
'ration de la base de donnes P @b,ets 4 connexion 6 et 4 curseur 6 ......................................................................................................GG'onnexion une base de donnes existante ................................................................................................................................................... GMJecherches slectives dans une base de donnes ...........................................................................................................................................G0La requte select .................................................................................................................................................................................................... G
bauche d"un logiciel client pour *ostgre7L.................................................................................................. 6'4Dcrire la base de donnes dans un dictionnaire d)application .................................................................................................................GK1D#inir une classe d)ob,ets=inter#aces ...............................................................................................................................................................GK
'ommentaires.................................................................................................................................................................................................. GKM'onstruire un gnrateur de #ormulaires ........................................................................................................................................................GK0
'ommentaires.................................................................................................................................................................................................. GK0Le corps de l)application ......................................................................................................................................................................................GKH
'ommentaires.................................................................................................................................................................................................. GKK
-
7/26/2019 apprendre_python3_5
19/472
F;F
-4. (pplications web ..................................................................................................... 0
-
7/26/2019 apprendre_python3_5
20/472
FF
'ommentaires.................................................................................................................................................................................................. HI'onclusions et perspectives .......................................................................................................................................................................... HI
-
7/26/2019 apprendre_python3_5
21/472
--7 l)cole des sorciers
Apprendre programmer est une activit d, tr+s intressante en elle=mme : elle peut stimulerpuissamment votre curiosit intellectuelle. (ais ce n)est pas tout. Acqurir cette comptence vous
ouvre galement la voie menant la ralisation de pro,ets tout #ait concrets Rutiles ou ludiquesS!ce qui vous procurera certainement beaucoup de #iert et de grandes satis#actions.
Avant de nous lancer dans le vi# du su,et! nous allons vous proposer ici quelques r#lexions sur lanature de la programmation et le comportement par#ois trange de ceux qui la pratiquent! ainsique l)explication de quelques concepts #ondamentaux. ;l n)est pas vraiment di##icile d)apprendre programmer! mais il #aut de la mthode et une bonne dose de persvrance! car vous pourreVcontinuer progresser sans cesse dans cette science : elle n)a aucune limite.
AoBtes noires et pens!e magi"ue.ne caract"risti!ue remar!uable de notre soci"t" moderne est !ue nous vivons de plus en plusentour"s de boNtes noires% *es scienti3i!ues ont l
-
7/26/2019 apprendre_python3_5
22/472
G 7 l)cole des sorciers
(
-
7/26/2019 apprendre_python3_5
23/472
(agie blanche! magie noire
;agie blanche= magie noire
Nous n
-
7/26/2019 apprendre_python3_5
24/472
M 7 l)cole des sorciers
par exemple5 un peu la manire d
-
7/26/2019 apprendre_python3_5
25/472
Langage machine! langage de programmation I
Langage machine= langage de programmation
strictement parler5 un ordinateur n
-
7/26/2019 apprendre_python3_5
26/472
0 7 l)cole des sorciers
gure de modi3ications sur des machines ou des systmes d
-
7/26/2019 apprendre_python3_5
27/472
(ise au point d)un programme P Jecherche des erreurs RdebugS H
En 3ait5 il peut exister dans un programme trois types d
-
7/26/2019 apprendre_python3_5
28/472
7 l)cole des sorciers
d
-
7/26/2019 apprendre_python3_5
29/472
Jecherche des erreurs et exprimentation K
tel 10% D
-
7/26/2019 apprendre_python3_5
30/472
-
7/26/2019 apprendre_python3_5
31/472
G5remiers pas
La programmation est donc l)art de commander un ordinateur de #aire exactement ce que vousvouleV! et 5thon compte parmi les langages qu)il est capable de comprendre pour recevoir vos
ordres. Eous allons essaer cela tout de suite avec des ordres tr+s simples concernant des nombres!puisque les nombres constituent son matriau de prdilection. Eous allons lui #ournir nospremi+res 4 instructions 6! et prciser au passage la d#inition de quelques termes essentiels duvocabulaire in#ormatique! que vous rencontrereV constamment dans la suite de cet ouvrage.
'omme nous l)avons expliqu dans la pr#ace Rvoir : ersions du langage! page F;;S! nous avons prisle parti d)utiliser dans ce cours la nouvelle version de 5thon! laquelle a introduit quelqueschangements sntaxiques par rapport aux versions prcdentes. Dans la mesure du possible! nousvous indiquerons ces di##rences dans le texte! a#in que vous puissieV sans probl+me analser ouutiliser d)anciens programmes crits pour 5thon - ou G.
Calculer avec ythonPython pr"sente la particularit" de pouvoir 6tre utilis" de plusieurs manires di33"rentes% ;ous alle4d
-
7/26/2019 apprendre_python3_5
32/472
-G 5remiers pas
nement de travail sp"cialis" tel !ue ;DL$% ;oici par exemple ce !ui appara?t dans une 3en6tre determinal 2nome9sous ?buntu Linux8:
Avec ;DL$sous >indows5 votre environnement de travail ressemblera celui-ci :
*es trois caractres , sup"rieur 2 constituent le signal d>> 2 9 # les espaces sont optionnels
>>> 7 + 3 * 4 # la hirarchie des oprations mathmatiques # est-elle respecte ?
>>> (7+3)*4
>>> 20 / 3 # attention : ceci fonctionnerait diffremment sous Python 2
>>> 20 // 3
8 )ous >indows!vous aure4 surtout le choix entre l environnement ;DL$d"velopp" par Huido ;an Iossum5au!uel nous donnons nous-m6me la pr"3"rence5 et 5thon>in5 une inter3ace de d"veloppement d"velopp"epar Qar$ ammond% Dautres environnements de travail plus sophisti!u"s existent aussi5 tels l excellent Boa'onstructor par exemple 9!ui 3onctionne de 3a@on trs similaire Delphi5 mais nous estimons !uils neconviennent gure aux d"butants% Pour tout renseignement compl"mentaire5 veuille4 consulter le site Oebde Python%)ous Linux5 nous pr"3"rons personnellement travailler dans une simple 3en6tre de terminal pour lancer
l
-
7/26/2019 apprendre_python3_5
33/472
'alculer avec 5thon -
(omme vous pouve4 le constater5 les op"rateurs arithm"ti!ues pour l
-
7/26/2019 apprendre_python3_5
34/472
-M 5remiers pas
$oms de variables et mots r!serv!s
*es noms de variables sont des noms !ue vous choisisse4 vous-m6me asse4 librement% E33orce4-vouscependant de bien les choisir : de pr"3"rence asse4 courts5 mais aussi explicites !ue possible5 demanire exprimer clairement ce !ue la variable est cens"e contenir% Par exemple5 des noms devariables tels !ue altitude5 altitou altconviennent mieux !ue x pour exprimer une altitude%
%n bon programmeur doit veiller ? ce "ue ses lignes dinstructions soient faciles ? lire.
)ous Python5 les noms de variables doivent en outre ob"ir !uel!ues rgles simples :
.n nom de variable est une s"!uence de lettres 9a 4 5 A U et de chi33res 90 F5 !ui doittou'ours commencer par une lettre%
)eules les lettres ordinaires sont autoris"es% *es lettres accentu"es5 les c"dilles5 les espaces5 les
caractres sp"ciaux tels !ue 5 5 5 etc% sont interdits5 l , mots r"serv"s 2 ci-dessous 9ils sont utilis"s par le langage lui-m6me :
and as assert break class continue def
del elif else except False finally for
from global if import in is lambda
None nonlocal not or pass raise return
True try while with yield
(ffectation Fou assignationGNous savons d"sormais comment choisir 'udicieusement un nom de variable% ;oyons pr"sentcomment nous pouvons d#inirune variable et lui a##ecterune valeur% *es termes , a33ecter une valeur 2
ou , assigner une valeur 2 une variable sont "!uivalents% /ls d"signent l
-
7/26/2019 apprendre_python3_5
35/472
A##ectation Rou assignationS -I
>>> n = 7 # dfinir la variable n et lui donner la valeur >>> msg = "Quo ! nu# $" # affecter la valeur "uoi de neuf ? ms$
>>> p = 3.%4%59 # assi$ner sa valeur la variable pi*es exemples ci-dessus illustrent des instructions d
-
7/26/2019 apprendre_python3_5
36/472
-0 5remiers pas
>>> p'nt(msg)Quo ! nu# $
>>> p'nt(n)7
Iemar!ue4 la subtile di33"rence dans les a33ichages obtenus avec chacune des deux m"thodes% *a3onction p'nt()n
-
7/26/2019 apprendre_python3_5
37/472
>> 'gu' * hutu'930
% Assigne4 les valeurs respectives >5 85 W trois variables a5 b5 c%
E33ectue4 l
-
7/26/2019 apprendre_python3_5
38/472
- 5remiers pas
*a seconde ligne de l>> s = p * '**2>>> p'nt(s)>>> p'nt(typ('), typ(p), typ(s))
uelle est5 votre avis5 l
-
7/26/2019 apprendre_python3_5
39/472
5riorit des oprations -K
(et Dpour multiplicationet division5 !ui ont la m6me priorit"% Elles sont "valu"es avant l
-
7/26/2019 apprendre_python3_5
40/472
-
7/26/2019 apprendre_python3_5
41/472
0'ontrOle du #lux d)excution
Dans notre premier chapitre! nous avons vu que l)activit essentielle d)un programmeur est larsolution de probl+mes. @r! pour rsoudre un probl+me in#ormatique! il #aut tou,ours e##ectuer une
srie d)actions dans un certain ordre. La description structure de ces actions et de l)ordre danslequel il convient de les e##ectuer s)appelle un algorithme.
Le 4 chemin 6 suivi par 5thon travers un programme est appel un #lux d)excution! et lesconstructions qui le modi#ient sont appeles des instructions de contrOle de #lux.Les structures de contrOle sont les groupes d)instructions qui dterminent l)ordre dans lequel lesactions sont e##ectues. $n programmation moderne! il en existe seulement trois : la squence-1et laslection! que nous allons dcrire dans ce chapitre! et la rptition que nous aborderons au chapitresuivant.
@!"uence dinstructions)au3 mention explicite5 les instructions d>> = >>> = >>> p'nt(, )
;ous obtiendre4 un r"sultat contraire si vous intervertisse4 les eet >elignes%
0 Mel !uil est utilis" ici5 le terme de s!"uenced"signe donc une s"rie dinstructions !ui se suivent% Nouspr"3"rerons dans la suite de cet ouvrage r"server ce terme un concept Python pr"cis5 le!uel englobe leschaBnes de caractres5 les tupleset les listes9voir plus loin%
-
7/26/2019 apprendre_python3_5
42/472
GG 'ontrOle du #lux d)excution
Python ex"cute normalement les instructions de la premire la dernire5 sau3 lors!u> = %50>>> # ( > %00)1...
*a premire commande a33ecte la valeur 80 la variable a% Kus!u> est maintenant remplac" par un prompt secondaireconstitu" detrois points%
)i votre "diteur ne le 3ait pas automati!uement5 vous deve4 pr"sent e33ectuer une tabulation 9ouentrer 7 espaces avant d> = %50>>> # ( > %00)1... p'nt(" !pss ntn")...
1rappe4 encore une 3ois $nterf% *e programme s
-
7/26/2019 apprendre_python3_5
43/472
9lection ou excution conditionnelle G
>>> = 20>>> # ( > %00)1
... p'nt(" !pss ntn")... s1
... p'nt(" n !pss ps nt")
...
1rappe4 $nterf encore une 3ois% *e programme s= y # . est plus $rand que ou $al y = y # . est plus petit que ou $al y
4emple
>>> = 7>>> # ( 2 == 0)1... p'nt(" st p'")... p'nt("p' u 'st ! s !son p' 2 st nu")... s1... p'nt(" st mp'")...
Note4 bien !ue l
-
7/26/2019 apprendre_python3_5
44/472
GM 'ontrOle du #lux d)excution
'ours la m6me structure : une ligne d
-
7/26/2019 apprendre_python3_5
45/472
Uuelques r+gles de sntaxe 5thon GI
Les limites des instructions et des blocs sont d!finies par la mise en page
Dans de nombreux langages de programmation5 il 3aut terminer cha!ue ligne d
-
7/26/2019 apprendre_python3_5
46/472
G0 'ontrOle du #lux d)excution
Important
5ous pou/ez aussi indenter laide de tabulations, mais alors /ous de/rez faire tr0sattention ne pas utiliser tant8t des espaces, tant8t des tabulations pour indenter leslignes dun m4me bloc.
-
7/26/2019 apprendre_python3_5
47/472
2M;nstructions rptitives
L)une des t/ches que les machines #ont le mieux est la rptition sans erreur de t/ches identiques. ;lexiste bien des mthodes pour programmer ces t/ches rptitives. Eous allons commencer par l)une
des plus #ondamentales : la boucle de rptition construite autour de l)instruction while.
,!affectationNous ne l
-
7/26/2019 apprendre_python3_5
48/472
G ;nstructions rptitives
>>> , , , ! = 3, 4, 5, 7
(ette 3onctionnalit" de Python est bien plus int"ressante encore !u
-
7/26/2019 apprendre_python3_5
49/472
Jptitions en boucle P L)instruction while GK
tructions d
-
7/26/2019 apprendre_python3_5
50/472
1 ;nstructions rptitives
>>> = 0>>> ;h %21
... = +%... p'nt( , **2 , **3)
;ous devrie4 obtenir la liste des carr"s et des cubes des nombres de %
Note4 au passage !ue la 3onction print()permet d
-
7/26/2019 apprendre_python3_5
51/472
Jptitions en boucle P L)instruction while -
Variables a b c
Valeurs initiales 1 1 1
Valeurs prisessuccessivement aucours des it!rations
1 " "
" # #
# $ %
$ & $
''' ''' '''
(xpression deremplacement
b a)b c)1
Dans une telle table5 on e33ectue en !uel!ue sorte , la main 2 le travail de l
-
7/26/2019 apprendre_python3_5
52/472
G ;nstructions rptitives
Pour ce 3aire5 vous alle4 d"sormais r"diger vos s"!uences dordpad! 2ean! Comodo editor...sous >indows5ou encore l
-
7/26/2019 apprendre_python3_5
53/472
5remiers scripts! ou comment conserver nos programmes
.n script Python contiendra des s"!uences d
-
7/26/2019 apprendre_python3_5
54/472
M ;nstructions rptitives
3ui ris3ueraient d4tre d9 attribus des modules p(t"on existants # des noms tels 3uemathpyou t
-
7/26/2019 apprendre_python3_5
55/472
5remiers scripts! ou comment conserver nos programmes I
93ran@ais5 allemand5 portugais5 etc%5 encod" sur un seul octet suivant la norme ;9@=IK=-5 la!uelleest souvent d"sign"e aussi par l
-
7/26/2019 apprendre_python3_5
56/472
-
7/26/2019 apprendre_python3_5
57/472
5I5rincipaux tpes de donnes
Dans le chapitre G! nous avons d, manipul des donnes de di##rents tpes : des nombres entiersou rels! et des chaNnes de caract+res. ;l est temps prsent d)examiner d)un peu plus pr+s ces tpes
de donnes! et galement de vous en #aire dcouvrir d)autres.
Les donn!es num!ri"uesDans les exercices r"alis"s 'us!u
-
7/26/2019 apprendre_python3_5
58/472
5rincipaux tpes de donnes
*R7G L7W7G>R7W%
*es op"rations e33ectu"es sur des entiers compris entre ces deux limites sont donc tou'ours trsrapides5 parce !ue le processeur est capable de les traiter directement% En revanche5 lors!u bits au maximum%
;ous n bits cha!ue 3ois !ue c
-
7/26/2019 apprendre_python3_5
59/472
Les donnes numriques K
582%%07420928%3 1 70059890%%%83200292374%399572%92%24545057972979%7383923%327%754
8832%235044347340028952049%030088325024900843742470237847552%4 1 45452807452579985329404824935%205%823987072294%5%40%55555839842227%3358%5%2382578240%998020%4%53747%%094%735505%42279479530059%70099504229307903824734055829%752983%9422450393350%754770330040%27583825>>>
Dans l
-
7/26/2019 apprendre_python3_5
60/472
M1 5rincipaux tpes de donnes
Fn# Fn#
(omme vous l0Get 0>0Gavec une pr"cision de chi33res signi3icati3s% (es nombres sont encod"sd
-
7/26/2019 apprendre_python3_5
61/472
Les donnes alphanumriques M-
Bous apprendrons au c"apitre 17 3uil ne faut pas confondre les notions de = c"a;ne decaract0res > et = s3uence doctets > comme le faisaient abusi/ement les langages de
programmation anciens dont les premi0res /ersions de P(t"on-. Pour linstant,r9ouissons&nous 3ue P(t"on traite dsormais de mani0re parfaitement co"rente toutesles c"a;nes de caract0res, ceux&ci pou/ant faire partie dalp"abets 3uelcon3ues'1.
Le type string
.ne donn"e de typestringpeut se d"3inir en premire approximation comme une suite !uelcon!ue decaractres% Dans un script python5 on peut d"limiter une telle suite de caractres5 soit par desapostrophes 9simple !uotes5 soit par des guillemets 9double !uotes% Exemples :
>>> ph's% = 's ou#s !u's.'>>> ph's2 = '"Gu", 'pon!t-,'>>> ph's3 = "H'm n"
>>> p'nt(ph's2, ph's3, ph's%)"Gu", 'pon!t-, H'm n s ou#s !u's.
*es > variables phrase15 phrase25 phrase*sont donc des variables de typestring%
Iemar!ue4 l>> ut = "I st un hJn putKt onguCn ontnnt pusu's gns C... ! tt (I #ontonnCn ! mm #Lon n I/I++.CnC... @otM u s ns n !utCn ! gn sont sgn#t#s.Cn">>> p'nt(ut)I st un hJn putKt onguontnnt pusu's gns ! tt (I #ontonn! mm #Lon n I/I++. @otM u s ns n !ut
! gn sont sgn#t#s.
(eci constitue donc l
-
7/26/2019 apprendre_python3_5
62/472
MG 5rincipaux tpes de donnes
,emar"ues
*a s"!uence Cndans une cha?ne provo!ue un saut la ligne% *a s"!uence C&permet d>> p'nt(%)
?mp ! tt p'#o'mt, &st-N-!'!ont s n!nttons t s
't's spu C & " sontons's sns
ut' #o'm ! p'os.>>>
(ccs aux caractres individuels dune chaBne
*es cha?nes de caractres constituent un cas particulier d
-
7/26/2019 apprendre_python3_5
63/472
Les donnes alphanumriques M
Attention cependant : comme vous aure4 l%05 vous obtene4 sanssurprise les r"sultats attendus :
>>> h ="@o n Rm'">>> p'nt(hO%P,hO2P,hO3P,hO4P,hO8P,hO9P,hO%0P,hO%%P,hO%2P)o R m
Ne vous pr"occupe4 pas pour l
-
7/26/2019 apprendre_python3_5
64/472
MM 5rincipaux tpes de donnes
>>> h ='To'gs'>>> p'nt(n(h))
7(ela marche tout aussi bien si la cha?ne contient des caractres accentu"s :>>> h ='Un'>>> p'nt(n(h))4
(onvertir en nombre v"ritable une cha?ne de caractres !ui repr"sente un nombre% Exemple :>>> h = '847'>>> p'nt(h + 45)
``` erreur `` : on ne peut pas additionner une cha?ne et un nombre>>> n = nt(h)>>> p'nt(n + 5)
87%2 # => : on peut additionner 2 nombresDans cet exemple5 la 3onction int"gr"e int() convertit la cha?ne en nombre entier% /l serait"galement possible de convertir une cha?ne de caractres en nombre r"el5 l
-
7/26/2019 apprendre_python3_5
65/472
Les listes Rpremi+re approcheS MI
>>> Hou' = O'un!', 'm'!', 'm''!', %800, 20.357, 'Hu!', 'n!'!'P>>> p'nt(Hou')
O'un!', 'm'!', 'm''!', %800, 20.357, 'Hu!', 'n!'!'P
Dans cet exemple5 la valeur de la variablejourest une liste%
(omme on peut le constater dans le m6me exemple5 les "l"ments individuels !ui constituent une listepeuvent 6tre de types vari"s% Dans cet exemple5 en e33et5 les trois premiers "l"ments sont des cha?nesde caractres5 le !uatrime "l"ment est un entier5 le cin!uime un r"el5 etc% 9nous verrons plus loin!u> Hou' = O'un!', 'm'!', 'm''!', %800, 20.357, 'Hu!', 'n!'!'P>>> p'nt(Hou'O2P)m''!>>> p'nt(Hou'O4P)20.357
la di33"rence de ce !ui se passe pour les cha?nes5 !ui constituent un type de donn"es non=modi#iables
9nous aurons plus loin diverses occasions de revenir l-dessus5 il est possible de changer les "l"mentsindividuels d>> p'nt(Hou')O'un!', 'm'!', 'm''!', %800, 20.357, 'Hu!', 'n!'!'P>>> Hou'O3P = Hou'O3P +47>>> p'nt(Hou')O'un!', 'm'!', 'm''!', %847, 20.357, 'Hu!', 'n!'!'P
Jn peut donc remplacer certains "l"ments d> Hou'O3P = 'Vut'>>> p'nt(Hou')O'un!', 'm'!', 'm''!', 'Vut', 20.357, 'Hu!', 'n!'!'P
*a #onction intgre len()5 !ue nous avons d"' rencontr"e propos des cha?nes5 s
-
7/26/2019 apprendre_python3_5
66/472
M0 5rincipaux tpes de donnes
.ne autre#onction intgrepermet de supprimer d> !(Hou'O4P)>>> p'nt(Hou')O'un!', 'm'!', 'm''!', 'Hut', 'Hu!', 'n!'!'P
/l est "galement tout 3ait possible d>> p'nt(Hou')O'un!', 'm'!', 'm''!', 'Hut', 'Hu!', 'n!'!', 'sm!'P>>>
Dans la premire ligne de l
-
7/26/2019 apprendre_python3_5
67/472
Les listes Rpremi+re approcheS MH
Exercices
8% )oient les listes suivantes :
t% = O3%, 28, 3%, 30, 3%, 30, 3%, 3%, 30, 3%, 30, 3%Pt2 = O'Vn'', '''', '
-
7/26/2019 apprendre_python3_5
68/472
-
7/26/2019 apprendre_python3_5
69/472
60onctions prd#inies
L)un des concepts les plus importants en programmation est celui de #onction GM. Les #onctionspermettent en e##et de dcomposer un programme complexe en une srie de sous=programmes plus
simples! lesquels peuvent leur tour tre dcomposs en #ragments plus petits! et ainsi de suite.D)autre part! les #onctions sont rutilisables : si nous disposons d)une #onction capable de calculerune racine carre! par exemple! nous pouvons l)utiliser un peu partout dans nos programmes sansavoir la r=crire chaque #ois.
La fonction printFGNous avons bien "videmment d"' rencontr" cette 3onction% Pr"cisons simplement ici !u>> p'nt("YonHou'", "N", "tous", sp ="")YonHou'Ntous
De m6me5 vous pouve4 remplacer le saut la ligne par l>> n =0>>> ;h n1... p'nt("Mut", n! ="")... n = n+%...MutMutMutMutMut
7 )ous Python5 le terme , 3onction 2 est utilis" indi33"remment pour d"signer la 3ois de v"ritables 3onctionsmais "galement des procdures % Nous indi!uerons plus loin la distinction entre ces deux concepts proches%
-
7/26/2019 apprendre_python3_5
70/472
I1 onctions prd#inies
3nteraction avec lutilisateur : la fonction inputFG
*a plupart des scripts "labor"s n"cessitent un moment ou l>> = nput("?nt'M un !onn num'u 1 ")?nt'M un !onn num'u 1 52.37>>> typ()ss 'st''>>>> = #ot() # conversion de la chane en un nombre rel>>> typ()ss '#ot'>
3mporter un module de fonctions;ous ave4 d"' rencontr" d
-
7/26/2019 apprendre_python3_5
71/472
;mporter un module de #onctions I-
+es modules sont des fic"iers 3ui regroupent des ensembles de fonctions'E.
;ous verre4 plus loin combien il est commode de d"couper un programme important en plusieurs3ichiers de taille modeste pour en 3aciliter la maintenance% .ne application Python typi!ue sera alorsconstitu"e d
#'om mth mpo't *
nom' = %2%ng = p/ # soit 4@A # %la biblioth+que math inclut aussi la dfinition de pi&p'nt("'n '' !", nom', "=", s't(nom'))p'nt("snus !", ng, "'!ns", "=", sn(ng))
*
-
7/26/2019 apprendre_python3_5
72/472
IG onctions prd#inies
Nous allons d"velopper tout ceci dans les pages suivantes% ;euille4 noter au passage !ue les 3onctionsmath"mati!ues utilis"es ici ne repr"sentent !u crive4 un programme !ui calcule la p"riode d
-
7/26/2019 apprendre_python3_5
73/472
?n peu de dtente avec le module turtle I
g"om"tri!ues correspondant la piste laiss"e derrire elle par une petite , tortue 2 virtuelle5 dontnous contrlons les d"placements sur l> 'st()
>>> = 0>>> ;h %21 = +% #o';'!(%50) #t(%50)
Attention cependant : avant de lancerun tel script5 assure4-vous tou'ours!u
-
7/26/2019 apprendre_python3_5
74/472
IM onctions prd#inies
Qais comment un ordinateur peut-il d"terminer si !uel!ue chose est vraiou#aux]
En 3ait X et vous le save4 d"' X un ordinateur ne manipule strictement !ue des nombres% Mout ce !u
-
7/26/2019 apprendre_python3_5
75/472
racit#ausset d)une expression II
s1 p'nt("#u")
;ous obtiendre4 #u pour toute cha?ne vide5 et ' pour toute cha?ne contenant au moins uncaractre% ;ous pourrie4 de la m6me manire tester la , v"racit" 2 d
-
7/26/2019 apprendre_python3_5
76/472
I0 onctions prd#inies
# en liste toute chane de valeurs spares par des vir$ules :2
nn = st((h))
m, n! = nnO0P, 'p'm''# nnO%P > m1 # ne pas omettre le double point ! m = nnO%P n! = 'son!'# nnO2P > m1 m = nnO2P n! = 't'osm'p'nt("6 pus g'n! ! s nom's st", m)p'nt("I nom' st ", n!, "! ot' st.")
Dans cet exercice5 vous retrouve4 nouveau le concept de , bloc d et 75 et !ue vous deve4 absolument assimiler% Pour rappel5 les blocs d
-
7/26/2019 apprendre_python3_5
77/472
Jvision IH
Nous retrouvons ici une boucle while5 associ"e un groupe d
-
7/26/2019 apprendre_python3_5
78/472
I onctions prd#inies
R%W Ieprendre le programme c avec a = 0 au lieu de a = %ue se passe-t-il ] (onclure S
R%G crire un programme !ui5 "tant donn"es deux bornes entires a et b5 additionne les nombresmultiples de > et de 8 compris entre ces bornes% Prendre par exemple a = 05 b = > _ le r"sultatdevrait 6tre alors 0 L 8 L >0 = 78%Qodi3ier l"grement ce programme pour !u ou de 8compris entre les bornes a et b% Avec les bornes 0 et >5 le r"sultat devrait donc 6tre : 0 L > L 8L R L F L 0 L L 8 L G L 0 L L 7 L 8 L W L >0 = 8%
R%F D"terminer si une ann"e 9dont le mill"sime est introduit par l
-
7/26/2019 apprendre_python3_5
79/472
Jvision IK
Exemple d
-
7/26/2019 apprendre_python3_5
80/472
-
7/26/2019 apprendre_python3_5
81/472
4Honctions originales
La programmation est l)art d)apprendre un ordinateur comment accomplir des t/ches qu)iln)tait pas capable de raliser auparavant. L)une des mthodes les plus intressantes pour arriver
consiste a,outer de nouvelles instructions au langage de programmation que vous utiliseV! sous la#orme de #onctions originales.
'!finir une fonction*es scripts !ue vous ave4 "crits 'us!u0pour !ue ceux-ci restent clairs%
D /l existe aussi dans dautres langages des routines9par3ois appel"s sous-programmes et des procdures%/l nexiste pas de routinesen Python% uant au terme de #onction5 il d"signe la 3ois les 3onctions au sensstrict 9!ui 3ournissent une valeur en retour5 et les proc"dures 9!ui n en 3ournissent pas%
-
7/26/2019 apprendre_python3_5
82/472
0G onctions originales
!# nomR6onton(liste de param+tres)1 ...
bloc d'
instructions ...
;ous pouve4 choisir n>5 le double point5 etl
-
7/26/2019 apprendre_python3_5
83/472
D#inir une #onction 0
7 %4 2% 28 35 42 49 5 3 70
Nous pouvons maintenant r"utiliser cette 3onction plusieurs reprises5 autant de 3ois !ue nous lesouhaitons% Nous pouvons "galement l
-
7/26/2019 apprendre_python3_5
84/472
0M onctions originales
Dans la d"3inition d>> !# t(s)1... n = %... ;h n %% 1... p'nt(n * s, n! =& &)... n = n +%
*a 3onction table()telle !ue d"3inie ci-dessus utilise le paramtre basepour calculer les dix premierstermes de la table de multiplication correspondante%
Pour tester cette nouvelle 3onction5 il nous su33it de l>> t(%3)%3 2 39 52 5 78 9% %04 %%7 %30
>>> t(9)9 %8 27 3 45 54 3 72 8% 90
Dans ces exemples5 la valeur !ue nous indi!uons entre parenthses lors de l
-
7/26/2019 apprendre_python3_5
85/472
D#inir une #onction 0I
+e nom dune /ariable 3ue nous passons comme argument na rien /oir a/ec le nom duparam0tre correspondant dans la fonction.
(es noms peuvent 6tre identi!ues si vous le voule45 mais vous deve4 bien comprendre !u
-
7/26/2019 apprendre_python3_5
86/472
00 onctions originales
*ors de l p'nt(s)B'] (most 'nt st)1 "st!n>", n %, n mo!u>
@m?''o'1 nm &s& s not !#n!
*a machine nous signale clairement !ue le symbole baselui est inconnu5 alors !u
-
7/26/2019 apprendre_python3_5
87/472
ariables locales! variables globales 0H
Nous commen@ons par d"3inir une 3onction trs simple 9!ui n>> mont'()%7>>>
-
7/26/2019 apprendre_python3_5
88/472
0 onctions originales
&raies fonctions et proc!dures
Pour les puristes5 les 3onctions !ue nous avons d"crites 'us!u>> !# u(;)1... 'tu'n ;*;*;...
*> p'nt()729
titre d
-
7/26/2019 apprendre_python3_5
89/472
raies #onctions et procdures 0K
9Iappel : le premier "l"ment d>> p'nt(t(9)O3P)
>R 'tu'npeut "galement 6tre utilis" sans aucun argument5 l int"rieur dune 3onction5 pour provo!uer sa
3ermeture imm"diate% *a valeur retourn"e dans ce cas est l ob'et @on9ob'et particulier5 correspondant , rien 2%
-
7/26/2019 apprendre_python3_5
90/472
H1 onctions originales
ou encore plus simplement encore :>>> u(9)%%%
%tilisation des fonctions dans un scriptPour cette premire approche des 3onctions5 nous n
-
7/26/2019 apprendre_python3_5
91/472
?tilisation des #onctions dans un script H-
!u
-
7/26/2019 apprendre_python3_5
92/472
HG onctions originales
les classes d
-
7/26/2019 apprendre_python3_5
93/472
(odules de #onctions H
-
7/26/2019 apprendre_python3_5
94/472
HM onctions originales
Exercices
W% D"3inisse4 une 3onction ligneCar(n+ ca)!ui renvoie une cha?ne de ncaractres ca%
W%> D"3inisse4 une 3onction sur#Cercle(>)% (ette 3onction doit renvoyer la sur3ace 9l
-
7/26/2019 apprendre_python3_5
95/472
(odules de #onctions HI
W%G A'oute4 au module de l
-
7/26/2019 apprendre_python3_5
96/472
H0 onctions originales
*ypage des paramtres
;ous ave4 appris !ue le tpagedes variables sous Python est un tpage dnamique5 ce !ui signi3ie !ue letype d>> ##h'3#os(5)5 5 5
>>> ##h'3#os('Mut')
Mut Mut Mut
>>> ##h'3#os(O5, 7P)O5, 7P O5, 7P O5, 7P
>>> ##h'3#os(**2)3 3 3
Dans cet exemple5 vous pouve4 constater !ue la m6me 3onction a##icher*#ois()accepte dans tous lescas l> !# potss(nom, !tt ='
-
7/26/2019 apprendre_python3_5
97/472
aleurs par d#aut pour les param+tres HH
Autre exemple :
>>> !# uston(nnon, sss =4, ps ='Gu ou non, s..p.')1... ;h sss >01... 'pons = nput(nnon)... # 'pons n ('o', 'ou','G','Gu','GAF')1... 'tu'n %... # 'pons n ('n','non','@','@on','@G@')1... 'tu'n 0... p'nt(ps)... sss = sss-%...>>>
(ette 3onction peut 6tre appel"e de di33"rentes 3a@ons5 telles par exemple :
'p = uston('ZouM-ous 'mnt t'mn' $ ')
ou bien :'p = uston('ut- ##' #h' $ ', 3)
ou m6me encore :
'p = uston('WM-ous omp's $ ', 2, 'Upon!M p' ou ou p' non ')
Prene4 la peine d> !# osu(otg=%00, tt='um', ton='!ns' H')1... p'nt('I p''out n pou'' ps', ton)... p'nt('s ous 'nhM su'', otg, 'ots ')... p'nt("6'utu' ! st omptmnt", tt)...
>>> osu(tt='g'', otg=250, ton='ous pp'ou'')I p''out n pou'' ps ous pp'ou's ous 'nhM su' 250 ots 6'utu' ! st omptmnt g'
>>> osu()I p''out n pou'' ps !ns' Hs ous 'nhM su' %00 ots 6'utu' ! st omptmnt um
-
7/26/2019 apprendre_python3_5
98/472
H onctions originales
Exercices
W%7 Qodi3ie4 la 3onction "ol?oite(1+2+*)!ue vous ave4 d"3inie dans un exercice pr"c"dent5 demanire ce !u>> ph's = 'I st un tout ptt ph's.'>>> p'nt(hngI'(ph's, '', '*'))I*st*un*tout*ptt*ph's.>>> p'nt(hngI'(ph's, '', '*', 8, %2))I st*un*tout ptt ph's.>>> p'nt(hngI'(ph's, '', '*', %2))I st un*tout*ptt*ph's.>>> p'nt(hngI'(ph's, '', '*', #n = %2))I*st*un*tout ptt ph's.
W%W D"3inisse4 une 3onction ele
-
7/26/2019 apprendre_python3_5
99/472
9?tilisation de #entres et de
graphismes
"usqu) prsent! nous avons utilis 5thon exclusivement 4 en mode texte 6. Eous avons procdainsi parce qu)il nous #allait absolument d)abord dgager un certain nombre de conceptslmentaires ainsi que la structure de base du langage! avant d)envisager des expriencesimpliquant des ob,ets in#ormatiques plus labors R#entres! images! sons! etc.S. Eous pouvonsmaintenant nous permettre une petite incursion dans le vaste domaine des inter#aces graphiques!mais ce ne sera qu)un premier amuse=gueule : il nous reste en e##et encore bien des choses#ondamentales apprendre! et pour nombre d)entre elles l)approche textuelle reste la plusabordable.
3nterfaces graphi"ues F#%3G)i vous ne le savie4 pas encore5 apprene4 ds pr"sent !ue le domaine des inter3aces graphi!ues 9ou2?;! 2raphical ?ser ;nter#aces est extr6mement complexe% (ha!ue systme d
-
7/26/2019 apprendre_python3_5
100/472
1 ?tilisation de #entres et de graphismes
remiers pas avec tkinter
Pour la suite des explications5 nous supposerons bien "videmment !ue le module t%interH a d"' "t"install" sur votre systme% Pour pouvoir en utiliser les 3onctionnalit"s dans un script Python5 il 3aut!ue l%05 le nom de ce module commen@ait par unema'uscule%>G , widget 6est le r"sultat de la contraction de lexpression , window gadget 6% Dans certains environnementsde programmation5 on appellera cela plutt un , contrle 2 ou un , composant graphi!ue 2% (e terme d"signeen 3ait toute entit" susceptible d6tre plac"e dans une 3en6tre dapplication5 comme par exemple un bouton5une case cocher5 une image5 etc%5 et par3ois aussi la 3en6tre elle-m6me%>F )i vous e33ectue4 cet exercice sous >indows5 nous vous conseillons dutiliser de pr"3"rence une version
standard de Python dans une 3en6tre DJ) ou dans /D*E plutt !ue 5thon>in.;ous pourre4 mieux observerce !ui se passe aprs lentr"e de cha!ue commande%
-
7/26/2019 apprendre_python3_5
101/472
5remiers pas avec t%inter -
% la deuxime ligne de notre exemple : #n% = B]()5 nous utilisons l
-
7/26/2019 apprendre_python3_5
102/472
G ?tilisation de #entres et de graphismes
, ma?tre 2 : l
-
7/26/2019 apprendre_python3_5
103/472
5remiers pas avec t%inter
W% *a septime ligne : #n%.mnoop() est trs importante5 parce !ue c
-
7/26/2019 apprendre_python3_5
104/472
M ?tilisation de #entres et de graphismes
*ors!u
-
7/26/2019 apprendre_python3_5
105/472
5rogrammes pilots par des vnements I
termin" le sien77% *es systmes d
-
7/26/2019 apprendre_python3_5
106/472
0 ?tilisation de #entres et de graphismes
p=O'pu'p','yn','m'oon','g'n',''!','u','o'ng','yo;'P = 'n!'ng(8) # (' $n+re un nombre alatoire de @
ou = pOP#------ Pro$ramme principal -------
# les variables suivantes seront utilises de mani+re $lobale :%, y%, 2, y2 = %0, %90, %90, %0 # coordonnes de la li$neou = '!'] g'n' # couleur de la li$ne
# *ration du Fid$et principal %matre& :#n% = B]()# cration des Fid$ets esclaves :n% = Ins(#n%,g='!'] g'y',hght=200,;!th=200)n%.p](s!=6?B)ou% = Yutton(#n%,tt='Qutt'',ommn!=#n%.ut)ou%.p](s!=YGBBG
-
7/26/2019 apprendre_python3_5
107/472
5rogrammes pilots par des vnements H
!u Agrandisse4 le canevas de manire lui donner une largeur de 800 unit"s et une hauteur deR80% Qodi3ie4 "galement la taille des lignes5 a3in !ue leurs extr"mit"s se con3ondent avec lesbords du canevas%
G%7 A'oute4 une 3onction drawli ne2 !ui tracera deux lignes rouges en croix au centre ducanevas : l
-
7/26/2019 apprendre_python3_5
108/472
?tilisation de #entres et de graphismes
m"thodes associ"es ces classes 9"galement avec leurs paramtres% *aisse4 de la place pourcompl"ter ult"rieurement%
+xemple graphi"ue : deux dessins altern!s
(et autre exemple vous montrera comment vous pouve4 exploiter les connaissances !ue vous ave4ac!uises pr"c"demment5 concernant les boucles5 les listes et les 3onctions5 a3in de r"aliser denombreux dessins avec seulement !uel!ues lignes de code% /l s
-
7/26/2019 apprendre_python3_5
109/472
5rogrammes pilots par des vnements K
O44, %%5, 20, ''!'P, # Goues O%5, %%5, 20, ''!'P,
O%00, 95, %5, &pu'p'P, # ne1 O%00, %45, 30, 'pu'p'PP # bouche # on trace tous les cercles l,aide d,une boucle : =0 ;h n()1 # parcours de la liste = OP # chaque lment est lui-mIme une liste '(O0P, O%P, O2P, O3P) += %
##### Pro$ramme principal : #############n = B]()n = Ins(#n, ;!th =200, hght =200, g ='o'y')n.p](s! =BGS, p! =5, p!y =5)% = Yutton(#n, tt ='!ssn %', ommn! =#gu'[%)
%.p](s! =6?B, p! =3, p!y =3)2 = Yutton(#n, tt ='!ssn 2', ommn! =#gu'[2)2.p](s! =UFT^B, p! =3, p!y =3)#n.mnoop()
(ommen@ons par analyser le programme principal5 la 3in du script :
Nous y cr"ons une 3en6tre5 par instanciation d
-
7/26/2019 apprendre_python3_5
110/472
K1 ?tilisation de #entres et de graphismes
sant% Note4 au passage l
-
7/26/2019 apprendre_python3_5
111/472
5rogrammes pilots par des vnements K-
# E.ercice utilisant la biblioth+que $raphique t
-
7/26/2019 apprendre_python3_5
112/472
KG ?tilisation de #entres et de graphismes
*e corps du programme principal contient la phase d
-
7/26/2019 apprendre_python3_5
113/472
5rogrammes pilots par des vnements K
le type d
-
7/26/2019 apprendre_python3_5
114/472
KM ?tilisation de #entres et de graphismes
de programmation importants, tels ceux de classe et dob9et. 5euillez donc consulter lalittrature /oir page17- si /ous sou"aitez da/antage de prcisions.
/l existe 8 classes de base pour les &idgets t$inter :
Widget Description
*utton +n bouton classi,ue - utiliser pour provo,uer l.ex!cution d.une commande,uelcon,ue'
/anvas +n espace pour disposer divers !l!ments graphi,ues' /e widget peut 0treutilis! pour dessiner cr!er des !diteurs graphi,ues et aussi pour impl!menterdes widgets personnalis!s'
/heckbutton +ne case - cocher ,ui peut prendre deux !tats distincts la case est coch!e ounon2' +n clic sur ce widget provo,ue le changement d.!tat'
(ntry +n champ d.entr!e dans le,uel l.utilisateur du programme pourra ins!rer un
texte ,uelcon,ue - partir du clavier'Frame +ne surface rectangulaire dans la fen0tre o3 l.on peut disposer d.autres
widgets' /ette surface peut 0tre color!e' (lle peut aussi 0tre d!cor!e d.unebordure'
4abel +n texte ou libell!2 ,uelcon,ue !ventuellement une image2'
4istbox +ne liste de choix propos!s - l.utilisateur g!n!ralement pr!sent!s dans unesorte de bo5te' 6n peut !galement configurer la 4istbox de telle mani7re,u.elle se comporte comme une s!rie de 8 boutons radio 9 ou de cases -cocher'
:enu +n menu' /e peut 0tre un menu d!roulant attach! - la barre de titre ou bienun menu 8pop up9 apparaissant n.importe o3 - la suite d.un clic'
:enubutton +n bouton;menu - utiliser pour impl!menter des menus d!roulants'
:essage adiobutton >epr!sente par un point noir dans un petit cercle2 une des valeurs d.unevariable ,ui peut en poss!der plusieurs' /li,uer sur un bouton radio donne lavaleur correspondante - la variable et 8 vide 9 tous les autres boutons radioassoci!s - la m0me variable'
?cale Vous permet de faire varier de mani7re tr7s visuelle la valeur d.une variableen d!pla@ant un curseur le long d.une r7gle'
?crollbar Ascenseur ou barre de d!filement ,ue vous pouveB utiliser en association avecles autres widgets C /anvas (ntry 4istbox Text'
Text Affichage de texte format!'
-
7/26/2019 apprendre_python3_5
115/472
?tilisation de la mthode grid pour contrOler la disposition des widgets KI
%tilisation de la m!thode grid pour contr1ler la disposition des widgets
Kus!u
-
7/26/2019 apprendre_python3_5
116/472
K0 ?tilisation de #entres et de graphismes
Dans ce script5 nous avons donc remplac" la m"thode pac:()par la m"thode grid()% (omme vouspouve4 le constater5 l colonnes : une premire avec les > cha?nes de caractres5 une seconde avecles > champs d
-
7/26/2019 apprendre_python3_5
117/472
?tilisation de la mthode grid pour contrOler la disposition des widgets KH
tt% = 6(#n%, tt ='S'm' hmp 1')tt2 = 6(#n%, tt ='on! 1')
tt3 = 6(#n%, tt ='B'osm 1')nt'% = ?nt'y(#n%)nt'2 = ?nt'y(#n%)nt'3 = ?nt'y(#n%)
# cration d,un Fid$et ,*anvas, contenant une ima$e bitmap :n% = Ins(#n%, ;!th =%0, hght =%0, g =';ht')photo = ShotoFmg(# ='m'tn[p.g#')tm = n%.'t[mg(80, 80, mg =photo)
# )ise en pa$e l,aide de la mthode ,$rid, :tt%.g'!('o; =%, st]y =?)tt2.g'!('o; =2, st]y =?)tt3.g'!('o; =3, st]y =?)nt'%.g'!('o; =%, oumn =2)
nt'2.g'!('o; =2, oumn =2)nt'3.g'!('o; =3, oumn =2)n%.g'!('o; =%, oumn =3, 'o;spn =3, p! =%0, p!y =5)
# dmarra$e :#n%.mnoop()
Pour pouvoir 3aire 3onctionner ce script5 il vous 3audra probablement remplacer le nom du 3ichierimage 9martin\p.gi# par le nom d
-
7/26/2019 apprendre_python3_5
118/472
K ?tilisation de #entres et de graphismes
Jn pourrait tout aussi bien num"roter : 85 05 85 0%%% puis!ue t$inter ignore les lignes et lescolonnes vides% Num"roter partir de l augmente probablement la lisibilit" de notre code%
7% *es arguments utilis"s avec grid()pour positionner le canevas :n%.g'!('o; =%, oumn =3, 'o;spn =3, p! =%0, p!y =5)
*es deux premiers arguments indi!uent !ue le canevas sera plac" dans la premire ligne de latroisime colonne% *e troisime 9'o;spn =3 indi!ue !u
-
7/26/2019 apprendre_python3_5
119/472
'omposition d)instructions pour crire un code plus compact KK
n
-
7/26/2019 apprendre_python3_5
120/472
-11 ?tilisation de #entres et de graphismes
*e script ci-dessous intgre les simpli3ications !ue nous venons d
-
7/26/2019 apprendre_python3_5
121/472
(odi#ication des proprits d)un ob,et P Animation -1-
# *ration du Fid$et principal %matre& :#n% = B]()
#n%.tt("?' !'nmton t]nt'")# cration des Fid$ets esclaves :n% = Ins(#n%,g='!'] g'y',hght=300,;!th=300)o% = n%.'t[o(%,y%,%+30,y%+30,;!th=2,#=''!')n%.p](s!=6?B)Yutton(#n%,tt='Qutt'',ommn!=#n%.ut).p](s!=YGBBG
-
7/26/2019 apprendre_python3_5
122/472
-1G ?tilisation de #entres et de graphismes
G%7 Extension du programme ci-dessus% 1aire appara?tre un troisime astre5 et a33icher enpermanence la 3orce r"sultante agissant sur chacun des trois 9en e33et : chacun subit enpermanence l
-
7/26/2019 apprendre_python3_5
123/472
(odi#ication des proprits d)un ob,et P Animation -1
Qarche#arr6tf pour cela% Des , "ti!uettes 2 doivent a33icher en permanence les tensions etintensit"s r"sultant des choix e33ectu"s par l
-
7/26/2019 apprendre_python3_5
124/472
-1M ?tilisation de #entres et de graphismes
ou3.p]()# dmarra$e du rceptionnaire d,vnements %boucle principale& :
#n%.mnoop()
*a seule nouveaut" mise en Yuvre dans ce script se trouve tout la 3in de la d"3inition de la 3onctionmo"e(): vous y notere4 l
-
7/26/2019 apprendre_python3_5
125/472
Animation automatique P Jcursivit -1I
G%R Qodi3ie4 le programme de manire obtenir d
-
7/26/2019 apprendre_python3_5
126/472
-
7/26/2019 apprendre_python3_5
127/472
8K(anipuler des #ichiers
"usqu) prsent! les programmes que nous avons raliss ne traitaient qu)un tr+s petit nombre dedonnes. Eous pouvions donc chaque #ois inclure ces donnes dans le corps du programme
lui=mme Rpar exemple dans une listeS. 'ette #aQon de procder devient cependant tout #aitinadquate lorsque l)on souhaite traiter une quantit d)in#ormations plus importante.
%tilit! des fichiers/maginons par exemple !ue nous voulions "crire un petit programme exerciseur !ui 3asse appara?tre l
-
7/26/2019 apprendre_python3_5
128/472
-1 (anipuler des #ichiers
st = O"Qu nu @poon N at'oo $", "Iommnt t'!ut-on n#o'mtu n ngs $",
"Qu st #o'mu hmu !u mthn $", ... t ...P
Jn peut en e33et extraire n
-
7/26/2019 apprendre_python3_5
129/472
-
7/26/2019 apprendre_python3_5
130/472
--1 (anipuler des #ichiers
Les deux formes dimportation
*es lignes d>> 'p[ou' = os.gt;!()>>> p'nt 'p[ou'I1CSython22Csss
*a premire ligne de cet exemple importe l
-
7/26/2019 apprendre_python3_5
131/472
Les deux #ormes d)importation ---
brer l oh' = opn('>> oh'.;'t('YonHou', #h' ')
>>> oh'.;'t("Qu u tmps, uHou'!'hu ")>>> oh'.os()>>>
$otes
*a premire ligne cr"e l
-
7/26/2019 apprendre_python3_5
132/472
--G (anipuler des #ichiers
*a m"thode write()r"alise l>> p'nt(t)YonHou', #h' Qu u tmps, uHou'!'hu >>> o#.os()
(omme on pouvait s o# = opn('>> o# = opn('>> p'nt(t)YonHou'>>> t = o#.'!(%5)>>> p'nt(t), #h' Qu
)
-
7/26/2019 apprendre_python3_5
133/472
Lecture squentielle d)un #ichier --
>>> t = o#.'!(%000)>>> p'nt(t)
u tmps, uHou'!'hu
)i la 3in du 3ichier est d"' atteinte5 read()renvoie une cha?ne vide :>>> t = o#.'!()>>> p'nt(t)
N>> o#.os()
6ans tout ce 3ui prc0de, nous a/ons admis sans explication 3ue les c"a;nes decaract0res taient c"anges telles 3uelles entre linterprteur P(t"on et le fic"ier.
-
7/26/2019 apprendre_python3_5
134/472
--M (anipuler des #ichiers
luer par une simple constante5 et vous save4 "galement8R!ue l 1 '] --- nst'utons !'ss --- # on!ton 3>1 ']
t.
Dans notre 3onction copieDichier()5 il est 3acile de voir !ue l et 88% *esoctets de valeur in3"rieure > correspondent des codes de contrle des anciens t"l"types et ne peuventg"n"ralement pas 6tre repr"sent"s par des caractres%8G )uivant le systme dexploitation utilis"5 le codage correspondant au mar!ueur de 3in de ligne peut 6tredi33"rent% )ous Oindo&s5 par exemple5 il sagit dune s"!uence de deux octets 9retour chariot et saut deligne5 alors !ue dans les systmes de type .nix 9comme *inux il s agit dun seul saut de ligne5 Qac J) poursa part utilisant un seul retour chariot% En principe5 vous nave4 pas vous pr"occuper de ces di33"rences%*ors des op"rations d"criture5 Python utilise la convention en vigueur sur votre systme d exploitation% Pour
la lecture5 Python interprte correctement chacune des trois conventions 9!ui sont donc consid"r"es comme"!uivalentes%
-
7/26/2019 apprendre_python3_5
135/472
ichiers texte --I
Note4 bien le mar!ueur de 3in de ligne Hnins"r" dans les cha?nes de caractres5 aux endroits oB l> # = opn('h'tt',''')>>> t = #.'!n()>>> p'nt(t)I st gn un>>> p'nt(#.'!n())Zo gn !u
*a m"thode readlines()trans3re toutes les lignes restantes dans une liste de cha?nes :>>> t = #.'!ns()>>> p'nt(t)O'Zo gn t'osCn', 'Zo gn ut'Cn'P>>> #.os()
,emar"ues
*a liste appara?t ci-dessus en 3ormat brut5 avec des apostrophes pour d"limiter les cha?nes5 et lescaractres sp"ciaux sous leur 3orme conventionnelle% ;ous pourre4 bien "videmment parcourircette liste 9 l
-
7/26/2019 apprendre_python3_5
136/472
--0 (anipuler des #ichiers
Pour appeler cette 3onction5 vous deve4 utiliser deux arguments : le nom du 3ichier original5 et le nomdu 3ichier destin" recevoir la copie 3iltr"e% Exemple :
#t'('tst.tt', 'tst[#.tt')
+nregistrement et restitution de variables diverses*G% Qais la !uestionn>> = 5>>> = 2.83>>> = 7>>> # = opn('>> #.;'t(st'())>>> #.;'t(st'())
>>> #.;'t(st'())>>> #.os()>>> # = opn('>> , , = 27, %2.9, O5, 4.83, "Un"P>>> # =opn(&!onns[tst&, &;&)>>> p].!ump(, #)>>> p].!ump(, #)>>> p].!ump(, #)>>> #.os()>>> # = opn(&!onns[tst&, &'&)>>> H = p].o!(#)>>> ] = p].o!(#)>>> = p].o!(#)>>> p'nt(H, typ(H))
8F En anglais5 le termepic%lesigni3ie , conserver 2% *e module a "t" nomm" ainsi parce !u il sert e33ectivement enregistrer des donn"es en conservant leur type%
-
7/26/2019 apprendre_python3_5
137/472
$nregistrement et restitution de variables diverses --H
27 ss &nt&>>>> p'nt(], typ(]))
%2.9 ss ot&>>>> p'nt(, typ())O5, 4.83, &Un&P ss &st&>>>> #.os()
(omme vous pouve4 le constater dans ce court exemple5 le module pic%lepermet d p'nt(55/0)b'oRson?''o'1 nt !son o' mo!uo y M'o
6autres informations complmentaires sont affic"es, indi3uant notamment 3uelendroit du script lerreur a t dtecte, mais nous ne les reproduisons pas ici.
*e message d
-
7/26/2019 apprendre_python3_5
138/472
-- (anipuler des #ichiers
.n m"canisme de ce type s
-
7/26/2019 apprendre_python3_5
139/472
2estion des exceptions : les instructions tr P except P else --K
F% (onsid"rons !ue vous ave4 votre disposition un 3ichier texte contenant des phrases dedi33"rentes longueurs% crive4 un script !ui recherche et a33iche la phrase la plus longue%
F%> crive4 un script !ui g"nre automati!uement un 3ichier texte contenant les tables demultiplication de >0 9chacune d
-
7/26/2019 apprendre_python3_5
140/472
-
7/26/2019 apprendre_python3_5
141/472
- "mon!"1p = "sut"
s1p = "s on#on! "
p'nt("6 mot", mot, p, " mot &mon!& !ns &o'!' phtu")
(es comparaisons sont possibles5 parce !ue dans toutes les normes d5 les cha?nes de caractres 9donn"es de type string sont d"sormais des cha?nes.nicodeR5ce !ui signi3ie !ue les identi3iants num"ri!ues de leurs caractres sont uni!ues 9il ne peutexister !u
-
7/26/2019 apprendre_python3_5
148/472
-G Appro#ondir les structures de donnes
tres5 on put l
-
7/26/2019 apprendre_python3_5
149/472
Le point sur les chaNnes de caract+res -GK
Nous verrons un peu plus loin dans ce chapitre !u
-
7/26/2019 apprendre_python3_5
150/472
-1 Appro#ondir les structures de donnes
>>> hn = "Wm t ?ugnCn">>> o# =opn("tst.tt", ";")
>>> o#.;'t(hn)%7>>> o#.os()
Avec ces !uel!ues lignes5 nous avons enregistr" la cha?ne de caractres chainesous la 3orme d o# =opn("tst.tt", "'") # rb (' mode lecture %r& binaire %b&>>> otts =o#.'!()>>> o#.os()>>> typ(otts)ss &yts&>
En proc"dant ainsi5 nous ne r"cup"rons donc pas notre cha?ne de caractres initiale5 mais bien satraduction concrte en octets5 dans une donn"e de type btes% Essayons d et W sont repr"sent"s par le caractrecorrespondant du code A)(//%
(ertains octets de valeur num"ri!ue in3"rieure > sont repr"sent"s de manire conventionnelle5comme le caractre de 3in de ligne%
*es autres octets sont repr"sent"s par leur valeur hexad"cimale5 pr"c"d"e de C%
Dans notre exemple5 on voit !ue les caractres non accentu"s de la cha?ne utilis"e ont "t" encod"s
chacun l
-
7/26/2019 apprendre_python3_5
151/472
Le point sur les chaNnes de caract+res --
(ette 3ois5 nous voyons trs clairement !u>> n(otts)%9
*es op"rations d", n %, n mo!u>
Byp?''o'1 must st', not yts
Pour enregistrer une s"!uence d
-
7/26/2019 apprendre_python3_5
152/472
-G Appro#ondir les structures de donnes
*a norme d>> typ(h[')ss &st'&>
R8 Dans une 3en6tre d
-
7/26/2019 apprendre_python3_5
153/472
Le point sur les chaNnes de caract+res -
*eparcoursde la cha?ne obtenue nous 3ournit bien des caractres5 cette 3ois :
>>> #o' n h['1... p'nt(, n! =& &)...W m t ? u g n
Conversion dune chaBne string en chaBne bytes
Pour convertir une cha?ne de caractres en une s"!uence d
-
7/26/2019 apprendre_python3_5
154/472
-M Appro#ondir les structures de donnes
*a techni!ue est simple% /l su33it d>> o#.os()>>> p'nt(otts)&WmC9 t ?ugC8nCn&
^ etc%
H /ous deffectuer di/ers contr8les et essais sur cette s3uence doctets, si /ous lesou"aitez.
(
"/us'//python3.%/o!s.py", n 300, n !o!('sut, onsum!) = s#.[u##'[!o!(!t, s#.''o's, #n)
Ano!Ro!?''o'1 &ut#8& o! n&t !o! yts n poston 2-41n! !t
*e message d> o# =opn("tst.tt", "'", no!ng ="6tn-%")>>> h[u =o#.'!()>>> o#.os()>>> h[u&Wm t ?ugnCn&
Dans les scripts "labor"s5 il sera probablement tou'ours pr"3"rable de pr"ciser l
-
7/26/2019 apprendre_python3_5
155/472
Le point sur les chaNnes de caract+res -I
di33"rentes normes% A3in !ue Python puisse les interpr"ter correctement5 il vous est conseill" d
-
7/26/2019 apprendre_python3_5
156/472
-0 Appro#ondir les structures de donnes
Wpht g' (mnusu) 1 EFGHIJKLMNOPQRS TUVWXYZ[\
Exercices0%7 crive4 un petit script !ui a33iche une table des codes A9';;% *e programme doit a33icher tous
les caractres en regard des codes correspondants% partir de cette table5 "tablisse4 la relationnum"ri!ue simple reliant cha!ue caractre ma'uscule au caractre minuscule correspondant%
0%8 Qodi3ie4 le script pr"c"dent pour explorer les codes situ"s entre G et 8R5 oB vousretrouvere4 nos caractres accentu"s 9parmi de nombreux autres% *a relation num"ri!uetrouv"e dans l
-
7/26/2019 apprendre_python3_5
157/472
Le point sur les chaNnes de caract+res -H
>>> 4.spt(",")O'It mp', " p'm !'ut's", 'put no' s'''P
join(liste) : rassemble une liste de cha?nes en une seule 9cette m"thode e33ectue donc l> =O"Yt", "N", "mng'", "!u", "#on"P> >> p'nt(" ".Hon())Yt N mng' !u #on>>> p'nt("---".Hon())Yt---N---mng'---!u---#on
#ind(sch) : cherche la position d>> h% = "Itt Lon ut n un #'omg, sns !out $"
>>> h2 = "#'omg">>> p'nt(h%.#n!(h2))25
count(sch) : compte le nombre de sous-cha?nes schdans la cha?ne :>>> h% = "6 h'on u ong mmnh !'un ong ou">>> h2 = 'ong'>>> p'nt(h%.ount(h2))2
lower() : convertit une cha?ne en minuscules :>>> h = "I6F h ="'t 'n s 'onu">>> p'nt(h.tt())W't Un s Z'onu
capitali;e() : variante de la pr"c"dente% (onvertit en ma'uscule seulement la premire lettre de lacha?ne :
>>> 3 = "u u tmps, uHou'!hu ">>> p'nt(3.ptM())"Qu u tmps, uHou'!hu "
swapcase() : convertit toutes les ma'uscules en minuscules5 et vice-versa :>>> h = "6 6' ?t 6 Bo'tu">>> p'nt(h.s;ps())? FiZU? B W tGUBA?
strip() : enlve les espaces "ventuels au d"but et la 3in de la cha?ne :>>> h = "
-
7/26/2019 apprendre_python3_5
158/472
- Appro#ondir les structures de donnes
>>> h8 = " n'st to 'st !on ton #''">>> p'nt(h8.'p(" ","*"))
**n'st*to*'st*!on*ton*#'' inde(car) : retrouve l>> h9 ="So'tM u ;hs]y u Hug on! u #um">>> p'nt(h9.n!(";"))%
Dans la plupart de ces m"thodes5 il est possible de pr"ciser !uelle portion de la cha?ne doit 6tre trait"e5en a'outant des arguments suppl"mentaires% Exemples :
>>> p'nt (h9.n!("")) # cherche partir du dbut de la chane4 # et trouve le premier ,e,>>> p'nt (h9.n!("",5)) # cherche seulement partir de l,indice 68 # et trouve le second ,e,>>> p'nt (h9.n!("",%5)) # cherche partir du caract+re nA 3629 # et trouve le quatri+me ,e,
Etc%
(omprene4 bien !u
-
7/26/2019 apprendre_python3_5
159/472
Le point sur les chaNnes de caract+res -K
cha?ne de caractres complexe partir d>> p =3.%4%>>> ' =4.7>>> h ="6' !un !su ! 'yon l st g N l.">>> p'nt(h.#o'mt(', p * '**2))
6' !un !su ! 'yon 4.7 st g N 9.397944.
*es balises peuvent contenir des num"ros d>> ph's ="6l0 hnl0 ol% t l0 htl0 mul%.">>> p'nt(ph's.#o'mt("", ""))6 hn o t ht mu.>>> p'nt(ph's.#o'mt("s", "nt"))6s hns ont t s hts munt.
*es balises peuvent aussi contenir des indications de 3ormatage 9en con'onction ou non avec desnum"ros d> h ="6&' !&un !su ! 'yon l st g N l18.2#."
-
7/26/2019 apprendre_python3_5
160/472
-M1 Appro#ondir les structures de donnes
>>> p'nt(h.#o'mt(', p * '**2))6&' !&un !su ! 'yon 4.7 st g N 9.40.
>>> h ="6&' !&un !su ! 'yon l0 st g N l%1.2.">>> p'nt(h.#o'mt(', p * '**2))6&' !&un !su ! 'yon 4.7 st g N .94+0%.
Dans le premier essai5 le r"sultat est 3ormat" de manire comporter un total de G caractres5dont chi33res aprs le point d"cimal% Dans le second5 le r"sultat est pr"sent" en notationscienti3i!ue 9+0%signi3ie x 00% ;euille4 constater au passage !ue les arrondis "ventuels sonte33ectu"s correctement%
*a description complte de toutes les possibilit"s de 3ormatage comporterait plusieurs pages5 et celasortirait largement du cadre de ce livre% )%0 utilisaient une techni!ue de 3ormatage l"grementdi33"rente et un peu moins "labor"e5 !ui reste encore utilisable% /l est cependant 3ortement conseill"
d>> ou ="'t">>> tmp = %.347 + %5.9>>> p'nt ("6 ouu' st s t tmp'tu' ut s I" (ou, tmp))6 ouu' st 't t tmp'tu' ut %7.247 I
*a balise s'oue le m6me rle !ue ldans la nouvelle techni!ue% Elle accepte n
-
7/26/2019 apprendre_python3_5
161/472
Le point sur les chaNnes de caract+res -M-
0% ;ariante de l
-
7/26/2019 apprendre_python3_5
162/472
-MG Appro#ondir les structures de donnes
>>> p'nt(nom'sO2P)%0
>>> p'nt(nom'sO%13P)O38, %0P>>> p'nt(nom'sO213P)O%0P>>> p'nt(nom'sO21P)O%0, 25P>>> p'nt(nom'sO12P)O5, 38P>>> p'nt(nom'sO-%P)25>>> p'nt(nom'sO-2P)%0
*es exemples ci-dessus devraient attirer votre attention sur le 3ait !u>> nom'sO%7, 38, %0, 25P
Dans l stu##O3PO%P = "Fs">>> stu##O5000, 'Y'gtt', 3.%4%5999999999999, O'W't', 'Fs', %947PP
(omme c
-
7/26/2019 apprendre_python3_5
163/472
Le point sur les listes -M
O%0, %7, 25, 38, 72, %2P
>>> nom's.''s() # inverser l,ordre des lments>>> nom'sO%2, 72, 38, 25, %7, %0P
>>> nom's.n!(%7) # retrouver l,inde. d,un lment4
>>> nom's.'mo(38) # enlever %effacer& un lment>>> nom'sO%2, 72, 25, %7, %0P
En plus de ces m"thodes5 vous dispose4 encore de l> ! nom'sO2P
>>> nom'sO%2, 72, %7, %0P>>> ! nom'sO%13P>>> nom'sO%2, %0P
Note4 bien la di33"rence entre la m"thode remo"e()et l5 85 W5 5 >5 W5 F 9ces nombres seront plac"s au d"part dans une listesous la 3orme d0 )oit la liste suivante : OVn-
-
7/26/2019 apprendre_python3_5
164/472
-MM Appro#ondir les structures de donnes
de la semaine5 une liste des noms des mois5 et une liste des nombres de 'ours !ue comportentchacun des mois 9ne pas tenir compte des ann"es bissextiles%Exemple de sortie :Hu! % Hn' n!'! 2 Hn' sm! 3 Hn' !mnh 4 Hn'
%%% et ainsi de suite5 'us!u> mots = O'Hmon', '#'omg', 'on#tu'', 'hoot'P>>> motsO212P =O"m"P>>> motsO'Hmon', '#'omg', 'm', 'on#tu'', 'hoot'P
>>> motsO515P =O'susson', ']thup'P>>> motsO'Hmon', '#'omg', 'm', 'on#tu'', 'hoot', 'susson', ']thup'P
Pour utiliser cette techni!ue5 vous deve4 prendre en compte les particularit"s suivantes :
)i vous utilise4 l
-
7/26/2019 apprendre_python3_5
165/472
Le point sur les listes -MI
>>> motsO%1P = O'myonns', 'pout', 'tomt'P
>>> motsO'Hmon', 'myonns', 'pout', 'tomt'P
la premire ligne de cet exemple5 nous rempla@ons la tranche j:8k par une liste vide5 ce !uicorrespond un e33acement%
la !uatrime ligne5 nous rempla@ons une tranche par un seul "l"ment% Note4 encore une 3ois !uecet "l"ment doit lui-m6me 6tre , pr"sent" 2 comme une liste%
la Weligne5 nous rempla@ons une tranche de deux "l"ments par une autre !ui en comporte >%
Cr!ation dune liste de nombres ? laide de la fonction rangeFG
)i vous deve4 manipuler des s"!uences de nombres5 vous pouve4 les cr"er trs ais"ment l>> st('ng(%0))O0, %, 2, 3, 4, 5, , 7, 8, 9P
*a 3onction range()g"nre par d"3aut une s"!uence de nombres entiers de valeurs croissantes5 etdi33"rant d st('ng(5,%3))O5, , 7, 8, 9, %0, %%, %2P>>> st('ng(3,%,3))O3, , 9, %2, %5P
)i vous ave4 du mal assimiler l>> st('ng(%0, -%0, -3))O%0, 7, 4, %, -2, -5, -8P
arcours dune liste ? laide de for= rangeFG et lenFG
*
-
7/26/2019 apprendre_python3_5
166/472
-M0 Appro#ondir les structures de donnes
>>> p'o = O'6',''son','!u','pus','#o't','st','touHou's','','mu''P>>> #o' mot n p'o1
... p'nt(mot, n! =& &)...6 'son !u pus #o't st touHou's mu'
)i vous voule4 parcourir une gamme d> #o' n n 'ng(%0, %8, 3)1... p'nt(n, n**2, n**3)...%0 %00 %000%3 %9 2%97% 25 409
/l est trs prati!ue de combiner les 3onctions range()et len()pour obtenir automati!uement tous lesindices d>> #o' tm n !'s1... p'nt(tm, typ(tm))...
3 ss 'nt'>%7.25 ss '#ot'>O5, 'Vn'P ss 'st'>6nu s not an!oM ss 'st''>
Dans l
-
7/26/2019 apprendre_python3_5
167/472
Le point sur les listes -MH
>>> #'uts + gumsO'o'ng', 't'on', 'po'u', 'ognon', 'tomt'P
>>> #'uts * 3O'o'ng', 't'on', 'o'ng', 't'on', 'o'ng', 't'on'P
*>> spt[M'os = O0P*7>>> spt[M'osO0, 0, 0, 0, 0, 0, 0P
)upposons par exemple !ue vous voule4 cr"er une liste ?!ui contienne le m6me nombre d # n gums1... p'nt('Ge')...Ge
Copie dune liste
(onsid"rons !ue vous dispose4 d>> ph's = #
En proc"dant ainsi5 sache4 !ue vous ne creV pas une vritable copie% la suite de cette instruction5 iln>> ph's = #>>> #O4P ='ss'>>> ph'sO'V', 'p', 'ms', 'n', 'ss', 'pont'P
)i la variable phrasecontenait une v"ritable copie de la liste5 cette copie serait ind"pendante de l
-
7/26/2019 apprendre_python3_5
168/472
-M Appro#ondir les structures de donnes
Nous verrons plus tard lG Q6me !uestion5 mais autre suggestion : cr"e4 d
-
7/26/2019 apprendre_python3_5
169/472
Le point sur les listes -MK
0%70 ?n nombre premier est un nombre qui n)est divisible que par un et par lui=mme % crive4 unprogramme !ui "tablit la liste de tous les nombres premiers compris entre et 0005 enutilisant la m"thode du crible d)$ratosth+ne: (r"e4 une liste de 000 "l"ments5 chacun