Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python...

47
Python est mon ami Ludovic PINELLI 23 mai 2001

Transcript of Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python...

Page 1: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Pythonestmonami

Ludovic PINELLI

23mai2001

Page 2: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

2

Copyright c�

2001Ludovic PI NEL L I .

Permissionis grantedto copy, distributeand/ormodify this documentunderthetermsof the GNU FreeDocumentationLicense,Version1.1 or any later versionpublishedby theFreeSoftwareFoundation; with theInvariantSectionsbeing:

– Copyright,– Avant-propos,

with theFront-CoverTextsbeing:– Pythonestmonami,

andwith noBack-CoverTexts.A copy of thelicenseis includedin thesectionentitled"GNU FreeDocumentationLicense".

Page 3: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Avant-propos

Cedocumentn’estpasun courscompletsurle langagePython, ni surla program-mation en général.Il ne se destinepasnon plus à un public averti. Il faut plutôt leconsidérercommeun didacticieldestinéauxpersonnesn’ayantjamaisprogrammé.

J’ai essayéd’y mettreun peud’humourpour rendrel’apprentissageplusvivantetmoinsacadémique,toutenétantconscientquel’humourestunechosebiensuggestive,et qui plus est,difficile à faire passerpar écrit... Veuillez doncexcusezles fautesdegoût...

Pythonest l’un deslangagesles plus facile d’accès(Rubypeut être une bonnealternative). Saconcisionet sapuissance,permettentaux commençantsd’adopterdebonnespratiquesde programmation.Enfin, sonorientationobjet fait de lui uneplateformeidéalpours’introduiredansle mondedelangagesplusdifficilescommele C++ou le Java.

Commevousle remarquerez,ce« didacticiel» estloin d’êtreterminé,il estmêmeàl’état d’ébauchesi l’on considèrele travail qu’il meresteàfaire! Jetravaille dessusaugrèdu tempsqui m’estdisponible(etdemonpropreapprentissagedecelangage!)...

Touteremarque,suggestion,critique, insulte,seraévidemmentbienvenueà l’unedesadressessuivantes(deuxc’estmieuxqu’une):

[email protected]@wanadoo.fr

Ce documentestsoumisaux termesde la GFDL (GNU FreeDocumentationLi-cense). Vousavezdoncle droit dele lire, dele distribuer, dele donner, del’utiliser oude le brûlersansavoir à rien payer(lesclosesde la GFDL sontreproduitesenannexeB)...

Enfin, voustrouverezce texte dansles formatssuivants: html, ps,pdf, et dvi, letout issudu fichier sourceLATEX égalementdisponible.Ils sonttouslà :

http://ludovic.pinelli.free.fr/Python/ Pytho n_ami .html

Bonnelecture!

3

Page 4: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

4

Page 5: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Tabledesmatières

I Du basic? Non, du Python! 9

1 Jeconnaisrien à la programmation! 111.1 Quandon dit Python,on parleduserpent? . . . . . . . . . . . . . . . 111.2 Pythonpeutmesauver la vie... . . . . . . . . . . . . . . . . . . . . . 121.3 Si c’estsi bien,çadoit coûtercher! . . . . . . . . . . . . . . . . . . 131.4 Çay estje l’ai ! Commentje le fait marcher? . . . . . . . . . . . . . 13

2 Programmer : but de tout programmeur 172.1 VariationenDo mineur . . . . . . . . . . . . . . . . . . . . . . . . . 17

2.1.1 variabilisonsdonc... . . . . . . . . . . . . . . . . . . . . . . 192.2 En fonctiondequoi? . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.2.1 En françaisc’estquoi? . . . . . . . . . . . . . . . . . . . . . 202.2.2 Et voilà, je faisunefonctionenPython,sanscomplexe... . . . 202.2.3 Commentquej’f aispourl’utiliser c’te fonction? . . . . . . . 222.2.4 A quoi ça sertpuisqueje peux tapermon calcul directement

dansl’interpréteurinteractifPython? . . . . . . . . . . . . . 232.3 Jete jurequec’estvrai ! . . . . . . . . . . . . . . . . . . . . . . . . 24

2.3.1 L’if estun trèsbalarbre . . . . . . . . . . . . . . . . . . . . 242.3.2 Laissezlui vousposerlesquestions . . . . . . . . . . . . . . 262.3.3 Tantqu’il y auraPython,je neseraisplusseul.... . . . . . . . 272.3.4 Commentdit-il vrai ou faux? . . . . . . . . . . . . . . . . . 27

2.4 Et si je neveuxpasqu’il continuesesbouclettes? . . . . . . . . . . . 282.4.1 break-down! . . . . . . . . . . . . . . . . . . . . . . . . . . 282.4.2 continuonsje vousprie... . . . . . . . . . . . . . . . . . . . . 28

2.5 C’esttout? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.6 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Annexes 35

A Corrigés desexercices 35A.1 Exercicesdela partieI . . . . . . . . . . . . . . . . . . . . . . . . . 35

A.1.1 Petitexercice1 . . . . . . . . . . . . . . . . . . . . . . . . . 35A.1.2 Petitexercice2 . . . . . . . . . . . . . . . . . . . . . . . . . 35A.1.3 Petitexercice3 . . . . . . . . . . . . . . . . . . . . . . . . . 37

5

Page 6: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

6 TABLE DESMATIÈRES

B GNU FreeDocumentationLicense(GFDL) 39B.1 Applicability anddefinitions . . . . . . . . . . . . . . . . . . . . . . 40B.2 Verbatimcopying . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40B.3 Copying in quantity . . . . . . . . . . . . . . . . . . . . . . . . . . . 41B.4 Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41B.5 Combiningdocuments . . . . . . . . . . . . . . . . . . . . . . . . . 42B.6 Collectionsof documents. . . . . . . . . . . . . . . . . . . . . . . . 43B.7 Aggregationwith independentworks . . . . . . . . . . . . . . . . . . 43B.8 Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43B.9 Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43B.10 Futurerevisionsof this license . . . . . . . . . . . . . . . . . . . . . 44

Bibliographie 45

Index 46

Page 7: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Liste destableaux

2.1 Opérateursdecomparaison. . . . . . . . . . . . . . . . . . . . . . . 25

7

Page 8: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

8 LISTE DESTABLEAUX

Page 9: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Première partie

Du basic? Non, du Python!

9

Page 10: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être
Page 11: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Chapitr e 1

Je connaisrien à laprogrammation!

Sommaire

1.1 Quand on dit Python, on parle du serpent? . . . . . . . . . . . 111.2 Python peut me sauver la vie... . . . . . . . . . . . . . . . . . . 121.3 Si c’est si bien, ça doit coûter cher! . . . . . . . . . . . . . . . . 131.4 Ça y estje l’ai ! Comment je le fait marcher? . . . . . . . . . . 13

C’estpasgrave,avecPython, c’esttout c..n(il faudraqueje proposecesloganquime paraitpertinent).Il y a tout de mêmequelquesconnaissancesde baseà acquérir,maisje vousrassure,ellessontpeunombreuseset pasdifficiles.

1.1 Quand on dit Python, on parle du serpent?

Pasdutout,onparledesMonty Pyhon,biensûr(créateurs,entreautre,deLa viedeBrian, MontyPythonSacréGraal, la sériedesMontyPython’s Flying Circus, ...)! Etaccessoirementdu langagedeprogrammationqui portecenom.En effet, GuidoVAN

ROSSUM, qui inventacelangageen1989,aimebeaucoup.Et vousaussij’espère,parcequesinon:

1. vousn’avezpasd’humour, ou vousn’aimezpasl’humour anglais,danscecas,nousn’allonspasnousentendre;

2. la majorité desexemplesque vous trouverezsur le net pour ce langagefontréférenceauxsériesou auxfilms desMonty Pyhon.

Pythonestdoncun langagedeprogrammation,maisça,vousle saviezdéjàsi vouslisezcetexte.Maisdequeltypedelangages’agit-il ?Caril enexisteplusieurs.Certainssontcompilés, d’autressontinterprétés.

Pour les premiers,une fois que vous avez écrit le code,il faut un compilateurqui le transformeen un langagequeseulun ordinateurpeutcomprendre(le langagemachine),enfaisantappelau linker qui s’occupederassemblerlesfichiersépars,ainsiqu’audebugger qui vérifie la syntaxe.Résultat,vousobtenezun fichier exécutablequiestvotreprogramme.L’avantageestquele fichierobtenuestoptimisépourl’ordinateursurlequelil aétécompilé,et,étantencodemachine,sesperformancessonttrèsbonnes.

11

Page 12: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

12 CHAPITRE1. JECONNAIS RIEN À LA PROGRAMMATION !

Lesinconvénientssontquechaquefois quevousvouleztesterlamoindrefonctionnalitédevotreprogramme,il fautaupréalablele re-compiler, et,biensûr, çanefonctionnerapassi l’ensembledu coden’est pasopérationnel,enfin, le fichier ne s’exécuteraquesurun ordinateurayantle mêmeSE1 quele vôtre.

Leslangagesinterprétésfonctionnentdifféremment.L’ interpréteurinterprète(benoui) directementle codequevous tapezsansquevousayezà compilerquoi quecesoit. L’avantageest clair : gain de temps,possibilitéde testerune fonctionnalitéentempsréel,etc.L’inconvénient,c’estquepour faire fonctionnervotreprogrammesuruneautremachine,il fautquel’interpréteury soit installé.

Pythonfait partiede cettesecondecatégorie.De plus, l’ interpréteurPythonpeutêtreinstallésousde nombreuxSE différents: Unix/Linux, WindowsXX, BeOS,Ma-cintoshet j’en passe.Et biensûr, vousn’avezpasàadaptervotrecode,ceserale mêmepourtous.

1.2 Python peut mesauver la vie...

Apprendreà programmer, c’estapprendreun langagedeprogrammation.Or il enexisteplusieurs.Commepour les langagesparlés,ils n’utilisent paslesmêmesmots,ceux-cinesontpasforcémentplacésdansle mêmeordre,maisdanstouslescas,il y aaumoinsun sujetet un verbe.Alors pourquoienapprendreun plutôtqu’un autre?

Parcequesi toussontdifficiles à maîtriser, certainssontfacilesà apprendre.L’undesplusfaciles’appelled’ailleursPython(çatombebien).De plus,Pythonesttotale-mentorientéobjet(si vousnesavezpascequecelaveutdire,don’t worry), etpeutdoncêtreuneexcellentepasserellepouraborderdeslangagescommele C++ ou le Java,envousévitantdeprendredemauvaiseshabitudes.

Vousavezcertainementremarquéquecertainespersonnesparlentpourneriendire,avec unemultitudede fioritures,et il faut avoir un bon espritde synthèsepour com-prendrecequ’ils veulentdire; alorsqued’autresparlentavecuneclartéet unefluiditéexceptionnelle.Et bienPythonfait parti decesderniers(çatombeencorebien).

