<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <!--Converted with LaTeX2HTML 98.2 beta6 (August 14th, 1998) original version by:  Nikos Drakos, CBLU, University of Leeds * revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan * with significant contributions from:   Jens Lippmann, Marek Rouchal, Martin Wilck and others --> <HTML> <HEAD> <TITLE>3. Une Introduction Informelle  Python </TITLE> <META NAME="description" CONTENT="3. Une Introduction Informelle  Python "> <META NAME="keywords" CONTENT="tut"> <META NAME="resource-type" CONTENT="document"> <META NAME="distribution" CONTENT="global"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> <LINK REL="STYLESHEET" HREF="tut.css"> <LINK REL="next" HREF="node6.html"> <LINK REL="previous" HREF="node4.html"> <LINK REL="up" HREF="tut.html"> <LINK REL="next" HREF="node6.html"> </HEAD> <BODY bgcolor="#ffffff"> <div class=navigation> <table width="100%" cellpadding=0 cellspacing=2> <tr> <td><A NAME="tex2html206"  HREF="node6.html"><img width=32 height=32 align=bottom border=0 alt="next"  src="../icons/next.gif"></A></td> <td><A NAME="tex2html203"  HREF="tut.html"><img width=32 height=32 align=bottom border=0 alt="up"  src="../icons/up.gif"></A></td> <td><A NAME="tex2html197"  HREF="node4.html"><img width=32 height=32 align=bottom border=0 alt="previous"  src="../icons/previous.gif"></A></td> <td align=center bgcolor="#99CCFF" width="100%">  <b class=title>Tutoriel Python</b></td> <td><A NAME="tex2html205"  HREF="node2.html"><img width=32 height=32 align=bottom border=0 alt="contents"  src="../icons/contents.gif"></A></td> <td><img width=32 height=32 align=bottom border=0 alt="blank"  src="../icons/blank.gif"></td> <td><img width=32 height=32 align=bottom border=0 alt="blank"  src="../icons/blank.gif"></td> </tr></table><b class=navlabel>Next:</b> <span class=sectref><A NAME="tex2html207"  HREF="node6.html">4. D'Autres Outils de</A></span> <b class=navlabel>Up:</b> <span class=sectref><A NAME="tex2html204"  HREF="tut.html">Tutoriel Python</A></span> <b class=navlabel>Previous:</b> <span class=sectref><A NAME="tex2html198"  HREF="node4.html">2. Utilisation de l'Interprteur</A></span> <br><hr></div> <!--End of Navigation Panel--> <!--Table of Child-Links--> <A NAME="CHILD_LINKS"><STRONG>Sous-sections</STRONG></A>  <UL> <LI><A NAME="tex2html208"  HREF="node5.html#SECTION005100000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Utiliser Python comme Calculatrice </A> <UL> <LI><A NAME="tex2html209"  HREF="node5.html#SECTION005110000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Nombres </A> <LI><A NAME="tex2html210"  HREF="node5.html#SECTION005120000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Chanes de Caractres </A> <LI><A NAME="tex2html211"  HREF="node5.html#SECTION005130000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> Listes </A> </UL> <LI><A NAME="tex2html212"  HREF="node5.html#SECTION005200000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Premiers Pas Vers la Programmation </A> </UL> <!--End of Table of Child-Links--> <HR>  <H1><A NAME="SECTION005000000000000000000"></A> <BR> <SPAN CLASS="arabic">3</SPAN>. Une Introduction Informelle  Python  </H1>  <P> Dans les exemples suivants, la saisie et l'affichage seront distingus par  la prsence ou l'absence d'invites ("<tt class=samp>&gt;&gt;&gt; </tt>" et "<tt class=samp>... </tt>"): pour reproduire  l'exemple, vous devez taper tout ce qui suit l'invite, quand celle-ci apparat;  les lignes qui ne commencent pas par une invite correspondent  l'affichage effectu par l'interprteur. Notez qu'une invite secondaire seule sur une ligne  signifie que vous devez taper une ligne vide; ceci marque la fin des commandes sur plusieurs lignes.  <P> De nombreux exemples de ce manuel, mme ceux qui sont saisis  partir de l'invite, contiennent des commentaires.  En Python, les commentaires commencent par le caractre dise, "<tt class=character>#</tt>", et se poursuivent jusqu' la fin de la ligne. Un commentaire peut apparatre au dbut de la ligne ou derrire des espaces ou du code, mais pas  l'intrieur d'une chane de caractres. Un dise  l'intrieur d'une chane de caractres est simplement le caractre dise.  <P> Quelques exemples:  <P> <dl><dd><pre class=verbatim> # voila le premier commentaire SPAM = 1                 # et ca c'est le second commentaire                          # ... et voila un troisieme! CHAINE = "# Ceci n'est pas un commentaire." </pre></dl>  <P>  <H1><A NAME="SECTION005100000000000000000"></A> <BR> <SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Utiliser Python comme Calculatrice  </H1>  <P> Essayons quelques commandes Python simples. Lancez l'interprteur et attendez l'apparition du prompt principal, "<tt class=samp>&gt;&gt;&gt; </tt>".  (a ne devrait pas tre trs long.)  <P>  <H2><A NAME="SECTION005110000000000000000"></A> <BR> <SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Nombres  </H2>  <P> L'interprteur fonctionne comme une simple calculatrice: vous pouvez y taper une expression et il va en afficher la valeur. La syntaxe des expression est naturelle: les oprateurs <tt>+</tt>, <tt>-</tt>, <tt>*</tt>et <tt>/</tt> marchent exactement comme dans la plupart des langages (par exemple Pascal ou C); les parenthses peuvent tre utilises pour les regrouper. Par exemple:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; 2+2 4 &gt;&gt;&gt; # Ceci est un commentaire ... 2+2 4 &gt;&gt;&gt; 2+2  # et un commentaire sur la mme ligne que le code 4 &gt;&gt;&gt; (50-5*6)/4 5 &gt;&gt;&gt; # La division des entiers retourne l'entier immdiatement infrieur: ... 7/3 2 &gt;&gt;&gt; 7/-3 -3 </pre></dl>  <P> Comme en C, le signe gale ("<tt class=character>=</tt>") est utilis pour affecter une valeur  une variable. La valeur d'une affectation n'est pas affiche:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; largeur = 20 &gt;&gt;&gt; hauteur = 5*9 &gt;&gt;&gt; largeur * hauteur 900 </pre></dl> Une valeur peut tre affecte  plusieurs variables simultanment:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; x = y = z = 0  # Mettre  zro x, y et z &gt;&gt;&gt; x 0 &gt;&gt;&gt; y 0 &gt;&gt;&gt; z 0 </pre></dl> Il y a un support complet des nombres  virgule flottante; les oprateurs  en prsence de types d'oprandes mlangs convertissent les oprandes  entiers en virgule flottante :  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; 4 * 2.5 / 3.3 3.0303030303 &gt;&gt;&gt; 7.0 / 2 3.5 </pre></dl> Les nombres complexes sont aussi supports; les nombres imaginaires sont affichs avec un suffixe en "<tt class=samp>j</tt>" ou "<tt class=samp>J</tt>". Les nombres complexes avec une composante relle diffrente de zro sont affichs comme "<tt class=samp>(<var>rel</var>+<var>imag</var>j)</tt>", et peuvent tre crs avec la fonction "<tt class=samp>complex(<var>rel</var>, <var>imag</var>)</tt>".  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; 1j * 1J (-1+0j) &gt;&gt;&gt; 1j * complex(0,1) (-1+0j) &gt;&gt;&gt; 3+1j*3 (3+3j) &gt;&gt;&gt; (3+1j)*3 (9+3j) &gt;&gt;&gt; (1+2j)/(1+1j) (1.5+0.5j) </pre></dl> Les nombres complexes sont toujours reprsents comme deux nombres en virgule flottante, les parties relle et imaginaire. Pour extraire ces parties d'un nombre complexe <var>z</var>, utilisez <tt><var>z</var>.real</tt> et <tt><var>z</var>.imag</tt>.  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; a=1.5+0.5j &gt;&gt;&gt; a.real 1.5 &gt;&gt;&gt; a.imag 0.5 </pre></dl> Les fonctions de conversion en virgule flottante et en entier (<tt class=function>float()</tt>, <tt class=function>int()</tt> et <tt class=function>long()</tt>) ne marchent pas pour les nombres complexes -- il n'y a pas une  faon correcte et unique de convertir un nombre complexe en un nombre rel. Utilisez <tt>abs(<var>z</var>)</tt> pour obtenir sa norme (en flottant) ou <tt>z.real</tt> pour sa partie relle.  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; a=1.5+0.5j &gt;&gt;&gt; float(a) Traceback (innermost last):   File "&lt;stdin&gt;", line 1, in ? TypeError: can't convert complex to float; use e.g. abs(z) &gt;&gt;&gt; a.real 1.5 &gt;&gt;&gt; abs(a) 1.58113883008 </pre></dl> En mode interactif, la dernire expression affiche est affecte  la variable <tt>_</tt>.  Quand vous voulez utiliser Python comme calculatrice, c'est plus pratique pour continuer les calculs, par exemple:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; tva = 17.5 / 100 &gt;&gt;&gt; prix = 3.50 &gt;&gt;&gt; prix * tva 0.6125 &gt;&gt;&gt; prix + _ 4.1125 &gt;&gt;&gt; round(_, 2) 4.11 </pre></dl>  <P> Cette variable doit tre utilise en lecture seule par l'utilisateur. Ne lui affectez pas une valeur de faon explicite -- vous auriez alors cr une variable locale indpendante, avec le mme nom, masquant la variable intgre et son comportement magique.  <P>  <H2><A NAME="SECTION005120000000000000000"></A> <BR> <SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Chanes de Caractres  </H2>  <P> En plus des nombres, Python peut aussi manipuler des chanes, qui peuvent tre exprimes de diffrentes faons. Elles peuvent tre incluses entre simples quotes (apostrophes) ou doubles quotes (guillemets):  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; 'spam eggs' 'spam eggs' &gt;&gt;&gt; 'n\'est-ce pas' "n'est-ce pas" &gt;&gt;&gt; "n'est-ce pas" "n'est-ce pas" &gt;&gt;&gt; '"Oui," dit-il.' '"Oui," dit-il.' &gt;&gt;&gt; "\"Oui,\" dit-il." '"Oui," dit-il.' &gt;&gt;&gt; '"N\'est-ce pas," repondit-elle.' '"N\'est-ce pas," repondit-elle.' </pre></dl>  <P> Notez <A NAME="tex2html2"  HREF="#foot194"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A> que les chanes admettent ou non les caractres accentus en mode intractif suivant votre plate-forme. Si les commandes sont lues depuis un fichier, la situation est lgrement diffrente: en gnral vous pourrez, mais les caractres accentus risquent d'tre interprts diffremment si vous transfrez vos fichiers entre des plate-formes diffrentes. Pour ces questions de portabilit, les identificateurs en Python sont limits au code ASCII 7 bits. Vous ne pourrez pas (en mode intractif ou pas) utiliser des lettres accentues dans les noms de variables, fonctions, modules, classes, etc.  <P> Les textes dans les chanes peuvent se poursuivre sur plusieurs lignes de plusieurs faons. Les retours chariot peuvent tre prfixs avec un antislash, par ex.:  <P> <dl><dd><pre class=verbatim> salut = "Ceci est une chane plutot longue contenant\n\ plusieurs lignes de texte excatement comme on le ferait en C.\n\     Notez que les blancs au dbut de la ligne sont\  significatifs.\n" print salut </pre></dl>  <P> ce qui s'afficherait de la faon suivante:  <P> <dl><dd><pre class=verbatim> Ceci est une chane plutot longue contenant plusieurs lignes de texte excatement comme on le ferait en C.     Notez que les blancs au dbut de la ligne sont significatifs. </pre></dl>  <P> Ou bien, les chanes peuvent tre entoures par un couple de triple-quotes correspondantes: <tt>"""</tt> ou <tt>'''</tt>.  Les fins de lignes n'ont pas besoin d'tre prfixes lorsqu'on utilise les triple-quotes, mais elles seront incluses dans la chane.  <P> <dl><dd><pre class=verbatim> print """ Usage: trucmuche [OPTIONS]       -h                        Affiche cette notice d'usage      -H hte                   hte auquel il faut se connecter """ </pre></dl>  <P> produit l'affichage suivant:  <P> <dl><dd><pre class=verbatim> Usage: trucmuche [OPTIONS]       -h                        Affiche cette notice d'usage      -H hte                   hte auquel il faut se connecter </pre></dl>  <P> L'interprteur affiche le rsultat des oprations sur les chanes de la mme faon qu' la saisie: entre quotes, et avec quotes et autres caractres bizarres prfixs par un antislash, pour afficher leur valeur exacte. La chane sera dlimite par des doubles quotes si elle contient une simple quote et aucune double quote, sinon, elle sera dlimite par des simples quotes. (L'instruction <tt class=keyword>print</tt>, dcrite plus loin, peut tre utilise pour crire des chanes sans quotes ni caractres prfixs.)  <P> Les chanes peuvent tre concatnes (accoles) avec l'oprateur <tt>+</tt>, et rptes avec <tt>*</tt>:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; mot = 'Help' + 'A' &gt;&gt;&gt; mot 'HelpA' &gt;&gt;&gt; '&lt;' + mot*5 + '&gt;' '&lt;HelpAHelpAHelpAHelpAHelpA&gt;' </pre></dl>  <P> Deux chanes de texte cte  cte sont automatiquement concatnes; la premire ligne ci-dessus aurait aussi pu tre crite "<tt class=samp>mot = 'Help''A'</tt>"; ceci fonctionne seulement avec deux chanes de texte litrales, pas avec des expressions quelconques de type chane:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; 'cha' 'ine'                   #  &lt;-  C'est bon 'chaine' &gt;&gt;&gt; string.strip('cha') + 'ine'   #  &lt;-  C'est bon 'chaine' &gt;&gt;&gt; string.strip('cha') 'ine'     #  &lt;-  C'est faux   File "&lt;stdin&gt;", line 1     string.strip('cha') 'ine'                             ^ SyntaxError: invalid syntax </pre></dl>  <P> Les chanes peuvent tre dcomposes (indexes); comme en C, le premier caractre d'une chane est en position (index) 0. Il n'y a pas de type caractre spcifique; un caractre est simplement une chane de taille un. Comme en Icon, les sous-chanes peuvent tre spcifies avec la <i>notation de dcoupage</i> (<i>slice</i>): deux indices spars par deux-points.  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; mot[4] 'A' &gt;&gt;&gt; mot[0:2] 'He' &gt;&gt;&gt; mot[2:4] 'lp' </pre></dl>  <P> Les indices de dcoupage ont des valeurs par dfaut utiles; un premier index non-dfini prend pour valeur par dfaut zro, un second index omis prend pour valeur par dfaut la taille de la chane qu'on est en train de dcouper.  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; mot[:2]    # Les deux premiers caractres 'He' &gt;&gt;&gt; mot[2:]    # Tout sauf les deux premiers caractres 'lpA' </pre></dl>  <P> Voici un invariant utile des oprations de dcoupage: <tt>s[:i] +   s[i:]</tt> gale <tt>s</tt>.  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; mot[:2] + mot[2:] 'HelpA' &gt;&gt;&gt; mot[:3] + mot[3:] 'HelpA' </pre></dl>  <P> Les indices de dcoupage errons sont grs de faon lgante: un index qui est trop grand est remplac par la taille de la chane, un index de fin infrieur  l'indice de dbut retourne une chane vide.  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; mot[1:100] 'elpA' &gt;&gt;&gt; mot[10:] '' &gt;&gt;&gt; mot[2:1] '' </pre></dl>  <P> Les indices peuvent tre des nombres ngatifs, pour  compter  partir de la droite. Par exemple:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; mot[-1]     # Le dernier caractre 'A' &gt;&gt;&gt; mot[-2]     # L'avant dernier caractre 'p' &gt;&gt;&gt; mot[-2:]    # Les deux derniers caractres 'pA' &gt;&gt;&gt; mot[:-2]    # Tout sauf les deux derniers caractres 'Hel' </pre></dl>  <P> Mais notez que -0 est vraiment la mme chose que 0, donc a ne compte pas  partir de la droite!  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; mot[-0]     # (puisque -0 gale 0) 'H' </pre></dl>  <P> Les indices de dcoupage ngatifs hors limites sont tronqus, mais n'essayez pas ceci avec des indices d'accs  des lments uniques (sans dcoupage) :  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; mot[-100:] 'HelpA' &gt;&gt;&gt; mot[-10]    # erreur Traceback (innermost last):   File "&lt;stdin&gt;", line 1 IndexError: string index out of range </pre></dl>  <P> La meilleure faon de se rappeler comment marchent les dcoupages est de penser aux indices comme pointant <i>entre</i> les caractres, avec le bord gauche du premier caractre numrot 0. Alors le bord droit du dernier caractre d'une chane de <var>n</var> caractres porte l'index <var>n</var>, par exemple:  <P> <dl><dd><pre class=verbatim>  +---+---+---+---+---+   | H | e | l | p | A |  +---+---+---+---+---+   0   1   2   3   4   5  -5  -4  -3  -2  -1 </pre></dl>  <P> La premire ligne de nombres donne la position des indices 0...5 dans la chane; la seconde ligne donne les indice ngatifs correspondants. Le dcoupage de <var>i</var>  <var>j</var> consiste en tous les caractres entre les extrmits tiquetes <var>i</var> et <var>j</var>, respectivement.  <P> Pour les indices non ngatifs, la longueur d'une tranche est la diffrence entre ses indices, si les deux sont  l'intrieur des limites, par ex., la longueur de <tt>mot[1:3]</tt> est 2.  <P> La fonction intgre <tt class=function>len()</tt> retourne la longueur d'une chane:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; s = 'supercalifragilisticexpialidocious' &gt;&gt;&gt; len(s) 34 </pre></dl>  <P>  <H2><A NAME="SECTION005130000000000000000"></A> <BR> <SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> Listes  </H2>  <P> Python connat un grand nombre de types de donnes <i>composites</i>, utilises pour regrouper un ensemble de valeurs. La plus riche en possibilits est la <i>liste</i>, qui peut tre crite comme une liste de valeurs (lments) entre crochets et spars par des virgules. Les lments d'une liste n'ont pas ncessairement le mme type.  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; a = ['spam', 'eggs', 100, 1234] &gt;&gt;&gt; a ['spam', 'eggs', 100, 1234] </pre></dl>  <P> Comme les indices des chanes, les indices des listes commencent  0, et les listes peuvent tre dcoupes, concatnes, et ainsi de suite:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; a[0] 'spam' &gt;&gt;&gt; a[3] 1234 &gt;&gt;&gt; a[-2] 100 &gt;&gt;&gt; a[1:-1] ['eggs', 100] &gt;&gt;&gt; a[:2] + ['bacon', 2*2] ['spam', 'eggs', 'bacon', 4] &gt;&gt;&gt; 3*a[:3] + ['Boe!'] ['spam', 'eggs', 100, 'spam', 'eggs', 100, 'spam', 'eggs', 100, 'Boe!'] </pre></dl>  <P> A la diffrence des chanes, qui sont <i>non-modifiables</i>, il est possible de changer les lments individuels d'une liste:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; a ['spam', 'eggs', 100, 1234] &gt;&gt;&gt; a[2] = a[2] + 23 &gt;&gt;&gt; a ['spam', 'eggs', 123, 1234] </pre></dl>  <P> L'affectation dans des tranches est aussi possible, et ceci peut mme changer la taille de la liste:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; # Remplacer certains lments: ... a[0:2] = [1, 12] &gt;&gt;&gt; a [1, 12, 123, 1234] &gt;&gt;&gt; # En enlever certains: ... a[0:2] = [] &gt;&gt;&gt; a [123, 1234] &gt;&gt;&gt; # En insrer ... a[1:1] = ['bletch', 'xyzzy'] &gt;&gt;&gt; a [123, 'bletch', 'xyzzy', 1234] &gt;&gt;&gt; a[:0] = a     # Insre (une copie de) soi-mme au dbut &gt;&gt;&gt; a [123, 'bletch', 'xyzzy', 1234, 123, 'bletch', 'xyzzy', 1234] </pre></dl>  <P> La fonction intgre <tt class=function>len()</tt> s'applique aussi aux listes:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; len(a) 8 </pre></dl>  <P> Il est possible d'emboter des listes (crer des listes contenant d'autres listes), par exemple:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; q = [2, 3] &gt;&gt;&gt; p = [1, q, 4] &gt;&gt;&gt; len(p) 3 &gt;&gt;&gt; p[1] [2, 3] &gt;&gt;&gt; p[1][0] 2 &gt;&gt;&gt; p[1].append('xtra')     # Cf. section 5.1 &gt;&gt;&gt; p [1, [2, 3, 'xtra'], 4] &gt;&gt;&gt; q [2, 3, 'xtra'] </pre></dl>  <P> Notez que dans l'exemple prcdent, <tt>p[1]</tt> et <tt>q</tt> se rfrent rellement au mme objet! Nous reviendrons plus tard sur la <i>smantique des objets</i>.  <P>  <H1><A NAME="SECTION005200000000000000000"></A> <BR> <SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Premiers Pas Vers la Programmation  </H1>  <P> Bien sr, nous pouvons utiliser Python pour des tches plus compliques que d'ajouter deux et deux. Par exemple, nous pouvons crire une sous-squence de la suite de <i>Fibonacci</i> de la faon suivante:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; # Suite de Fibonacci ... # La somme de deux lments dfinit le suivant ... a, b = 0, 1 &gt;&gt;&gt; while b &lt; 10: ...       print b ...       a, b = b, a+b ...  1 1 2 3 5 8 </pre></dl>  <P> Cet exemple introduit plusieurs fonctionnalits nouvelles.  <P>  <UL><LI>La premire ligne contient une <i>affectation multiple</i>: les   variables <tt>a</tt> et <tt>b</tt> prennent simultanment les nouvelles   valeurs 0 et 1. Sur la dernire ligne l'affectation multiple est utilise  nouveau,   montrant que les expressions en partie droite sont d'abord toutes   values avant qu'aucune affectation ne se fasse.  <P>  <LI>La boucle <tt class=keyword>while</tt> s'excute tant que la condition (ici:   <tt>b &lt; 10</tt>) reste vraie. En Python, comme en C, toute valeur   entire diffrente de zro est vraie; zro est faux. La condition   pourrait aussi tre une chane ou une valeur de type liste, en fait   n'importe quelle squence; n'importe quoi avec une longueur   diffrente de zro est vrai, les squences vides correspondent  faux. Le test   utilis dans l'exemple est une simple comparaison. Les oprateurs de   comparaison standard sont crits de la mme faon qu'en C:   <tt>&lt;</tt>, <tt>&gt;</tt>, <tt>==</tt>, <tt>&lt;=</tt>, <tt>&gt;=</tt> et <tt>!=</tt>.  <P>  <LI>Le <i>corps</i> de la boucle est <i>indent</i>: l'indentation est   le moyen par lequel Python regroupe les instructions. Python ne fournit   pas (encore) une fonction d'dition de ligne intelligente, donc vous   devez insrer une tabulation ou un espace pour chaque ligne indente. En   pratique vous prparerez les saisies plus compliques avec un   diteur de texte; la plupart des diteurs de texte ont une fonction   d'auto-indentation. Lorsqu'une instruction compose est entre en   mode interactif, elle doit tre suivie d'une ligne vide pour   indiquer qu'elle est termine (car l'interprteur ne peut pas   deviner si vous avez tap la dernire ligne).  <LI>L'instruction <tt class=keyword>print</tt> crit la valeur de la ou des   expressions qui lui sont donnes. Elle diffre de la simple criture   de l'expression (comme tout--l'heure   dans les exemples de la calculatrice) dans la mesure o elle accepte   plusieurs expressions et chanes. Les chanes sont imprimes sans   quotes, et un espace est insr entre les lments, ce qui vous   permet de les afficher dans un format plus sympathique, comme ceci:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; i = 256*256 &gt;&gt;&gt; print 'La valeur de i est', i La valeur de i est 65536 </pre></dl>  <P> Une virgule finale empche le retour chariot aprs l'affichage:  <P> <dl><dd><pre class=verbatim> &gt;&gt;&gt; a, b = 0, 1 &gt;&gt;&gt; while b &lt; 1000: ...     print b, ...     a, b = b, a+b ...  1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 </pre></dl>  <P> Notez que l'interprteur insre un retour chariot avant d'imprimer le prompt suivant si la ligne n'a pas t complte.  <P>  </UL>  <P> <BR><HR><H4>Notes</H4> <DL> <DT><A NAME="foot194">...Notez </A><A NAME="foot194"  HREF="node5.html#tex2html2"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A> <DD>     NDT : Ce paragraphe absent de l'dition originale a t ajout par Daniel Calvelo Aros  l'intention des utilisateurs de Python francophones.   </DL><p> <div class=navigation><hr><table width="100%" cellpadding=0 cellspacing=2> <tr> <td><A NAME="tex2html206"  HREF="node6.html"><img width=32 height=32 align=bottom border=0 alt="next"  src="../icons/next.gif"></A></td> <td><A NAME="tex2html203"  HREF="tut.html"><img width=32 height=32 align=bottom border=0 alt="up"  src="../icons/up.gif"></A></td> <td><A NAME="tex2html197"  HREF="node4.html"><img width=32 height=32 align=bottom border=0 alt="previous"  src="../icons/previous.gif"></A></td> <td align=center bgcolor="#99CCFF" width="100%">  <b class=title>Tutoriel Python</b></td> <td><A NAME="tex2html205"  HREF="node2.html"><img width=32 height=32 align=bottom border=0 alt="contents"  src="../icons/contents.gif"></A></td> <td><img width=32 height=32 align=bottom border=0 alt="blank"  src="../icons/blank.gif"></td> <td><img width=32 height=32 align=bottom border=0 alt="blank"  src="../icons/blank.gif"></td> </tr></table><b class=navlabel>Next:</b> <span class=sectref><A NAME="tex2html207"  HREF="node6.html">4. D'Autres Outils de</A></span> <b class=navlabel>Up:</b> <span class=sectref><A NAME="tex2html204"  HREF="tut.html">Tutoriel Python</A></span> <b class=navlabel>Previous:</b> <span class=sectref><A NAME="tex2html198"  HREF="node4.html">2. Utilisation de l'Interprteur</A></span> </div> <!--End of Navigation Panel--> <ADDRESS> <hr>Send comments to <a href="mailto:python-docs@python.org">python-docs@python.org</a>. </ADDRESS> </BODY> </HTML>  <IMG SRC="http://195.25.89.17/club_v?total" WIDTH=1 HEIGHT=1 BORDER=0> <SCRIPT> <!-- tps = new Date(); if (tps.getSeconds() < 15) {document.write('<IMG SRC="http://195.25.89.17/club_p?' + tps.getMinutes() + '0' + tps.getSeconds() + '_perso' + '" WIDTH="1" HEIGHT="1">');} // --> </SCRIPT> <NOSCRIPT><P><IMG SRC="http://195.25.89.17/club_p?noscript_perso" WIDTH="1" HEIGHT="1"></ P></NOSCRIPT><!-- DEBUT / Cybermonitor / START --> <script language="javascript"><!-- CM_RUBRIQUE = "edit_PagesPersos_abonnes"; CM_CLIENT = "clubv3"; CM_SECTION1 = "PagesPersos"; // --></script> <script language="javascript" src="http://js.cybermonitor.com/clubv3.js"> </script> <noscript> <img src="http://stat3.cybermonitor.com/clubv3_v?R=edit_PagesPersos_abonnes&S=total;PagesPersos"> </noscript> <!-- FIN / Cybermonitor / END --> 
