{"id":4679,"date":"2012-06-21T17:12:54","date_gmt":"2012-06-21T21:12:54","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=4679"},"modified":"2013-08-07T19:48:06","modified_gmt":"2013-08-07T23:48:06","slug":"12-fr","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/12-fr\/","title":{"rendered":"12: Tuyaux"},"content":{"rendered":"<!-- Please retain this notice and add more notes if you create a new version.<br \/>\nMain French translator: Brice Canvel, brice.canvel@gmail.com<br \/>\nOriginal lesson author: David Pritchard, daveagp@gmail.com<br \/>\nLicense: http:\/\/creativecommons.org\/licenses\/by-nc-sa\/3.0\/<br \/>\nFor the full site, visit http:\/\/cscircles.ca-->\n<p>Cette le\u00e7on contient des \u00e9l\u00e9ments de Python que nous avons laiss\u00e9s de c\u00f4t\u00e9 dans les le\u00e7ons pr\u00e9c\u00e9dentes.<\/p>\n<h2>Options <code>print<\/code><\/h2>\n<p>Jusqu'\u00e0 maintenant, la seule mani\u00e8re que nous avons vu d'\u00e9crire \u00e0 l'\u00e9cran est d'utiliser la fonction <code>print()<\/code>, qui \u00e9crit diff\u00e9rents \u00e9l\u00e9ments une ligne \u00e0 la fois et s\u00e9pare ces \u00e9l\u00e9ments par des espaces. En fait, <code>print<\/code> accepte quelques <em>arguments mot-clef<\/em> qui vous permettent de modifier son comportements pour satisfaire vos besoins.<\/p>\n<ul>\n<li>Pour changer le s\u00e9parateur espace en une autre cha\u00eene <code>S<\/code>, ins\u00e9rez l'argument <code>sep = \u00abS\u00bb<\/code><\/li>\n<li>Pour remplacer le caract\u00e8re de \"fin de ligne\" avec une autre cha\u00eene <code>S<\/code>, ins\u00e9rez l'argument <code><\/code><code>end = \u00abS\u00bb<\/code><\/li>\n<\/ul>\n<p>Cette nouvelle fonctionnalit\u00e9, <em>arguments mot-clef<\/em>, est plus facile \u00e0 illustrer \u00e0 l'aide de plusieurs exemples.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform0\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox0'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Exemples de <code>sep<\/code> et <code>end<\/code>. Remarquez l'effet sur chaque appel \u00e0 <code>print<\/code>.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\nprint('D', 'A', 'S', 'H', sep='-')\nprint('Le prix est $', 12*5, sep='')\nprint('Ces deux lignes', end='')\nprint(' appara\u00eetront ensemble.')\nprint('Super', end='!')<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit0' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(0)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(0,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse0\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"0\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"64b6a257c5e7f2dad6e9b2c47d04baac\"\/>\n<div id='pbresults0' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit0\").value = \"Run program\";document.getElementById(\"inputInUse0\").value = \"N\";<\/script>\n<\/p>\n<p>Ces arguments mot-clef doivent \u00eatre pass\u00e9s \u00e0 la fin de la liste d'arguments sinon une <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=print%28end%3D%27%27%2C%205%29\" target=\"_blank\">erreur<\/a> sera g\u00e9n\u00e9r\u00e9e. Si vous utilisez les deux arguments mot-clef, ils peuvent \u00eatre donn\u00e9s dans n'importe quel ordre.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform1\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox1'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>A\u00e9robic Alphab\u00e9tique<\/span><\/div>En utilisant ce que nous venons d'introduire, d\u00e9verminez le programme suivant afin qu'il affiche l'alphabet en majuscule <em>sur une seule ligne<\/em>.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=20   class='pyboxCode RW'>\nfor c in range(0, 26):\n print(chr(ord('A')+c))\n<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<input type='hidden' id='defaultCode1' value='for c in range(0, 26):\\n print(chr(ord(\\u0027A\\u0027)+c))\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit1' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(1)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(1,'N')\" ><\/td>\n<td><input type='button' name='history' value=\"History\" onclick=\"historyClick(1,'12.alphabet')\" ><\/td>\n<\/tr><\/table><select id='pbSelect1' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='default' data-pbonclick=\"pbSetText(1,descape($('#defaultCode1').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(1);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse1\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"1\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"8437536a946fecda719f35ccb826fdb3\"\/>\n<div id='pbresults1' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(1);});document.getElementById(\"submit1\").value = \"Run program\";document.getElementById(\"inputInUse1\").value = \"N\";<\/script>\n<\/p>\n<h2>Noms de fonctions\/variables valides<\/h2>\n<ul>\n<li>Les noms peuvent contenir des lettres, nombres et le caract\u00e8re soulign\u00e9 (<code>_<\/code>).<\/li>\n<li>Le premier caract\u00e8re de chaque nom doit \u00eatre une lettre.<\/li>\n<li>Python fait la distinction entre majuscules et minuscules.<\/li>\n<\/ul>\n<p>Donc <code>mon_3e_int<\/code> est un nom de variable valide mais <code>3e_int<\/code> ne l'est pas.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox2'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Un exemple pour distinguer entre majuscules et minuscules.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nmarioLemieux = \"Le Magnifique\"\nmarioLeMieux = \"Un Plombier\"\nprint(marioLemieux) # reste magnifique<\/textarea><\/div>\n<div id='pbhistory2' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit2' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(2)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(2,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse2\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"2\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"9f3d377233e0bc420bdc8e6dbcab80ea\"\/>\n<div id='pbresults2' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit2\").value = \"Run program\";document.getElementById(\"inputInUse2\").value = \"N\";<\/script>\n<\/p>\n<h2>D\u00e9crementer des boucles <code>for<\/code> &amp; et autres incr\u00e9ments<\/h2>\n<p>Jusqu'ici, vous avez vu\u00a0que les boucles <code>for<\/code> peuvent parcourir une liste de nombres en ordre croissant:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform3\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox3'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Une boucle <code>for<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode3' id='usercode3'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nfor i in range(0, 5):\n print(i)<\/textarea><\/div>\n<div id='pbhistory3' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit3' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(3)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(3,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse3\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"3\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"48e0123a12ad2574217df6c6fcebe640\"\/>\n<div id='pbresults3' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit3\").value = \"Run program\";document.getElementById(\"inputInUse3\").value = \"N\";<\/script>\n<\/p>\n<p>Souvent il est n\u00e9cessaire d'\u00e9crire une boucle <code>for<\/code> qui parcourt les nombres dans l'ordre <em>d\u00e9croissant<\/em> (du plus grand au plus petit). Pour ce faire, nous appelons <code>range<\/code> avec un troisi\u00e8me argument appel\u00e9 <em>incr\u00e9ment <\/em>ou<em> step\u00a0<\/em>(le <em>pas<\/em> en fran\u00e7ais):<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform4\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox4'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Pas n\u00e9gatif pour <code>range<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode4' id='usercode4'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nfor i in range(5, 1, -1):\n print(i)<\/textarea><\/div>\n<div id='pbhistory4' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit4' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(4)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(4,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse4\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"4\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"61f7b1cfa7128b1075811c3bc806df3a\"\/>\n<div id='pbresults4' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit4\").value = \"Run program\";document.getElementById(\"inputInUse4\").value = \"N\";<\/script>\n<\/p>\n<p>Si vous r\u00e9fl\u00e9chissez pendant un instant, vous remarquerez que <code>range(0, 5)<\/code> est la m\u00eame chose que <code>range(0, 5, 1)<\/code>: <em>l'incr\u00e9ment par d\u00e9fault<\/em> est 1. Dans tous les cas, faites attention que <code>range(d\u00e9but, fin, pas)<\/code> s'ex\u00e9cute jusqu'\u00e0 <em>juste avant<\/em> d'avoir atteint la valeur <code>fin<\/code>. Pour plus d'information voyez le manuel Python.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform5\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox5'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Coding Exercise: <\/span><span class='title'>Lucky Sevens<\/span><\/div>Ecrivez un programme utilisant une boucle <code>for<\/code> qui se r\u00e9p\u00e8te avec un pas de 10, pour afficher tous les nombres \u00e0 deux chiffres qui se terminent par 7, en ordre croissant.<div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode5' id='usercode5'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory5' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit5' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(5)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(5,'N')\" ><\/td>\n<td><input type='button' name='history' value=\"History\" onclick=\"historyClick(5,'12.sevens')\" ><\/td>\n<\/tr><\/table><select id='pbSelect5' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='help' data-pbonclick=\"helpClick(5);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse5\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"5\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"3ddfe6a0b90f746bba2e0701b5b798d4\"\/>\n<div id='pbresults5' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(5);});document.getElementById(\"submit5\").value = \"Run program\";document.getElementById(\"inputInUse5\").value = \"N\";<\/script>\n<\/p>\n<p>De m\u00eame, vous pouvez utiliser <code>string[x:y:-1]<\/code> pour obtenir l'inverse d'une cha\u00eene, ou <code>string[x:y:2]<\/code> pour obtenir une sous-cha\u00eene avec les caract\u00e8\u00e8res <code>x, x+2, x+4, ...<\/code><\/p>\n<p>Avec une boucle\u00a0<code>for<\/code>, vous pouvez aussi\u00a0inverser l'ordre avec\u00a0<code>reversed(range(x, y))<\/code>, qui traverse de\u00a0<code>y-1<\/code>\u00a0\u00e0\u00a0<code>x<\/code>\u00a0dans l'ordre d\u00e9croissant.<\/p>\n<h2>Ecrire du code plus petit<\/h2>\n<p>Python permet d'utiliser diff\u00e9rentes mani\u00e8res pour \u00e9crire du code plus court; nous en introduisons quelques unes ici.<\/p>\n<p><table class='pywarn'><tr><td class='pywarnleft'><img src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/warning.png'\/><\/td><td class='pywarnright'><span> Nous n'utiliserons pas toujours ces possibilit\u00e9s car elles rendent parfois le code plus difficile \u00e0 lire. <\/span><\/td><\/table><\/p>\n<h3>Op\u00e9rateurs d'attribution<\/h3>\n<p>Python permet d'\u00e9crire \"<code>x += 1<\/code>\" qui signifie \"ajouter 1 \u00e0 <code>x<\/code>.\" C'est donc \u00e9quivalent \u00e0 \"<code>x = x + 1<\/code>\" comme nous le montrons ci-dessous:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform6\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox6'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Exemples de <code>+=<\/code>, <code>-=<\/code>, <code>*=<\/code>, <code>\/=<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 240px;'><textarea wrap='off' name='usercode6' id='usercode6'  cols=10 rows=9 readonly='readonly'  style = 'height : 240px;'  class='pyboxCode RO'>\nx = 8\nx += 2\nprint(x)\nx -= 1\nprint(x)\nx \/= 3\nprint(x)\nx *= 10\nprint(x)<\/textarea><\/div>\n<div id='pbhistory6' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit6' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(6)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(6,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse6\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"6\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"657dbfafceda6ebf4bb45614201a5a12\"\/>\n<div id='pbresults6' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit6\").value = \"Run program\";document.getElementById(\"inputInUse6\").value = \"N\";<\/script>\n<\/p>\n<p>De la m\u00eame mani\u00e8re, il y a des op\u00e9rateurs pour la division enti\u00e8re (<code>\/\/=<\/code>), le modulo (<code>%=<\/code>), et la puissance (<code>**=<\/code>).<\/p>\n<h3>Blocks \"inline\"<\/h3>\n<p>Nous avons vu plusieurs instructions qui sont suivies par des \"blocks\" de code indent\u00e9s: <code>for<\/code>, <code>if<\/code>, <code>else<\/code>, <code>elif<\/code>, <code>while<\/code>, and <code>def<\/code>, par exemple:<\/p>\n<pre>if x==y:\r\n  \u00abblock\u00bb #indent\u00e9, multiligne<\/pre>Dans ce cas particulier o\u00f9 le <code>\u00abblock\u00bb<\/code> n'est compos\u00e9 que d'une ligne, Python permet d'utiliser la syntaxe:<\/p>\n<pre>if x==y: \u00abblock\u00bb #ligne seule<\/pre>Voici un exemple:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform7\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox7'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Block d'instructions \"inline\"<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode7' id='usercode7'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\ndef square(x): return x*x\nfor i in range(0, 6): print(square(i))<\/textarea><\/div>\n<div id='pbhistory7' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit7' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(7)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(7,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse7\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"7\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"b3ade191aee4175bf56777c569c34c2f\"\/>\n<div id='pbresults7' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit7\").value = \"Run program\";document.getElementById(\"inputInUse7\").value = \"N\";<\/script>\n<\/p>\n<p>Ceci montre une limite: un block compos\u00e9 avec un double point (<code>if<\/code>, <code>for<\/code>, etc) ne peut pas \u00eatre utilis\u00e9 comme block \"inline\". Par exemple, <code>if 2&gt;1: if 4&gt;3: print()<\/code> donne une erreur de <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=if%202%26gt%3B1%3A%20if%204%26gt%3B3%3A%20print%28%29\" target=\"_blank\">syntaxe<\/a>.<\/p>\n<h3>Affectation multiple<\/h3>\n<p>Python permet de combiner deux instructions d'attributions en une seule:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform8\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox8'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Attributions multiples<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode8' id='usercode8'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nx, y = 3, 4\nprint('x =', x, 'and y =', y)<\/textarea><\/div>\n<div id='pbhistory8' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit8' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(8)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(8,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse8\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"8\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"4c8e080f4888bb5c86d52fe2d2145597\"\/>\n<div id='pbresults8' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit8\").value = \"Run program\";document.getElementById(\"inputInUse8\").value = \"N\";<\/script>\n<\/p>\n<p>Remarquez que ceci nous permet de r\u00e9soudre notre exercice <a href=\"http:\/\/cscircles.cemc.uwaterloo.ca\/1-fr\/#pybox8\">Programme d'\u00e9change<\/a> en une seule ligne!<\/p>\n<h3>Comparaisons \u00e0 la cha\u00eene<\/h3>\n<p>Python permet aussi de combiner plusieurs comparaisons en une seule:<br \/>\n<form class=\"pbform\" action=\"#\" id=\"pbform9\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox9'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Comparaisons \u00e0 la cha\u00eene<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode9' id='usercode9'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nage = int(input())\nif 12 &lt; age &lt; 20: # \u00e9quivalent \u00e0 (12 &lt; age) et (age &lt; 20) \n print('Vous \u00eates un ado!')<\/textarea><\/div>\n<div id='pbhistory9' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit9' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(9)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(9,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse9\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"9\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"f796a83a7ed2a1baf6ec64a34e8ca7c1\"\/>\n<div id='pbresults9' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit9\").value = \"Run program\";document.getElementById(\"inputInUse9\").value = \"N\";<\/script>\nN'importe quelle cha\u00eene <code>v1 c1 v2 c2 v3 ...<\/code> o\u00f9 <code>v<\/code> sont des valeurs et <code>c<\/code> des comparaisons, est trait\u00e9e de la m\u00eame mani\u00e8re que <code>(v1 c1 v2) and (v2 c2 v3) and...<\/code><\/p>\n<h3>Valeurs par d\u00e9faut pour\u00a0<code>[:]<\/code>\u00a0et\u00a0<code>range()<\/code><\/h3>\n<p>Vous pouvez laisser une ou deux valeurs de d\u00e9but \/ fin quand utilisant l'op\u00e9rateur sous-cha\u00eene <code>[:]<\/code><code><\/code>. (Ceci est \u00e9galement vrai pour les listes, comme nous le verrons dans la prochaine le\u00e7on.) La valeur par d\u00e9faut du premier indice est <code>0<\/code> (le d\u00e9but de la cha\u00eene) et la valeur par d\u00e9faut du dernier indice est la longueur de la cha\u00eene. De m\u00eame, <code>range(n)<\/code> signifie <code>range(0, n)<\/code>.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform10\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox10'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Les valeurs par d\u00e9faut pour\u00a0<code>[:]<\/code>\u00a0et\u00a0<code>range()<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode10' id='usercode10'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nS = \"Toronto\"\nprint(S[3:])                  # sous-cha\u00eene droite, \"onto\"\nprint(S[:2])                  # sous-cha\u00eene gauche, \"To\"\nfor i in range(5): print(i*i) # imprime 0, 1, .. 16<\/textarea><\/div>\n<div id='pbhistory10' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit10' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(10)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(10,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse10\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"10\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"566ba45f3b40b27c9f2413a95d672770\"\/>\n<div id='pbresults10' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit10\").value = \"Run program\";document.getElementById(\"inputInUse10\").value = \"N\";<\/script>\n<\/p>\n<h1><code>None<\/code><\/h1>\n<p>Certaines fonctions ont comme effet principal de retourner une value, par exemple <code>abs(x)<\/code>. Mais d'autres fonctions qui sont plus valoris\u00e9es pour leur effet retournent la valeur par 'defaut' <code>None<\/code>:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform11\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox11'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>La valeur de <code>print<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode11' id='usercode11'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\nresult = print('Tout fonctionne ici')\nprint(result)\ndef forgotToReturn(x):\n x*x\nprint(forgotToReturn(5))<\/textarea><\/div>\n<div id='pbhistory11' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit11' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(11)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(11,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse11\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"11\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"2137c6009fbf621169dd8f7e2b0fd8e1\"\/>\n<div id='pbresults11' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit11\").value = \"Run program\";document.getElementById(\"inputInUse11\").value = \"N\";<\/script>\n<\/p>\n<p>Ici <code>None<\/code> est une valeur sp\u00e9ciale utilis\u00e9e par Python comme conteneur \u00e0 tout faire. Si vous en demandez <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=print%28type%28None%29%29\" target=\"_blank\"><code>type(None)<\/code><\/a>, vous verrez que <code>None<\/code> a m\u00eame son propre type, <code>NoneType<\/code>. Pendant que l'on y est, voyons quel est le type du type variable:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform12\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox12'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Le type du type<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode12' id='usercode12'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nx = 23432\nprint(x, type(x), type(type(x)), type(type(type(x))))<\/textarea><\/div>\n<div id='pbhistory12' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit12' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(12)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(12,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse12\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"12\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"aea32d11990220cd2435630a82e7da88\"\/>\n<div id='pbresults12' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit12\").value = \"Run program\";document.getElementById(\"inputInUse12\").value = \"N\";<\/script>\n<\/p>\n<p>Dans l'exercice suivant, on vous demande de tracer les r\u00e9sultats d'une longue commande utilisant <code>type<\/code> et <code>print<\/code>.<\/p>\n<div class='pybox modeNeutral multiscramble' id='pybox13'>\n<img title='You have not yet completed this problem.' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/files\/icon.png' class='pycheck'\/><div class=\"heading\"><span class='type'>Scramble Exercise: <\/span><span class='title'>La grande ligne<\/span><\/div>La sortie de <code>print(type(print(type(type(print(print()))))))<\/code> est compos\u00e9e de 4 lignes. Mettez-les dans l'ordre correct.<ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble13\">\n<li id=\"pyli13_2\" class=\"pyscramble\" >&lt;class 'type'&gt;<\/li>\n<li id=\"pyli13_0\" class=\"pyscramble\" ><i>&laquo;ligne blanche&raquo;<\/i><\/li>\n<li id=\"pyli13_1\" class=\"pyscramble\" >None<\/li>\n<li id=\"pyli13_3\" class=\"pyscramble\" >&lt;class 'NoneType'&gt;<\/li>\n<\/ul>\n<div class=\"pyboxbuttons\"><input type='button' value='Check answer' onclick='pbMultiscrambleCheck(13)'\/>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"12.ordering\"\/>\n<\/div><div id=\"pbresults13\" class=\"pbresults\"><\/div><div class=\"epilogue\">Correct!<\/div><\/div>\n<p>Vous \u00eatre pr\u00eat \u00e0 passer \u00e0 la le\u00e7on suivante!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cette le\u00e7on contient des \u00e9l\u00e9ments de Python que nous avons laiss\u00e9s de c\u00f4t\u00e9 dans les le\u00e7ons pr\u00e9c\u00e9dentes. Options print Jusqu'\u00e0 maintenant, la seule mani\u00e8re que nous avons vu d'\u00e9crire \u00e0 l'\u00e9cran est d'utiliser la fonction print(), qui \u00e9crit diff\u00e9rents \u00e9l\u00e9ments &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/12-fr\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-4679","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4679","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/comments?post=4679"}],"version-history":[{"count":24,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4679\/revisions"}],"predecessor-version":[{"id":7473,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4679\/revisions\/7473"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=4679"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}