Enfin pour bien programmer, il faut bien penser. En effet, si vous ne savez pasexprimer clairementune idée,sa réalisationseraplutôt difficile et le codede votreprogrammeseracertainementtrèsembrouillé(oh! zut j’ai oubliédemettretelle fonc-tionnalité,je vaisla coller là et puis là et puis là aussi,je l’intégreraiplus tarddansleprogramme...2 joursplustard: c’estquoicetrucquej’ai mis là,çaapasl’air d’êtrere-lié àquelquechose,je l’enlève...voilà...Ah ! m..dec’était le trucquej’avaisoublié...).Heureusement,Python, deparsonstyleclair et dépouillé,vousobligeà structurervosidéeset vousles présentesousuneforme trèslisible. Moralité, Pythonvousapprendà structurervotrefaçondepenser. Vosprochesserontabasourdisdevousentendreex-primer vos pointsde vue philosophiqueset métaphysiquesavec uneefficacitéet unejustessetroublante; votrepatronvousdonnerasaplacetellementil seraimpressionnéparvos facultésd’anticipation...Par contre,méfiez-vousde vosenfants,qui vousde-manderontderédigerà leurplaceleursdissertations,defaireleursdevoirsdemath,dephysique...Mais je croisqueje m’éloignedu sujet(« Commentbienvivre la célébritédû à l’utilisation intensivedePython» serale titre demonprochainarticle).

Enconclusion,Pythonvousaideàmieuxvivre!Alors, prêt à devenir ce nouvel êtresupérieur? Il faut pour celacommencerpar

apprendre...

1SE: Systèmed’exploitation

Page 13: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

1.3. SI C’ESTSI BIEN, ÇA DOIT COÛTERCHER! 13

1.3 Si c’est si bien, ça doit coûter cher !

C’estvrai queçacoûteun peudetempsd’investissement,commequandvousap-prenezn’importe quoi. Sinon,côtépécunier, vousn’avez rien à dépenser. Pythonesteneffet un logiciel libre et librementdistribuable(Pythonn’estpassouslicenseGPL,maissoncopyright estcompatibleavec celle-ci), ce qui veut dire qu’il estgratuit etquevouspouvezmêmechangertoutescesfonctionnalitéssi vousle souhaitezpuisquevousavezaccèsà soncodesource(écrit enC). Vousn’avezdoncqu’unechoseà faire,télécharger ou trouver sur un CD de magazinele fichier d’installationcorrespondantà votre SE. Pour le téléchargement,rendez-vousdonc là : www.python.org , centrenévralgiquedela communautéPython.

Et si vousavez besoind’aide? Inutile de payerun expert, la communautéest làpourvousaidergratuitement(sur le mêmesite,voustrouvereztouteslesFAQ, aides,et listesdediffusiondisponiblesendifférenteslangues).Le seulengagementquevousavez,estdefairedemêmeaveclesmoinsavancésquevous.

1.4 Ça y estje l’ai ! Comment je le fait marcher?

Jenem’étaleraipassur l’installation dePython. D’une part,elle diffèresuivant leSE quevousutilisez, d’autrepart, unedocumentationaccompagnantle fichier l’ex-pliquetrèsbien.

PourdémarrerPython, vousavez deuxpossibilités.Soit voustapezpython (oupython2.0 oupython2.1 si c’estcedernierquevousavezinstallé2) surunelignedecommande(terminalLinux, fenêtreMS-DOS...),soit vousutilisezIDLE (qui s’ins-talleraenmêmetempsquePython), programmeconçuparGuidoVAN ROSSUM, per-mettant,parexemple,la colorationautomatiquedu texte, l’indentationautomatique...

Danslesdeuxcas,vousdevriezobtenirquelquechosequi ressembleà ceci:

Python 2.1b1(#1,May 5 2001, 17:47:43)[GCC 2.95.2 19991030 (prerelease)] on Linux2Type ‘‘copyright’’, ‘‘credits’’ or ‘‘license’’ for more informations.>>>

Celapeutêtredifférentsuivant la versionde Pythonquevousutilisez3 , et votresystèmed’exploitation.

Pourquitterl’interpréteur,utilisezCtrl+D (ouCtrl+X sousWindows),maiscen’estpasencorele moment!

Voilà, c’est tout, vousvenezdedémarrezl’ interpréteurinteractif Python, et voussavezcommentle fermer.

Lessignes« >>> » indiquentquec’està vousdejouer!Vouspouvezd’ors et déjàtaperdescommandesqui serontdirectementexécutées.

Essayonstoutdesuite.Tapez:

2Si vousutilisez Python2.0 (ou 2.1), remplacezpython par python2.0 (ou python2.1 ) chaquefois quevousvoyez cettecommandedansle texte. Le choix deGuido VAN ROSSUM d’ajouterle numérodeversion,permetd’utiliser ou detestervosprogrammessurdifférentesversionsantérieuresou futuresdePython.

3La dernièreversionen datelors de l’écriture de ce texte estPython2.1. Ne vousformalisezpastropsur la versioncar dansle développementde Pythonunegrandimportanceestattachéeà la compatibilité.Ainsi, unprogrammeécritavecPython1.5.2(qui estuneversiontrèsstable),fonctionneraparfaitementsousPython2.x. Toutefois,Python2.xcontientquelquesnouveautésbienpratiquesdontnousreparleronsdansunchapitrequi lui seraconsacré.

Page 14: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

14 CHAPITRE1. JECONNAIS RIEN À LA PROGRAMMATION !

25 + 3

et appuyezsurla touche« entrer» devotreclavier. Miracle,Pythona calculépourvousle résultat!

Lesopérateurs+ (addition), - (soustraction), * (multiplication), et / (division) ,sontbiensûrtousutilisables4. Nousenverronsd’autresparla suite.

Remarque concernant la lisibilité : Python se fiche commed’unegigne des espacesà l’intérieur d’une instruction,vous pouvez doncécrire(25+3) comme( 25 + 3) sansqueçanechangerien.Choi-sissezle formatle pluslisible possible,uneexpressiontelleque:

( 2 / (5 - 3) ) * (15 / 5)

estbienplusfacileà lire quesonéquivalent:

(2/(5-3))*15/5

Vouspouvezvousessayerà d’autrescalculspluscompliqués,et unefois quevousaurezfini dejoueravecvotrenouvellecalculatrice,nouspourronspasserà autrechose(oui, oui, Pythonpeutfaireencoremieux!).

Le fait de taperquelquechoseet d’avoir directementle résultatest trèspratiquepour apprendrePythonet pour testerdesboutsde codes,maisen règlegénérale,cen’est pasce que noussouhaitons.Nous aimerionsplutôt un fichier qui pourraêtresauvegarderpourêtreréutiliséparla suite.Pourcefaire,vousécrivezvotrecodedansn’importe queléditeurde texte commeEmacsou Vi sousLinux ou le bloc-notesousWindows(EmacsestégalementdisponiblesousWindows...).La seulechoseàfaireestdel’enregistreravecl’extension.py . Vouspouvezaussiutiliser IDLE enouvrantdanscelui-ciunenouvellefenêtre(File | New Window ouCtrl+X/Ctrl+N). Essayonstoutdesuite.Ouvrezvotreéditeurdetexte favori et tapezcequi suit :

print ‘‘Pour l’instant, je ne vois pas où il veut en venir...’’print ‘‘j’espère que la suite sera plus intéressante~!’’

Maintenant,enregistrezcefichiersous« prog.py ».Allez àla lignedecommande(DOS,terminalLinux, terminalBeOSou autresuivantvotreSE),placez-vousdanslerépertoireoù setrouve votrefichier nouvellementcréé,et tapezpython prog.py .Vousdevriezobtenirceci:

Pour l’instant, je ne vois pas où il veut en venir...j’espère que la suite sera plus intéressante~!

Et oui, c’estdela magie,et je vousassurequela suiteseraencoreplusintéressante(d’ailleursdequeldroit vouspermettez-vousdejugercetexte sansl’avoir lu jusqu’aubout?)!

4Si vousutilisezla divisiondenombresentiers,vousverrezquePythonnedonnepasleschiffresaprèslavirguledanssonrésultat(ex : 5 / 2 = 2). Ceciestnormal! Il fautspécifieràPythonquevouslesvoulezenécrivant parexemple5 / 2.0 ou 5.0 / 2 Ceciestdû autypage,notionquenousaborderonspar lasuite.

Page 15: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

1.4. ÇA Y ESTJEL’AI ! COMMENT JELE FAIT MARCHER? 15

Bien,maintenantquenoussavonsdémarrerPython, utiliser l’ interpréteurinterac-tif, créeret exécuterdesfichierspython, il ne nousresteplus qu’à apprendreà pro-grammer...

Page 16: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

16 CHAPITRE1. JECONNAIS RIEN À LA PROGRAMMATION !

Page 17: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Chapitr e 2

Programmer : but de toutprogrammeur

Sommaire

2.1 Variation enDo mineur . . . . . . . . . . . . . . . . . . . . . . 17

2.1.1 variabilisonsdonc... . . . . . . . . . . . . . . . . . . . . . 19

2.2 En fonction dequoi ? . . . . . . . . . . . . . . . . . . . . . . . . 20

2.2.1 En françaisc’estquoi? . . . . . . . . . . . . . . . . . . . 20

2.2.2 Et voilà, je faisunefonctionenPython,sanscomplexe... . . 20

2.2.3 Commentquej’f aispourl’utiliser c’te fonction? . . . . . . 22

2.2.4 A quoiçasertpuisqueje peuxtapermoncalculdirectementdansl’interpréteurinteractifPython? . . . . . . . . . . . . 23

2.3 Je te jur e quec’estvrai ! . . . . . . . . . . . . . . . . . . . . . . 24

2.3.1 L’if estun trèsbalarbre . . . . . . . . . . . . . . . . . . . 24

2.3.2 Laissezlui vousposerlesquestions. . . . . . . . . . . . . 26

2.3.3 Tantqu’il y auraPython,je neseraisplusseul... . . . . . . 27

2.3.4 Commentdit-il vrai ou faux? . . . . . . . . . . . . . . . . 27

2.4 Et si je ne veux pasqu’il continue sesbouclettes? . . . . . . . . 28

2.4.1 break-down! . . . . . . . . . . . . . . . . . . . . . . . . 28

2.4.2 continuonsje vousprie... . . . . . . . . . . . . . . . . . . 28

2.5 C’est tout ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.6 Résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.1 Variation enDo mineur

La premièrenotionà connaîtreestcelledevariable. Unevariableestun emplace-mentdansla mémoiredel’ordinateuroùeststockéeunevaleurqui peutvarier(d’où lenomdevariable!). Nouspouvons,parexemple,créerunevariable(c’est-à-dire,réser-ver uneplacedansl’ordinateur)quenousappellerions: total et danslaquellenousstockerionsla sommededeuxnombres.

17

Page 18: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

18 CHAPITRE2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR

Unevariablea un nom1 (dansnotrecas: total ) et unevaleurqui peutchangeraucoursdudéroulementdu programme,parexemple,si nousécrivonsceci:

total = 5 + 2total = 7 + 4

La valeurstockéepar total à la premièreligne est7, qui estremplacéepar11 àla deuxièmeligne.

Lesplusperspicacesd’entrevousaurontpeut-êtreremarquéquele signe« = » necorresponddoncpasausignemathématique.Carsi total = 7 puistotal = 11 ,çaveut dire que total peutêtredifférentde total ! En fait, le signe« = » estuncaractèred’affectationqui signifie« stockecequ’il y aàdroitedansle trucàgauche».

De même,les fins limiers aurontvu qu’il n’est pasnécessairede livrer quelquechosedetout cuit (du style7 ou 11) à la variable, carPythonestcapabledetrouver lerésultatdu calculavantdele stockerdansla variable.

Si vousn’avezéténi perspicaceni fin limier, nevousenfaitespas,Pythonvavousaiderà le devenir.

Enfin,unevariablepeutstockerunentier, unnombreréel,uncaractère,unmot,unephrase...cesontlestypes devaleurqu’elle peutprendre.Ici leslangagesdeprogram-mationdiffèrent: dansle casd’un langagedit « typé», il fautdéclarerunefois pourtoutequelestle typedevaleurquestockerala variable, et çanepourrapaschangerdetout le programme.Python, lui, fait celapourvous,et nevousdemanderapas,commele ferait un douanier, cequevousavezà déclareravantdepasserà votreprogramme!On dit que Pythonest « typé dynamiquement» (il reconnaîtle type desvariablesau fur et à mesurequevousles entrez).Mais il faut tout de mêmesavoir vousfairecomprendredePython, si vousavezessayer5 / 2 dansl’ interpréteurinteractif vousvousêtesrenducomptequePythonne vousretournequela partieentière du calcul(vousallez voir quec’est d’ailleurs trèspratique...).Pourpallier à cela,il faut écrire5 / 2.0 ou 5.0 / 2 (ou même5./2 ) pour prévenir Pythonquevousvoulezunchiffresréél commerésultat.

Enfin,Pythonpossèdedestypes trèspratiquesdontvousnesoupçonnezpasl’exis-tence,maisceciseravu entempsutile.Pourvousmettreenbouche,voici toutdemêmequelquestypes qu’il estpossibled’utiliser dansunevariables: les listes, lesdiction-naires, les nombrescomplexes... si vous avez envie de savoir ce que sont ces typeslisez la suite(cettephraseutilise un procédéexpérimentalvisantà tenir le lecteurenhaleine...).

Pourquoi il a dit que c’était pratique de n’avoir que la partie entière du chiffr ecommerésultat ?...Modulez voshumeurs!

Vousn’oubliez jamaisrien vous! Bon d’accord,je m’explique. Il existe un autreopérateurmoinsconnuducommundesmortelsqui senomme« modulo» etqui s’écritavecle signe« %». Cetopérateurpermetd’avoir le restedela division.Exemple:

>>> 5 / 22

1Lesnomsdevariablespeuventêtreconstituésden’importequelcaractèrenonaccentué.Ils nepeuventpascommencerpardeschiffres maispeuvent encontenir(ex : variable1 ) ni nepeuvent contenird’es-pace.Par contre,ellespeuvent commenceret contenirle caractère« _ » (AltGr+8) (ex : _variable ouma_variable ). Enfin,Pythonestsensibleàla casse(majuscules/minuscules),ainsimavariable etMa-Variable sontdeuxvariablesdifférentes.

Page 19: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

2.1. VARIATION EN DO MINEUR 19

>>> 5 % 21

Pourretrouver vossouvenirsd’écolevouspouvezpensezcommececi : « Dans5combienil y a defois 2 : 2 fois, il reste1 ».

Enquoic’estpratique?Et biensi vousvoulezsavoir si 4736estdivisiblepar37, ilvoussuffit d’écrire:

>>>4736 % 370

Étantdonnéqu’il ne resterien, c’estque4736estdivisible par37. Vousallezmedirequ’il voussuffisezdefaire4736 / 37.0 poursavoir... Ok, pourcettefois, maisnousverronsqu’il y a descasou cen’est passi simple(lisez la suite...lisez la suite...lisezla suite...lisezla suite... lisezla suite...)

2.1.1 variabilisons donc...

Vouspouvezd’ors et déjàutiliser vosnouvellesconnaissancesavec l’ interpréteurinteractif. Au lieu de taper352 + 27 , puisderecopierle résultatpour le multiplierpar54, puisderecopiercedernierrésultatpour lui soustrairevotrepremiercalcul,cequi donnerait:

>>>352 + 27379>>>379 * 5420466>>>20466 - 3792087

Vouspourriezutiliser lesvariables :

>>>total1 = 352 + 27>>>total2 = total1 * 54>>>total2 - total12087

Jevousle dis,votrecalculatricenepeutpasrivaliseravecPython!Vouspouvezaussivousessayerauxchaînesdecaractères,pourcela,il suffit d’uti-

liser lesguillemets,parexemple:

>>>Prenom = ’’Chevalier’’>>>Nom = ’’ qui dit Ni’’>>>dit = ’’ Ni‘‘>>>Prenom + Nom + dit * 10’Chevalier qui dit Ni Ni Ni Ni Ni Ni Ni Ni Ni Ni Ni’

Commevouspouvezle remarquez,le signe+ « concatène» plusieurschaînesdecaractères(il lesplacelesunesà côtédesautres(sansajouterd’espace)),alorsquelesigne* répèteunechaineautantdefois queprécisé.

Mais nousenapprendronsplussur lesdifférentesutilisationsdestypeset deleursopérateursun peuplustard...(deuxièmeprocédéexpérimentalpouraffirmer l’emprisedu textesurle lecteur...)

Page 20: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

20 CHAPITRE2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR

« _ » Une variable un peu spéciale En effet, la variable _ (AltGr+8) stocke le ré-sultatdu derniercalculfait enmodeinteractif . Nouspourrionsdoncécrirel’exemplequenousavionsprisprécédemmentdecettemanière:

>>>352 + 27379>>>_ * 5420466>>>_ - 3792087

Surtout,nevousditespas: « CePythonestincroyable! », carsi c’est le cas,vousrisquezde vousévanouird’admirationen lisant la suite...(troisièmeprocédéexpéri-mental,visantcettefois à fairecroireaulecteurqueje saisdequoi je parle...)

2.2 En fonction de quoi ?

Vousdevezdéjàvoussentirplusfort, maiscen’estquele début...Passonsmainte-nantàuneautrenotiondebase: lesfonctions.

2.2.1 En français c’estquoi ?

Unefonctionestsimplementunesuited’instructionsqui réaliserontunetâchespé-cifique. On pourrait,par exemple,imaginerune fonctionqui converti desmètresencentimètresparcequeça,c’estsuperdurà calculerdetête!

Une fonctiona un nom2 (parexempleconversion ), peutavoir desvariablesenparamètres, c’est-à-dire,lesdonnéesquenousallonslui envoyeretaveclesquelleselleva travailler. Dansnotreexemple,il faudraitunevariable le chiffre en mètreque tu vas expressément me convertir en centimètre (saufquesivousaveztoutsuivi et lu lesnotesdebasdepage,cenomdevariablen’estpasvalide).Enfin, elle peutrenvoyer un résultat(dansnotreexemple,elle renvoie le résultatde laconversion).

Notreexemplepourraitalorss’écrireainsi:

fonction conversion (chiffre en mètre)début des instructionschiffre en centimètre = chiffre en mètre x 100renvoi du chiffre en centimètrefin des instructions...suite du programme...

Saufquelà nousl’avonsécrit en françaiset pasenPython. Mais cen’estpastrèsdifférent.

2.2.2 Et voilà, je fais une fonction enPython, sanscomplexe...

Voici à quoi ressemblenotrefonctionenPythonien:

2Lesrèglespourlesnomsde fonctionssontlesmêmequepourlesnomsdevariables.

Page 21: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

2.2. EN FONCTIONDE QUOI ? 21

def conversion( chiffre_m ):chiffre_cm = chiffre_m * 100return chiffre_cm

#...suite du programme...

Qu’avonsnousici :– Le mot def correspondà cequ’enfrançaisnousavionsappelé« fonction», il

signifie« je déf-ini unefonction»;– conversion estle nomdenotrefonction« conversion» (benoui !). Bien sûr

vouspouvezchoisir le nomquevousvoulez;– (chiffre_m) estle paramètre « chiffre enmètre» quenouspassonsà notre

fonction. Celui-ci est, bien sûr, une variable. Remarquezqu’un paramètre semet entre parenthèses.D’ailleurs, mêmesi notre fonction n’avait pas besoind’argument(synonyme de paramètre), il faut quandmêmemettre les paren-thèses,celadistingueclairementunefonctiond’unevariable(parex : conversion()estunefonction,alorsqueconversion estunevariable.Cecidit, il vautmieuxévitercegenredeconfusionenmettanttoujoursdesnomsdifférents3 ) ;

– Ensuite,viensunetabulation qui correspondà« début des instruction »(trèsimportant,nel’oubliez pas!) ;

– le signe« : » (deuxpoints)estutilisé commeenfrançais,c’est-à-dire,« cequisuit estla définitiondecequeje suis» ;

– chiffre_cm = chiffre_m * 100 ; surcetteligneestindiquécequefaitla fonction(ici, çaneprendqu’uneligne,maiscen’estpasunelimitation!). Nousavonsintroduit unenouvellevariablequi s’appellechiffre_cm (« chiffre encentimètre»).Danscettevariableserastockéle calculchiffre_m * 100 , oupourparlerplus« programmationniquement», le résultatducalculchiffre_m* 100 seraaffectéà la variablechiffre_cm (le “=” étantle caractèred’af-fectation,commevousle savezdéjàsaufsi vousn’avezpaslu la partieprécé-dente,et danscecas,je nevoispascequevousfaitesici !)

– return signifie,enanglais,« retourne». Donc,return chiffre_cm , veutdire « retournemaintenantle résultatà celui qui te l’a demandé,et plusvite queça». Notezquequandl’instruction return intervient,on sortobligatoirementdela fonction.Dansle codequi suit,parexemple,le calculneserajamaiseffec-tué,puisqu’aupremierreturn (qui nerenvoi rien), la fonctions’arrête:def conversion( chiffre_m ):

returnchiffre_cm = chiffre_m * 100return chiffre_cm

Enfin,return n’estpasobligatoire.Il estparexempleinutile dansunefonctionqui nesertqu’àafficherquelquechose4.

– Enfin,viensla suiteduprogramme,qui, vousle remarquerez,commenceautoutdébut de la ligne et nonpasauniveaude la tabulation . Cecimarquequenotrefonction est terminée.Ce qui se trouve indenté(c’est-à-dire,précédépar unetabulation,maisçapeut-êtreparun simpleespace)estappeléun bloc et appar-tient à la fonctionconversion. Peut-êtreavez-vousaussiremarquéle symbole#qui commencela ligne.Tout cequi suit cesymbolejusqu’àla fin dela ligne estignoréparl’ interpréteurPython. Cequi signifiequevouspouvezutilisercesym-bolepourmettretoutcequi vouspasseparla tête.En règlegénérale,on l’utilise

3Et oui, Pythondéveloppeaussivotreimagination!4voustrouverezparfoislestermesdeprocédureou routinepourparlerd’unefonctionqui nerenvoie rien.

Page 22: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

22 CHAPITRE2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR

pourcommentercequenousfaisons,afin quequelqu’und’autreou vous-mêmeunpeuplustard,puissiezsavoir cequevousavezvoulufairedanscettepartieduprogramme.Vouspouvezy placeraussivotre liste decoursesà faire,maiscelarelèveplusdela psychothérapie...

Vouspouvez recopiezdirectementcettefonction dansl’interpréteurinteractif.Aprèsavoir tapéla premièreligne, celui-ci affiche « ... », indiquantqu’il a reconnuunedéfinitiondefonctionet vousinvitantà taperla suite. Quandvousavezterminé,tapezdeuxfois sur« entrer» pourle lui dire :

>>>def conversion(chiffre_m):... chiffre_cm = chiffre_m * 100... return chiffre_cm...>>>

Si vousavez un messaged’erreurc’est quevousavez certainementoublié la ta-bulation sur la deuxièmeet/ou troisièmeligne! Bien sûr, votre superbefonction neresterapasen mémoirequandvous fermerezl’interpréteur! Si vous voulez garderce chef d’oeuvre,vouspouvez le taperdansun éditeurde texte et l’enregistrersous« chef_d_oeuvre.py » (le nomquej’ai choisitdelui donnern’estqu’unproposition...).

Notezquenousaurionspusimplifiercettefonctionenévitantd’avoir recoursàunedeuxièmevariable,dela manièresuivante:

def conversion(chiffre\_m):return chiffre\_m * 100

L’instructon return secomporteun peucommeunevariable sansle caractèred’affectation(« = »). Elle renvoiedoncle résultatdu calcul.

2.2.3 Commentque j’fais pour l’utiliser c’te fonction?

Pourl’utiliser, il suffit del’appelerparsonpetit nometdelui donnerle paramètre.Parexemple,si nousvoulonsconvertir 18 m encentimètresnousécririonsceci:

conversion (18)

Cequi aurapoureffet d’envoyer18 enparamètre à la fonctionconversion quiremplaceradoncchiffre_m par18 et ferale calcul:

chiffre\_cm = 18 * 100

Enfin,ellenousretournerale résultatavecla ligne :

return chiffre\_cm

Si nousoptonspour la fonction « simplifiée», c’est pareil, saufquec’est direc-tementla ligne de l’ instruction return qui fera le calcul avant de nousdonnerlaréponse:

return 18 * 100

C’estpasbeautout ça?

Page 23: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

2.2. EN FONCTIONDE QUOI ? 23

2.2.4 A quoi ça sert puisqueje peux taper mon calcul dir ectementdansl’inter préteur interactif Python?

C’estvrai, saufqu’unefonction, vousl’appelezautantdefois quevousle désirez.Si vousaviezdescalculsunpeupluslong,commeparexempleajouterunpourcentagedifférentà unesériede50 chiffres,vousauriezà taper50 fois un calculdu type(ajoutde2,5%à 200):

>>>200 * 2.5 / 1005.0>>>_ + 200205.0

Alors quevouspourriezécrirela fonctionsuivante:

>>>def prcnt (chiffre, prct):... return chiffre + (chiffre * prct / 100)...

Et l’appelerautantdefois quenécessairedecettemanière:

>>>prcnt(200, 2.5)205.0

Et allonsmêmeplusloin ! Imaginonsquedansla sériede50chiffresquevousavez,le pourcentageàappliquerpourla majoritéd’entreeuxestde2,5%.Vouspouvezécrirevotre fonctioncommesuit :

>>>def prcnt(chiffre, prct = 2.5):... return chiffre + (chiffre * prct / 100)...

Danscecas,chaquefois quele pourcentageà appliquerestde2.5%,il voussuffitd’écrire:

>>>prcnt(200)205.0

Si cen’est pas2,5%,alorsvousle spécifiezcommenousl’avonsfait auparavant.C’estcequ’onappelmettreunevaleurpar défautà un paramètred’unefonction.

C’est quandmêmebien plus fonctionnel que de taper 50 fois le calcul, non?D’ailleurs, c’estpourcelaquel’on apellece typede programmation,programmationfonctionnelle.

Alors, heureux?

Page 24: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

24 CHAPITRE2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR

Petit exercice1 : Il esttempsdecouperunpeule cordon,et d’acquérirunminimumd’autonomie! Jevousproposedoncunpetit exercice,quevousferezsanstricher, sinonçanecomptepas:

1. Écrivezunefonction(directementdansl’interpréteurou dansunfichier) qui vous permetde calculer la moyennede 2 nombres(ben oui, je sais,ça irait plus vite de tête,mais c’est un exer-cice...).

2. Une fois quevous l’avez testé,quepourriez-vouslui ajoutersivoussavez que la plupartdu temps,l’un desdeuxnombresest1234? (Ne me demandez-pas« pourquoi1234? », je n’en saisrien...)

(Corrigép.35)

2.3 Je te jur equec’est vrai !

D’abord,onnejurepas,ensuite,laissonsPythonàcetteappréciations’il vousplaît.Oui, parfaitement,Pythonestcapablededire si quelquechoseestvrai ou pas,et d’ac-complir uneactionplutôt qu’uneautreenfonctiondela réponse.

Nouspouvonsdonclui dire : si çac’estvrai, tu fait ça,sinontu faisça.

2.3.1 L’if estun très bal arbre

Mais c’est aussiun mot anglaisqui veut dire « si » (rien à voir avec la notedemusique),etuneinstructionPythonqui veutdire la mêmechose.Cetteinstructionsertà testersi uneconditionestvrai.

Par exemple: si votrenomestChevalier, Pythondira cinq fois « Ni », si cen’estpasle casPythondira qu’il ne peutpasdire « Ni » en présenced’un non chevalier.Écrivonscelade manièrestructurée(ne vousdisais-jepasquePythonoblige à bienpenser?) :

fonction Ni:Si Nom = ’’Chevalier’’ :écrit 5 x ‘‘Ni’’Sinon:écrit ‘‘Je ne peux pas dire Ni en votre présence.’’

Cequi nousdonneraà peuprèsla mêmechoseenPython, maisenanglais:

>>>def Ni(Nom):... if Nom == ’’Chevalier’’:... print 5 * ’’Ni‘‘... else:... print ‘‘Je ne peux pas dire Ni en votre présence.’’...

Queremarquonsnous?Nousavonsd’abordla définitiondefonctionquenousconnaissonsbien.Ensuite,vientl’instruction if qui vatesternotreconditionquiestNom == ”Chevalier”

. Remarquezbienle doublesigne« = » qui veutdire« égalà»,contrairementausimple

Page 25: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

2.3. JETE JUREQUE C’EST VRAI ! 25

« = » qui signifie,commenousl’avonsvu, « attribuecequ’il y a à droiteà cequ’il y aàgauche». Si vousvoustrompez,Pythonattribuerasagementla valeur« Chevalier» àla variableNom, et la conditionseraforcémenttoujoursvrai ! La lignedel’instructionif estsuivit de« : ». Si la conditionestvérifiée,la ligne suivanteseraexécutée(re-marquezla deuxièmetabulationqui marquenotrebloc if , celui-cipeutêtreeneffet deplusieurslignes).Cettelignecontientl’instructionprint (qui signifie« imprime» enanglais),etqui « imprimera» surl’écrancequi estentreguillemets(rassurez-vous,celaneveutpasdirequevotreécranseramarquédemanièreindélébile! Si cetteexpressionvousangoisse,ramplacez-làsimplementpar« qui afficheraà l’écran»).

Qu’est-cedoncqueelse : ? Celasignifietout simplement« sinon» enanglais.Donc, si la condition n’est pasvérifiée, c’est la ligne qui suit cette instruction quiseraexécutée(toujours indentéeà l’aide d’une tabulation, of course5). Il n’est pasobligatoiredemettreuneinstructionelse , si celle-cin’estpasutile.

Entrezcettefonctiondansvotreinterpréteuret testezlà avecNi(“Chevalier”)et Ni(“Ce que vous voulez”) .

Considérezmaintenantle codesuivant:

>>>def Ni (Nom):... if Nom == ’’Chevalier’’:... print 5 * ’’Ni ‘‘... elif Nom == ’’Guido van Rossum’’:... print ‘‘Je peux faire une exception : ’’ + 5 * ’’Ni ’’... else :... print ‘‘Je ne peux pas dire Ni en votre présence.’’...

L’instructionelif à étéajoutée.elif estl’abréviationde elseif (« sinonsi »).Doncsi le testdupremierif estfaux,Pythontestela conditionqui suitelif . Si c’estvrai la ligne suivanteestexécutée,sinon c’est le bloc else qui l’est. Vous pouvezmettreautantdeelif quevousle souhaitez.

Nousavonsfait appelici à « == » pour testernotrecondition.Beaucoupd’autresopérateursdecomparaisonsexistent.Lespluscourantssontlistésdansle tableau2.1.

Principaux opérateursde comparaison

opérateur signification== égalà!= différentde<> différentde(identiqueà!= )< strictementinférieurà> strictementsupérieurà

<= inférieurouégalà>= supérieurouégalà

TAB. 2.1– Opérateursdecomparaison

5En fait, uneindentationestnécessairechaquefois, quela ligne précédenteseterminepar« : ». Graceà cettefaçondefaire,le codePythonestextrêmementlisible etclair.

Page 26: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

26 CHAPITRE2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR

2.3.2 Laissezlui vousposerlesquestions

Ben oui, ce seraittout de mêmesympathiquesi Pythonétait capablede vousde-mandervotrenompourlancerla fonctiondu paragrapheprécédent.

Commevousvousendoutez,Pythonestcapabledetout,entrezcecidansunfichierquevousappellerez« ni.py » :

def Ni (Nom):if Nom == ’’Chevalier’’:

print 5 * ’’Ni ‘‘elif Nom == ’’Guido van Rossum’’:

print ‘‘Je peux faire une exception : ’’ + 5 * ’’Ni ’’else :

print ‘‘Je ne peux pas dire Ni en votre présence.’’

Nom = raw_input(‘‘Quel est votre nom ? ’’)Ni(Nom)

Enregistrezvotrefichier puis lancerpython ni.py dansun terminal,vousde-vriez obtenir:

Quel est votre nom ?

Et c’estlà que,prenantvotrecourageà deuxmains,vousentrezenscèneet répon-dezfièrementàla questionposée.VotreréponseconditionneracequeferaPython, bienévidemment.

Commentcelasefait-il ?Observons un peu notre code.Tout d’abord nousécrivons la fonction que nous

connaissonsbien.EnsuitenousdisonsàPythondemettreraw_input(‘‘Quel est votre nom ? ’’) danslavariableNom. raw_input()esten fait unefonction intégréeà Pythonqui lit et stocke ce qui estécrit au clavier(jusqu’àcequel’on tapesur la touche« return». Optionnellement,on peutlui ajou-ter du texte en argument(commenous l’avons fait ici) pour qu’elle l’imprime. Letexte quevousentrezva doncêtrelu par raw_input() puisstockédansla variableNom. Celle-ciestensuiteenvoyéeà la fonction.S’il fallait récupérernonpasdu texte(descaractères)maisdeschiffresavec lesquellesPythondoit travailler, il faututiliserinput() à la place.

Exemple:

a = raw_input(‘‘Entrez un nombre : ’’)print a * 10

Si j’entre le nombre10,voici cequej’obtient :

10101010101010101010

En effet, Pythona considéréle nombreentrécommedu texte et l’a doncrépété10fois au lieu de faire le calcul.Pourquenotreprogramme(qui nesertvraimentà riend’ailleurs...)fonctionne,il faudradoncécrire:

a = input(‘‘Entrez un nombre : ’’)print a * 100

Page 27: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

2.3. JETE JUREQUE C’EST VRAI ! 27

Petit exercice2 : Continuonsnotresevrage.. .

1. Écrivez dansun fichier nommé« examen.py » unefonction resultat à qui on envoie un nombreetqui réagitcommesuit :– Si le nombreestégalà 20, Pythonécrit « Jen’en

attendaispasmoinsdevous».– Si le nombreestinférieurouégalà10,Pythondoit

doit écrire« Vousvousfoutezdu monde,cen’estpaspossibleautrement! ».

– Si le nombreestsupérieurà10,Pythonécrit« Vousaviezcertainementla têteailleurspournepasavoiratteintla perfection! ».

2. Ajouter une instruction qui demandeà l’utilisateurd’entrersanoted’examen.

3. Envoyercettenoteà la fonctionresultat .

(Corrigép.35)

2.3.3 Tant qu’il y aura Python, je neseraisplus seul...

Il ya desmomentsoù il seraitinteressantdedire à Pythonde fairequelquechosetantqu’uneconditionestvrai. Reprenonsparexemplenotrefonctionqui viseàajouteruncertainpourcentageàunesériedenombre.Supposonsquecettesériecontiennetouslesnombrescomprisentre10 et 100et quevousdeviez leur ajouter2.5%.Plutôtquedetaper90 fois l’appel devotre fonction, vouspouvezécrire:

>>>def prcnt():... chiffre = 10... while chiffre <= 100 :... print chiffre + (chiffre * 2.5 / 100)... chiffre = chiffre + 1

Nousavonsd’aborddéfiniunefonction(sansargument). Danscelle-ci,nouscréonsunevariablechiffre qui prend10 pourvaleur. La ligne suivantecontientl’instruc-tion while qui veutdire “tant que”enanglais.Ainsi, tantquechiffre estinférieurou égal(<=) à 100, le bloc qui suit estexécuté.Danscebloc, noustrouvonsd’aborduneligne qui dit à python d’afficher le résultatde notrecalcul avec chiffre qui apour valeur10. La deuxièmeligne met chiffre + 1 dansla variable chiffre ,autrementdit, 11 (vousme suivez?). Puis, la conditionde while est testéeà nou-veau.Si c’est toujoursvrai, c’estrepartipourun tour : la 1èreligne affichele résultat,maiscettefois, avecchiffre ayant11 commevaleuret la deuxièmeligne ajoute1à chiffre pourl’amenerà 12 et ainsidesuitejusqu’àcequechiffre soit égalà 100.La boucleseterminealors.

2.3.4 Comment dit-il vrai ou faux ?

PourPythontouscequi estdifférentde 0 (ou un objet vide ou none , maisnousverronscelaplus tard)estvrai. Un testdecomparaison(commeceuxquenousavonsrencontréavec if et while ) fonctionnecommeunefonctionqui renvoie unevaleurqui peutêtre1 (vrai) ou 0 (faux). Ainsi l’instruction « while 1 : » provoqueune

Page 28: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

28 CHAPITRE2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR

boucleinfinie (Pythoninterprétant1 commevrai). Il peutsemblersouhaitablede nepasprovoquerde boucleinfinie, pourtantça a sonutilité... (n ièmeprocédévisantàinterloquerle lecteur...)

2.4 Et si je neveuxpasqu’il continuesesbouclettes?

Vous,vousêtesdu genreà vouloir maîtriserla situation! Rassurez-vous,Pythonne pourrapasagir sansvotre accord(rassuré?). En effet, il existe deux instructionpermettantdecontrôlerle déroulementd’unebouclewhile .

2.4.1 break-down !

L’instructionbreak estla premièreàconnaître.Elle permetdesortird’unebouclewhile quandc’estnécessaire.Quandest-cequec’estnécessaire?Dansbiendescas...Mais un exemplevalantmieux qu’un long discours,imaginezquevousvenezde dé-barquersurterre,quevousconnaissezencoremal lesmathématiquesdenotreplanète(maisvousconnaissezl’universelPythonbiensûr).Vousnevoussouvenezplus si lesymbole5 fait partiedesnombresentre0 et5000000,(si vousavezplusdébilecommeexemple,je suispreneur...).Vouspourriezalorsécrire:

x = 0while x <= 5000000 :

if x == 5 :print ‘‘5 fait partie des chiffres’’

x = x + 1

Camarche,maisvousperdezdu temps(essayez,vousverrez)! En effet la bouclewhile continuejusqu’àcequex soit arrivéà 5000000,alorsqu’il a trouvéle 5 depuislongtemps.Heureusement,l’instruction break estlà :

x = 0while x <= 5000000 :

if x == 5 :print ‘‘5 fait partie des chiffres’’break

x = x + 1

Danscecasdèsquex estégalà5, onsortdela boucle(c’est-à-direpresqueimmé-diatement).

2.4.2 continuonsje vousprie...

Uneautreinstructionpermettantdecontôlerunebouclesenomme« continue ».Commesonnomne l’indique pas,elle nepermetpasdecontinuermaisdereprendreenhautdela boucle:

x = 0while x < 20 :

x = x + 1if x % 2 == 0 :

continueprint x

Page 29: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

2.5. C’ESTTOUT? 29

Ce codeaffiche les chiffres pairs entre1 et 20. On met d’abord x à 0, puis onlancela bouclewhile . La premièreinstructionajoute1 à x , l’instruction if testesix estpair (c’est-à-dire,divisible par2)6. Si c’est le cas,l’instruction continue estexécutéefaisantremonterenhautdela bouclesansquele restesoitexécuté.Si cen’estpasle cas(1 fois sur2), l’instruction print x estexécutée.

Alors! Hein? Qu’est-cequ’ondit àM. Python?faisonsle point.Vousconnaissezmaintenantlesinstructionsif etwhile aveclesquellesvousavez

contrôlezle flux desinformations.C’est-à-direquevousavezdit à Pythonquelleétaitla décisionà prendrefaceà uneconditionprécise.C’estpourquoiellessontappelléesinstructionsconditionnelles.Il existeencoreuneautreinstructiondecetypetrèsutile.Maisnousn’allonspasla voir toutdesuite,caril vousmanqueencorequelquespetiteschosesàsavoir avantdepouvoir l’utiliser pleinement.Vousconnaissezaussibreak etcontinue , qui serventà contôlerle déroulementd’uneboucle.Noussommesdoncprêtpourun exerciceun peuplusconséquent:

Petit exercice3 : Un vrai programmeavecinterfaceutilisateur!

1. Écrivezdansun fichier nommé« tva.py » unefonc-tion tva qui ajoute5.5%auprix qu’on lui envoi.

2. Arrangezvouspourquele programmeait l’air deçaquandon le lance:

Prix (tapez -1 pour sortir) ?

(Nevousoccupezpasdu« tapez-1 poursortir» pourle moment.)Et bien sûr, donnerà l’utilisateur le ré-sultat.

3. Mettezl’instructiondedemandeduprix etd’envoi decelui-cià la fonctiontva dansuneboucleinfinie (netestezpasvotreprogrammemaintenantsouspeinedenejamaisensortir7...).

4. Arrangez-vouspour quele programmeseterminesil’utilisateur tape-1 .

(Corrigép.37)

2.5 C’est tout ?

Voussavezmaintenantcequ’estunevariableetcequ’estunefonction.Et vousavezutilisezdesinstructionsconditionnelles.Nousavonsaussiparlédestypesdevariables.C’estun bondébut, maisne laissezpasenflervotreégo.Vousn’avezfait quefrapperà la porte,celle-cis’estouverte,et devantvoussedéployentdenouvellescontréesdeconnaissances,queseulleshommesréalisés(c’est-à-dire,lesinitiésPython, biensûr!)peuvent fouler du pied. Le Saint Graal vousy attendquelquepart et je seraisvotreguide.N’ayezpaspeurdeslapinset suivezmoi.

6Vousvoyez,je vousle disezquec’étaitpratiquele %...7Si vousêtesprisdansuneboucleinfinie, tapezCtrl + C pourensortir

Page 30: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

30 CHAPITRE2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR

2.6 Résumé

– Pythonestun langageinterprété. Un programmePython(appeléaussiparfoisscript) n’a pasbesoind’êtrecompilé.L’ interpréteurPythonle lit et l’éxécuteaufur et àmesure.

– L’ interpréteurinteractif (lancéaveclacommandepython ) permetdetesterdesfonctions, defairedifférentscalculs,etc.entempsréél.

– Une variable estun emplacementmémoiredanslequeleststockéeunevaleur.Unevariablea :– Un nom.Celui-ci ne peutcomporterde caractèresaccentuésou spéciauxni

d’espaceet nedoit pascommencerparun chiffre. Il peutcomporterle carac-tèrede soulignement(« _ »), toutefoisil n’est pasconseilléde commencerune variableavec ce caractère,cela pourrait provoquerune confusionavecdesvariablesspécialesquePythonfait commencerpar un doublecaractère« _ » (necommencezpasà lui embrouillerl’esprit...).Pourfinir, Pythonfaitla distinctionentremajusculeetminuscule.– Quelquesvariablescorrectes: var , var1 , MaVariable Ma_Variable ,

_variable (correctmaispasconseillé).– Quelquesvariablesincorrectes: 1var , var ! ,var1&var2 , ma variable .

– Un type: cepeutêtreunenombreentier, unnombreréél,unechaînedecarac-tère(etbiend’autresquenousn’avonspasencorevu...mystère...).

– En Python, les variablessont typéesdynamiquement. Ce qui ne veut pasdirequelesvariablessontdescréaturessensuellescapablede changerleur couleurdepeauxetdecheveuxpours’adapteràl’hommemachodérrièresonécran.Celaveutdire quevousn’avezpasà déclarerau préalablequelleserale typedeva-leur qui serastockéedanscesvariables(c’estunenécéssitédanscertainsautreslangagesde programmation).Pythonaffecterade lui-mêmele typeen fonctionde ce quevousy mettez.C’est une facilité quevousoffre le langagemaisencontrepartie,Pythonseraincapabledevousprévenirsi vousavezmisunechaînedecaractèrelà où il fallait un entier.

– « _ » estunevariable spécialeutiliséedansl’ interpréteurinteractif. Cetteva-riable stocke le derniercalculeffectué.

– Pythonpossèdeuneinstructiondetest(if ) utilisé dela manièresuivante:if <condition> :

#faire des trucselif <condition2> :

#faire d’autres trucselse :

#faire des trucs encore différentsCequi signifie: « Si<condition> estvrai, fairedestrucs,sinonsi<condition2>estvrai faired’autrestrucs,sinon, fairedestrucsencoredifférents.» Lescondi-tionssontle plussouventunecomparaison(ouplusieurs,encoremystère...).Lesopérateursdecomparaisonssontregroupésdansle tableau2.1,p.25.Vouspou-vezmettreautantdeelif quevousvoulez,ou nepasenmettredu tout.elseestlui aussioptionnel.

– Pythoncomportedeuxinstructiondeboucle,maisvousn’en connaissezqu’une(encoreencoremystère...),qui seprésentecommecela:

while <condition> :#faire des trucs

Cequi signifie: « Tant que<condition> estvrai, fairedestrucs.»

Page 31: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

2.6. RÉSUMÉ 31

– Deux instructionspermettentdecontrôleruneboucle:– break : sortir dela boucle.– continue : reprendreaudébutdelabouclesansexécutercequi suitcontinue .

– Une fonctionestunesuited’instructionsregroupéespermettantd’effectuerdestâchesrépétitive,ou toutsimplement,dedécouperle codepourqu’il soitencoreplusclair. Unefonctionseprésentecommesuit :

def MaFonction (a, b) :#faire des trucs avec a et breturn #quelque chose

Les fonctionsont :– Un nom, qui se soumetaux mêmerèglesque pour les variables (ici c’est

MaFonction ).– Zéro, un ou plusieursparamètres qui sont en fait desvaleursde variables

passéesà la fonctionetaveclesquelleselle va travailler (ici, cesonta et b)L’instruction return sertà renvoyer le résultatdela fonction, ou plusgénéra-lementàsortir decelle-ci(c’estuneinstructionoptionnelle).

Page 32: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

32 CHAPITRE2. PROGRAMMER : BUT DE TOUT PROGRAMMEUR

Page 33: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Annexes

33

Page 34: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être
Page 35: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

AnnexeA

Corrigés desexercices

Sommaire

A.1 Exercicesde la partie I . . . . . . . . . . . . . . . . . . . . . . . 35A.1.1 Petitexercice1 . . . . . . . . . . . . . . . . . . . . . . . 35

A.1.2 Petitexercice2 . . . . . . . . . . . . . . . . . . . . . . . 35

A.1.3 Petitexercice3 . . . . . . . . . . . . . . . . . . . . . . . 37

A.1 Exercicesde la partie I

A.1.1 Petit exercice1

p.24

1. Écrivezunefonction(directementdansl’interpréteuroudansunfichier)qui vouspermetdecalculerla moyennede2 nombres.

def moyenne(a, b) :result = (a + b) / 2return resultat

Ou:

def moyenne(a, b)return (a + b) / 2

2. Unefois quevousl’aveztesté,quepourriez-vouslui ajoutersi voussavezquelaplupartdu temps,l’un desdeuxnombresest1234?

def moyenne(a, b=1234)return (a + b) / 2

A.1.2 Petit exercice2

p.27(lesinstructionstrop longuespourêtreimpriméessuruneseuleligne continuentsurlaligne suivanteavecle signe[ .)

35

Page 36: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

36 ANNEXE A. CORRIGÉSDESEXERCICES

1. Écrivezdansunfichiernommé« examen.py » unefonctionresultat àqui onenvoieunnombreetqui réagitcommesuit :– Si lenombreestégalà20,Pythonécrit« Jen’enattendaispasmoinsdevous».– Si le nombreest inférieur ou égalà 10, Pythondoit doit écrire« Vousvous

foutezdumonde,cen’estpaspossibleautrement! ».– Si le nombreestsupérieurà10,Pythonécrit « Vousaviezcertainementla tête

ailleurspournepasavoir atteintla perfection! ».

def resultat(nombre)if nombre == 20 :

print ‘‘je n’en attendais pas moins de vous.’’elif nombre <= 10 :

print ‘‘Vous vous foutez du monde, ce n’est[pas possible autrement !’’

elif nombre > 10 :print ‘‘Vous aviez certaienement la tête ailleurs

[pour ne pas avoir atteint la perfection !’’

Vousremarquerezl’importancede l’instruction elif qui est indis-pensableici, eneffet, si nousavionsécrit :

def resultat(nombre)if nombre == 20 :

print ‘‘je n’en attendais pas moins de vous.’’if nombre <= 10 :

print ‘‘Vous vous foutez du monde, [...]’’if nombre > 10 :

print ‘‘Vous aviez certaienement la [...]’’

Si nombre est égal à 20, la premièrecondition est vraie, mais latroisième({nombre > 10), l’est aussi.Pythonauraitdoncécrit lesdeuxphrasescorrespondantes.Si elif n’existait pas,nousaurionspu contournerle problèmeenécrivant:

def resultat(nombre)if nombre == 20 :

print ‘‘je n’en attendais pas moins de vous.’’return

if nombre <= 10 :print ‘‘Vous vous foutez du monde, [...]’’

if nombre > 10 :print ‘‘Vous aviez certaienement la [...]’’

Ici, return forceà sortir dela fonctionsi la premièreconditionestvrai. Lesautresconditionsnesontdoncmêmepastestées.

2. Ajouter uneinstructionqui demandeà l’utilisateur d’entrersanoted’examen.

def resultat(nombre)if nombre == 20 :

print ‘‘je n’en attendais pas moins de vous.’’elif nombre <= 10 :

print ‘‘Vous vous foutez du monde, ce n’est[pas possible autrement !’’

elif nombre > 10 :

Page 37: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

A.1. EXERCICESDE LA PARTIE ?? 37

print ‘‘Vous aviez certaienement la tête ailleurs[pour ne pas avoir atteint la perfection !’’

nombre = input(‘‘Entrez votre note d’examen : ’’)

3. Envoyercettenoteà la fonctionresultat .

def resultat(nombre)if nombre == 20 :

print ‘‘je n’en attendais pas moins de vous.’’elif nombre <= 10 :

print ‘‘Vous vous foutez du monde, ce n’est[pas possible autrement !’’

elif nombre > 10 :print ‘‘Vous aviez certaienement la tête ailleurs

[pour ne pas avoir atteint la perfection !’’

nombre = input(‘‘Entrez votre note d’examen : ’’)resultat(nombre)

A.1.3 Petit exercice3

p.29

1. Écrivezdansun fichier nommé« tva.py » unefonction tva qui ajoute5.5%auprix qu’on lui envoi.

def tva(prix) :return prix + (prix * 5.5 / 100)

2. Arrangezvouspourquele programmeait l’air deçaquandon le lance:

Prix (tapez -1 pour sortir) ?

(Ne vousoccupezpasdu « tapez-1 poursortir » pour le moment.)Et biensûr,donnerà l’utilisateur le résultat.

def tva(prix) :return prix + (prix * 5.5 / 100)

prix = input(‘‘Prix (tapez -1 pour sortir) ? ’’)print tva(prix)

3. Mettezl’instructiondedemandeduprix et d’envoi decelui-cià la fonctiontvadansuneboucleinfinie.

def tva(prix) :return prix + (prix * 5.5 / 100)

while 1 :prix = input(‘‘Prix (tapez -1 pour sortir) ? ’’)print tva(prix)

4. Arrangez-vouspourquele programmeseterminesi l’utilisateur tape-1 .

def tva(prix) :return prix + (prix * 5.5 / 100)

Page 38: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

38 ANNEXE A. CORRIGÉSDESEXERCICES

while 1 :prix = input(‘‘Prix (tapez -1 pour sortir) ? ’’)if prix == -1 :

breakprint tva(prix)

Page 39: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

AnnexeB

GNU FreeDocumentationLicense(GFDL)

Note : Pourl’instant, seulela versionoriginaleenanglaisestlégale,c’estpourquoic’estcellequiestdonnéeici. Voustrouverezdestraductionsfran-çaisesdela GFDL surinternet.

Sommaire

B.1 Applicability and definitions . . . . . . . . . . . . . . . . . . . . 40

B.2 Verbatim copying . . . . . . . . . . . . . . . . . . . . . . . . . . 40

B.3 Copying in quantity . . . . . . . . . . . . . . . . . . . . . . . . 41

B.4 Modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

B.5 Combining documents . . . . . . . . . . . . . . . . . . . . . . . 42

B.6 Collectionsof documents. . . . . . . . . . . . . . . . . . . . . . 43

B.7 Aggregationwith independentworks . . . . . . . . . . . . . . . 43

B.8 Translation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

B.9 Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

B.10 Futur erevisionsof this license. . . . . . . . . . . . . . . . . . . 44

GNU FreeDocumentationLicenseVersion1.1,Mar ch 2000

Copyright (C) 2000FreeSoftwareFoundation,Inc.59TemplePlace,Suite330,Boston,MA 02111-1307USA

Everyoneis permittedto copy anddistributeverbatimcopiesof this licensedocument,but changingit is notallowed.

Preamble

Thepurposeof this Licenseis to make a manual,textbook,or otherwritten document"free" inthesenseof freedom:to assureeveryonetheeffective freedomto copy andredistribute it, withor withoutmodifying it, eithercommerciallyor noncommercially. Secondarily, thisLicensepre-servesfor theauthorandpublisherawayto getcreditfor theirwork, while notbeingconsideredresponsiblefor modificationsmadeby others.

39

Page 40: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

40 ANNEXE B. GNU FREEDOCUMENTATION LICENSE(GFDL)

This Licenseis a kind of "copyleft", which meansthat derivative works of the documentmustthemselvesbe free in the samesense.It complementstheGNU GeneralPublic License,which is a copyleft licensedesignedfor freesoftware.

We have designedthis Licensein orderto useit for manualsfor freesoftware,becausefreesoftwareneedsfree documentation:a free programshouldcomewith manualsproviding thesamefreedomsthat the softwaredoes. But this Licenseis not limited to softwaremanuals;itcanbe usedfor any textual work, regardlessof subjectmatteror whetherit is publishedasaprintedbook.WerecommendthisLicenseprincipally for workswhosepurposeis instructionorreference.

B.1 Applicability and definitionsThis Licenseappliesto any manualor otherwork thatcontainsa noticeplacedby thecopyrightholdersayingit canbe distributedunderthe termsof this License. The "Document",below,refersto any suchmanualor work. Any memberof thepublic is a licensee,andis addressedas"you".

A "Modified Version"of theDocumentmeansany work containingtheDocumentor a por-tion of it, eithercopiedverbatim,or with modificationsand/ortranslatedinto anotherlanguage.

A "SecondarySection"is a namedappendixor a front-mattersectionof theDocumentthatdealsexclusively with therelationshipof thepublishersor authorsof theDocumentto theDocu-ment’s overall subject(or to relatedmatters)andcontainsnothingthatcouldfall directly withinthatoverall subject.(For example,if theDocumentis in parta textbookof mathematics,a Sec-ondarySectionmaynot explain any mathematics.)Therelationshipcouldbea matterof histor-ical connectionwith thesubjector with relatedmatters,or of legal, commercial,philosophical,ethicalor political positionregardingthem.

The"InvariantSections"arecertainSecondarySectionswhosetitlesaredesignated,asbeingthoseof Invariant Sections,in the notice that saysthat the Documentis releasedunder thisLicense.

The"Cover Texts" arecertainshortpassagesof text thatarelisted,asFront-Cover Texts orBack-Cover Texts, in thenoticethatsaysthattheDocumentis releasedunderthis License.

A "Transparent"copy of the Documentmeansa machine-readablecopy, representedin aformat whosespecificationis available to the generalpublic, whosecontentscan be viewedandediteddirectly andstraightforwardly with generictext editorsor (for imagescomposedofpixels)genericpaintprogramsor (for drawings)somewidely availabledrawing editor, andthatis suitablefor input to text formattersor for automatictranslationto avarietyof formatssuitablefor input to text formatters.A copy madein anotherwiseTransparentfile formatwhosemarkuphasbeendesignedto thwartor discouragesubsequentmodificationby readersis notTransparent.A copy thatis not "Transparent"is called"Opaque".

Examplesof suitableformatsfor Transparentcopiesincludeplain ASCII without markup,Texinfo input format,LaTeX input format,SGML or XML usinga publicly availableDTD, andstandard-conformingsimpleHTML designedfor humanmodification.OpaqueformatsincludePostScript,PDF, proprietaryformatsthatcanbereadandeditedonly by proprietaryword pro-cessors,SGML or XML for which theDTD and/orprocessingtoolsarenot generallyavailable,andthemachine-generatedHTML producedby somewordprocessorsfor outputpurposesonly.

The "Title Page"means,for a printedbook, the title pageitself, plussuchfollowing pagesasareneededto hold, legibly, thematerialthis Licenserequiresto appearin thetitle page.Forworksin formatswhich do not have any title pageassuch,"Title Page"meansthetext nearthemostprominentappearanceof thework’s title, precedingthebeginningof thebodyof thetext.

B.2 Verbatim copyingYou may copy anddistribute the Documentin any medium,eithercommerciallyor noncom-mercially, provided that this License,the copyright notices,andthe licensenoticesayingthis

Page 41: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

B.3. COPYINGIN QUANTITY 41

Licenseappliesto the Documentarereproducedin all copies,andthat you addno othercon-ditionswhatsoever to thoseof this License.You maynot usetechnicalmeasuresto obstructorcontrol thereadingor furthercopying of thecopiesyou make or distribute. However, you mayacceptcompensationin exchangefor copies.If you distributea largeenoughnumberof copiesyou mustalsofollow theconditionsin section3.

You may alsolend copies,underthe sameconditionsstatedabove, andyou may publiclydisplaycopies.

B.3 Copying in quantity

If you publishprintedcopiesof theDocumentnumberingmorethan100,andtheDocument’slicensenoticerequiresCoverTexts,youmustenclosethecopiesin coversthatcarry, clearlyandlegibly, all theseCover Texts: Front-Cover Texts on the front cover, andBack-Cover Texts onthebackcover. Both coversmustalsoclearlyandlegibly identify you asthepublisherof thesecopies.The front cover mustpresentthe full title with all wordsof the title equallyprominentandvisible. Youmayaddothermaterialonthecoversin addition.Copying with changeslimitedto thecovers,aslongasthey preserve thetitle of theDocumentandsatisfytheseconditions,canbetreatedasverbatimcopying in otherrespects.

If therequiredtexts for eithercover aretoovoluminousto fit legibly, youshouldput thefirstoneslisted (asmany asfit reasonably)on theactualcover, andcontinuethe restonto adjacentpages.

If you publishor distributeOpaquecopiesof theDocumentnumberingmorethan100,youmusteitherincludea machine-readableTransparentcopy alongwith eachOpaquecopy, or statein or with eachOpaquecopy apublicly-accessiblecomputer-network locationcontainingacom-plete Transparentcopy of the Document,free of addedmaterial,which the generalnetwork-usingpublic hasaccessto downloadanonymouslyat no charge usingpublic-standardnetworkprotocols.If you usethelatteroption,you musttake reasonablyprudentsteps,whenyou begindistribution of Opaquecopiesin quantity, to ensurethat this Transparentcopy will remainthusaccessibleat thestatedlocationuntil at leastoneyearafterthelasttimeyoudistributeanOpaquecopy (directlyor throughyouragentsor retailers)of thateditionto thepublic.

It is requested,but not required,that you contactthe authorsof theDocumentwell beforeredistributingany largenumberof copies,to give thema chanceto provide you with anupdatedversionof theDocument.

B.4 Modifications

You maycopy anddistributea Modified Versionof theDocumentundertheconditionsof sec-tions2 and3 above,providedthatyoureleasetheModifiedVersionunderpreciselythisLicense,with theModified Versionfilling therole of theDocument,thuslicensingdistributionandmod-ification of the Modified Versionto whoever possessesa copy of it. In addition,you mustdothesethingsin theModified Version:

A. Usein theTitle Page(andon thecovers,if any) a title distinct from thatof theDocument,andfrom thoseof previousversions(whichshould,if therewereany, belistedin theHistorysectionof theDocument).You may usethe sametitle asa previous versionif theoriginalpublisherof thatversiongivespermission.

B. List ontheTitle Page,asauthors,oneor morepersonsor entitiesresponsiblefor authorshipofthemodificationsin theModified Version,togetherwith at leastfive of theprincipalauthorsof theDocument(all of its principalauthors,if it haslessthanfive).

C. Stateon theTitle pagethenameof thepublisherof theModified Version,asthepublisher.

D. Preserveall thecopyright noticesof theDocument.

Page 42: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

42 ANNEXE B. GNU FREEDOCUMENTATION LICENSE(GFDL)

E. Add anappropriatecopyright noticefor your modificationsadjacentto theothercopyrightnotices.

F. Include,immediatelyafter thecopyright notices,a licensenoticegiving thepublic permis-sion to usetheModified Versionunderthe termsof this License,in the form shown in theAddendumbelow.

G. Preserve in that licensenoticethe full lists of InvariantSectionsandrequiredCover Textsgivenin theDocument’s licensenotice.

H. Includeanunalteredcopy of thisLicense.

I. Preserve the sectionentitled "History", and its title, andadd to it an item statingat leastthe title, year, new authors,and publisherof the Modified Versionas given on the TitlePage. If thereis no sectionentitled"History" in theDocument,createonestatingthe title,year, authors,andpublisherof the Documentasgiven on its Title Page,thenaddan itemdescribingtheModified Versionasstatedin theprevioussentence.

J. Preserve the network location,if any, given in the Documentfor public accessto a Trans-parentcopy of the Document,and likewise the network locationsgiven in the Documentfor previous versionsit wasbasedon. Thesemay be placedin the "History" section. Youmay omit a network location for a work that waspublishedat leastfour yearsbeforetheDocumentitself, or if theoriginalpublisherof theversionit refersto givespermission.

K. In any sectionentitled"Acknowledgements"or "Dedications",preserve the section’s title,andpreserve in the sectionall the substanceandtoneof eachof the contributor acknowl-edgementsand/ordedicationsgiventherein.

L. Preserveall theInvariantSectionsof theDocument,unalteredin their text andin their titles.Sectionnumbersor theequivalentarenotconsideredpartof thesectiontitles.

M. Deleteany sectionentitled "Endorsements".Sucha sectionmay not be included in theModified Version.

N. Do not retitleany existingsectionas"Endorsements"or to conflict in title with any InvariantSection.

If the Modified Versionincludesnew front-mattersectionsor appendicesthat qualify asSecondarySectionsandcontainnomaterialcopiedfrom theDocument,you mayat youroptiondesignatesomeor all of thesesectionsas invariant. To do this, add their titles to the list ofInvariantSectionsin the Modified Version’s licensenotice. Thesetitles mustbe distinct fromany othersectiontitles.

You mayadda sectionentitled"Endorsements",provided it containsnothingbut endorse-mentsof your Modified Versionby variousparties–forexample,statementsof peerreview orthatthetext hasbeenapprovedby anorganizationastheauthoritative definitionof a standard.

You may adda passageof up to five wordsasa Front-Cover Text, anda passageof up to25 wordsasa Back-Cover Text, to the endof the list of Cover Texts in the Modified Version.Only onepassageof Front-CoverText andoneof Back-CoverText maybeaddedby (or througharrangementsmadeby) any oneentity. If the Documentalreadyincludesa cover text for thesamecover, previously addedby you or by arrangementmadeby thesameentity you areactingon behalfof, you maynot addanother;but you mayreplacetheold one,on explicit permissionfrom thepreviouspublisherthataddedtheold one.

The author(s)andpublisher(s)of the Documentdo not by this Licensegive permissiontousetheir namesfor publicity for or to assertor imply endorsementof any ModifiedVersion.

B.5 Combining documentsYou may combinethe Documentwith otherdocumentsreleasedunderthis License,underthetermsdefinedin section4 above for modifiedversions,providedthatyou includein thecombi-nationall of theInvariantSectionsof all of theoriginaldocuments,unmodified,andlist themallasInvariantSectionsof your combinedwork in its licensenotice.

Page 43: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

B.6. COLLECTIONSOF DOCUMENTS 43

Thecombinedwork needonly containonecopy of this License,andmultiple identicalIn-variantSectionsmaybereplacedwith asinglecopy. If therearemultiple InvariantSectionswiththesamenamebut differentcontents,make thetitle of eachsuchsectionuniqueby addingat theendof it, in parentheses,thenameof theoriginal authoror publisherof that sectionif known,or elsea uniquenumber. Make thesameadjustmentto thesectiontitles in the list of InvariantSectionsin thelicensenoticeof thecombinedwork.

In thecombination,youmustcombineany sectionsentitled"History" in thevariousoriginaldocuments,forming onesectionentitled"History"; likewisecombineany sectionsentitled"Ac-knowledgements",andany sectionsentitled"Dedications".Youmustdeleteall sectionsentitled"Endorsements."

B.6 Collectionsof documentsYoumaymake acollectionconsistingof theDocumentandotherdocumentsreleasedunderthisLicense,andreplacetheindividualcopiesof thisLicensein thevariousdocumentswith asinglecopy that is includedin the collection,provided that you follow the rulesof this Licenseforverbatimcopying of eachof thedocumentsin all otherrespects.

You may extract a single documentfrom sucha collection, anddistribute it individuallyunderthis License,providedyou inserta copy of this Licenseinto theextracteddocument,andfollow this Licensein all otherrespectsregardingverbatimcopying of thatdocument.

B.7 Aggregationwith independentworksA compilationof theDocumentor its derivativeswith otherseparateandindependentdocumentsor works, in or on a volume of a storageor distribution medium,doesnot as a whole countasa Modified Versionof the Document,provided no compilationcopyright is claimedfor thecompilation. Sucha compilationis calledan "aggregate",andthis Licensedoesnot apply totheotherself-containedworksthuscompiledwith theDocument,onaccountof their beingthuscompiled,if they arenot themselvesderivative worksof theDocument.

If theCoverText requirementof section3 is applicableto thesecopiesof theDocument,thenif theDocumentis lessthanonequarterof theentireaggregate,theDocument’sCoverTextsmaybeplacedoncoversthatsurroundonly theDocumentwithin theaggregate.Otherwisethey mustappearon coversaroundthewholeaggregate.

B.8 TranslationTranslationis considereda kind of modification,soyoumaydistributetranslationsof theDocu-mentunderthetermsof section4. ReplacingInvariantSectionswith translationsrequiresspecialpermissionfrom their copyright holders,but you mayincludetranslationsof someor all Invari-ant Sectionsin additionto the original versionsof theseInvariantSections.You may includea translationof this Licenseprovided that you alsoincludetheoriginal Englishversionof thisLicense. In caseof a disagreementbetweenthe translationandtheoriginal Englishversionofthis License,theoriginalEnglishversionwill prevail.

B.9 TerminationYou maynot copy, modify, sublicense,or distributetheDocumentexceptasexpresslyprovidedfor underthis License. Any otherattemptto copy, modify, sublicenseor distribute the Docu-mentis void, andwill automaticallyterminateyour rightsunderthis License.However, partieswho have received copies,or rights, from you underthis Licensewill not have their licensesterminatedsolongassuchpartiesremainin full compliance.

Page 44: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

44 ANNEXE B. GNU FREEDOCUMENTATION LICENSE(GFDL)

B.10 Futur e revisionsof this licenseTheFreeSoftwareFoundationmaypublishnew, revisedversionsof theGNU FreeDocumenta-tion Licensefrom timeto time. Suchnew versionswill besimilar in spirit to thepresentversion,but maydiffer in detail to addressnew problemsor concerns.See

http:///www.gnu.org/copyleft/

Eachversionof the Licenseis given a distinguishingversionnumber. If the Documentspecifiesthata particularnumberedversionof this License"or any later version"appliesto it,you have theoptionof following the termsandconditionseitherof thatspecifiedversionor ofany laterversionthathasbeenpublished(notasadraft)by theFreeSoftwareFoundation.If theDocumentdoesnot specifya versionnumberof this License,you maychooseany versioneverpublished(notasa draft) by theFreeSoftwareFoundation.

Addendum: How to usethis Licensefor your documentsTo usethis Licensein a documentyou have written, includea copy of theLicensein thedocu-mentandput thefollowing copyright andlicensenoticesjustafterthetitle page:

Copyright c�

YEAR YOURNAME.Permissionis grantedto copy, distribute and/ormodify this documentunderthetermsof the GNU FreeDocumentationLicense,Version1.1 or any later versionpublishedby theFreeSoftwareFoundation;with theInvariantSectionsbeingLISTTHEIR TITLES,with theFront-CoverTextsbeingLIST, andwith theBack-CoverTexts beingLIST. A copy of the licenseis includedin thesectionentitled"GNUFreeDocumentationLicense".

If youhavenoInvariantSections,write "with noInvariantSections"insteadof sayingwhichonesareinvariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" insteadof"Front-Cover Texts beingLIST"; likewisefor Back-Cover Texts.

If your documentcontainsnontrivial examplesof programcode,we recommendreleasingtheseexamplesin parallelunderyour choiceof freesoftwarelicense,suchastheGNU GeneralPublicLicense,to permittheirusein freesoftware.

Page 45: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Bibliographie

[1] I . VAN LANINGHAM (TRADUCTION DE D.FRÈRE, K.COTTEREAUX et N.RENARD) –L’intro python, ISBN 2-7440-0946-6éd., CampusPress,Octobre2000,Cet ouvragetrèsdidactiqueestbien adaptéau débutants.Il proposeaussiunebonneintroductionà la pro-grammationd’interfacesgraphiques.

[2] O. BERGER –http ://perso.club-internet.fr/olberger/python /pyton .htmlVoustrouverezsurla pagewebd’Olivier BERGER la traductionfrançaisedu tutorial Python,ainsiquedesliensverslespagesfracophonesrelativesà Python.

[3] M. LUTZ, D. ASCHER (TRADUCTION DE S.TANGUY , O.BERGER et J.KALIFA) – Intro-ductionà python, ISBN 2-84177-089-3éd.,O’Reilly, Janvier 2000,Le livre idéalpour lespersonnespastoutà fait débutantesenprogrammation.

[4] G. VAN ROSSUM , F. L . DRAKE, JR. et EDITOR – Python tutorial, BeOpenPython-Labs,[email protected] - http ://www.python.org , Octobre2000,Cetexte,ainsiquetoutela documentationestlivré avecPython,si cen’estpasle cas,vouspouvez le téléchargerà l’adresseindiquée.C’estbienévidemmentun incontournable! (Latraductionfrançaiseestdisponiblesurle sited’Olivier BERGER (voir ci-dessus)).

[5] M. LUTZ (TRADUCTION J.GUÉRIN) – Pythonprécis& concis, ISBN 2-84177-111-3éd.,O’Reilly, 2000,Un petit guidede référencesur le langage,indispensabletant quel’on neconnaitpastouteslesinstructions,fonctionsintégréeset modulesparcœur...

45

Page 46: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

Index

Symboles!= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14,19+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14,19- . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14/ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21<= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25< . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25== . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24,25= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18>= . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21%. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18_ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Aaddition. . . . . . . . . . . . . . . . . . . . . . . . . . . . 14affectation. . . . . . . . . . . . . . . . . . . . . . . . . . 18

Bbloc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25boucle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

break . . . . . . . . . . . . . . . . . . . . . . . . 28continue . . . . . . . . . . . . . . . . . . . . 28while . . . . . . . . . . . . . . . . . . . . . . . . 27infinie . . . . . . . . . . . . . . . . . . . . . . . . . 28

break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Cchaînedecaractères. . . . . . . . . . . . . . . . . . 19commentaire. . . . . . . . . . . . . . . . . . . . . . . . 21compilateur. . . . . . . . . . . . . . . . . . . . . . . . . 11condition. . . . . . . . . . . . . . . . . . . . . . . . . . . 25

égalité. . . . . . . . . . . . . . . . . . . . . . . . . 24vrai/faux. . . . . . . . . . . . . . . . . . . . . . . 27

continue . . . . . . . . . . . . . . . . . . . . . . . . . 28contrôledeflux. . . . . . . . . . . . . . . . . . . . . . 29

Ddebugger. . . . . . . . . . . . . . . . . . . . . . . . . . . 11

def . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21division. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Eelif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Ffonction. . . . . . . . . . . . . . . . . . . . . . . . . 20–23

def . . . . . . . . . . . . . . . . . . . . . . . . . . . 21nom. . . . . . . . . . . . . . . . . . . . . . . . . . . 20paramètrepardéfaut. . . . . . . . . . . . 23

IIDLE . . . . . . . . . . . . . . . . . . . . . . . . . . . 13,14if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24indentation. . . . . . . . . . . . . . . . . . . . . . . . . . 21input() . . . . . . . . . . . . . . . . . . . . . . . . . . 26instructionconditionnelle. . . . . . . . . 24,29

elif . . . . . . . . . . . . . . . . . . . . . . . . . 25else . . . . . . . . . . . . . . . . . . . . . . . . . 25if . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

interpréteurinteractif . . . . . . . . . . . . . . . . 13

Llangagecompilé. . . . . . . . . . . . . . . . . . . . . 11langageinterprété. . . . . . . . . . . . . . . . 11,12linker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

Mmodeinteractif

particularités. . . . . . . . . . . . . . . 20,22modulo. . . . . . . . . . . . . . . . . . . . . . . . . 18,29multiplication. . . . . . . . . . . . . . . . . . . . . . . 14

Oopérateurs. . . . . . . . . . . . . . . . . . . . . . . . . . 14

égalité. . . . . . . . . . . . . . . . . . . . . . . . . 24addition. . . . . . . . . . . . . . . . . . . . . . . 14booléen. . . . . . . . . . . . . . . . . . . . . . . . 27comparaison. . . . . . . . . . . . . . . . . . . 25concaténation. . . . . . . . . . . . . . . . . . 19

46

Page 47: Python est mon amipycreach.free.fr/seconde/algorithmique/PythonAmi.pdf · 2010. 7. 21. · Python fait partie de cette seconde catégorie. De plus, l’interpréteur Python peut être

INDEX 47

division . . . . . . . . . . . . . . . . . . . . . . . 14modulo. . . . . . . . . . . . . . . . . . . . . . . . 18multiplication. . . . . . . . . . . . . . . . . . 14répétition. . . . . . . . . . . . . . . . . . . . . . 19soustraction. . . . . . . . . . . . . . . . . . . . 14

Pparamètre. . . . . . . . . . . . . . . . . . . . . . . 20,21programmationfonctionnelle. . . . . . . . . 23

Rraw_input() . . . . . . . . . . . . . . . . . . . . . 26return . . . . . . . . . . . . . . . . . . . . . . . . 21,22

Ssoustraction. . . . . . . . . . . . . . . . . . . . . . . . . 14

Ttabulation. . . . . . . . . . . . . . . . . . . . . . . . . . . 21type. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

chaînedecaractères. . . . . . . . . 19,26entier. . . . . . . . . . . . . . . . . . . . . . . . . . 18réel . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

Vvariable. . . . . . . . . . . . . . . . . . . . . . . . . 17,19

nom. . . . . . . . . . . . . . . . . . . . . . . . . . . 18spéciale. . . . . . . . . . . . . . . . . . . . . . . 20type. . . . . . . . . . . . . . . . . . . . . . . . . . . 18

chaînedecaractères. . . . . . . . . . 19entier. . . . . . . . . . . . . . . . . . . . . . . 18réel. . . . . . . . . . . . . . . . . . . . . . . . . 18

Wwhile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27