{"id":4654,"date":"2012-06-21T17:00:20","date_gmt":"2012-06-21T21:00:20","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=4654"},"modified":"2013-08-07T19:46:38","modified_gmt":"2013-08-07T23:46:38","slug":"7a-fr","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/7a-fr\/","title":{"rendered":"7A: Cha\u00eenes"},"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><em>La le\u00e7on 7 est compos\u00e9e de trois parties, A, B, C qui peuvent \u00eatre compl\u00e9t\u00e9es dans n'importe quel ordre.<\/em><\/p>\n<p>Jusqu'\u00e0 pr\u00e9sent, nous avons utilis\u00e9 les cha\u00eenes (\u00e9l\u00e9ments de type <code>str<\/code>) de mani\u00e8re simple. Dans cette le\u00e7on, nous allons vous montrer comment manipuler les cha\u00eenes: comment les d\u00e9couper, les combiner et comment voir les caract\u00e8res <em>individuels<\/em> qui les composent.<\/p>\n<h2>Qu'est-ce qu'une cha\u00eene?<\/h2>\n<p>Toutes les donn\u00e9es stock\u00e9es sur un ordinateur sont au final stock\u00e9es comme une s\u00e9quence de 0 et de 1. Cela inclut le texte, les livres digitaux, les images, les sons, les vid\u00e9os et les \"fichiers ex\u00e9cutables\" comme les jeux et les applications. Les cha\u00eenes, un exemple de donn\u00e9es de texte, sont stock\u00e9es de la mani\u00e8re suivante:<\/p>\n<ul>\n<li>une cha\u00eene est une s\u00e9quence de cartact\u00e8res (e.g. la cha\u00eene \"Hello, World!\" contient 13 caract\u00e8res incluant les lettres, comme par exemple \"H\", \"e\" et de la ponctuation, comme par exemple \",\", \"!\")<\/li>\n<li>chaque caract\u00e8re de la cha\u00eene est repr\u00e9sent\u00e9 par un nombre (e.g., \"H\" est repr\u00e9sent\u00e9 par le nombre 40)<\/li>\n<\/ul>\n<p>(Les nombres sont stock\u00e9s en interne au format 0-1 <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Syst\u00e8me_binaire\">binaire<\/a>.)<\/p>\n<h2>Manipuler les cha\u00eenes comme s\u00e9quences de caract\u00e8res: <code>S[]<\/code><\/h2>\n<p>Pour manipuler une cha\u00eene, on doit acc\u00e9der \u00e0 chacun des caract\u00e8res qui la compose. En Python, cela se fait de la mani\u00e8re suivante: pour une cha\u00eene\u00a0<code>S<\/code> et un entier\u00a0<code>index<\/code>, la notation<\/p>\n<pre>S[index]<\/pre>retourne le caract\u00e8re\u00a0<code>S<\/code>\u00a0\u00e0 la position\u00a0<code>index<\/code>. <strong>Par convention<\/strong>, la cha\u00eene commence \u00e0 l'index 0: donc\u00a0<code>S[0]<\/code>\u00a0est le premier caract\u00e8re,\u00a0<code>S[1]<\/code>\u00a0est le second caract\u00e8re, etc. Dans \"Hello, World!\" la liste des caract\u00e8res est:<\/p>\n<pre>Index: 0  1  2  3  4  5  6  7  8  9 10 11 12\r\nChar.: H  e  l  l  o  ,     W  o  r  l  d  !<\/pre>Notez que le caract\u00e8re \u00e0 l'index 6 est un espace.<\/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> Dans beaucoup d'autres langages de programmation, il y a un type de donn\u00e9es s\u00e9par\u00e9 pour les caract\u00e8res. En Python, les caract\u00e8res sont repr\u00e9sent\u00e9s par des cha\u00eenes de longueur , donc <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=ch%20%3D%20%22Hi%22%5B0%5D%0Aprint%28ch%29%0Aprint%28type%28ch%29%29%0Aprint%28len%28ch%29%29\" target=\"_blank\"> leur type est\u00a0<code>str<\/code><\/a>. <\/span><\/td><\/table><\/p>\n<h2>Trouver le nombre de caract\u00e8res dans une cha\u00eene: <code>len<\/code><\/h2>\n<p>Pour obtenir le nombre de caract\u00e8res d'une cha\u00eene, on utilise en Python la fonction\u00a0<code>len<\/code>. Par exemple, <code>len(\"Hello, World!\")<\/code>\u00a0est 13.<\/p>\n<div class='pybox modeNeutral' id='pybox0'>\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'>Multiple Choice Exercise: <\/span><span class='title'>Dernier Caract\u00e8re<\/span><\/div><div>Quelle expression peut \u00eatre utilis\u00e9es pour d\u00e9terminer le <strong>dernier<\/strong> caract\u00e8re d'une cha\u00eene\u00a0<code>S<\/code>?<\/div><label>Your choice: <\/label><select id=\"pyselect0\"><option value=\"d\" selected>Select one<\/option><option value=\"r\">S[len(S)-1]<\/option><option value=\"w\">S[len(S)+1]<\/option><option value=\"w\">S[len(S)]<\/option><\/select><div class='pyboxbuttons'><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"7a.last\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick='pbMultiCheck(0)'\/><\/div><div class=\"pbresults\" id=\"pyMultiResults0\"><\/div><div class=\"epilogue\">Correct! Bien que <code>len(S)<\/code> vous donne le nombre total de caract\u00e8res de la cha\u00eene, car il commence avec l'indice 0, le dernier caract\u00e8re est \u00e0 l'indice <code>len(S)-1<\/code>.<\/div><\/div>\n<p>Voici un exemple d'utilisation de\u00a0<code>len<\/code> et\u00a0<code>[]<\/code>, les deux outils que nous venons d'introduire.<br \/>\n<form class=\"pbform\" action=\"#\" id=\"pbform1\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox1'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Longueur de cha\u00eene et caract\u00e8res<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nmagic = 'Abracadabra!'\nprint(magic)\nprint(len(magic))\nprint(magic[0], magic[1], magic[len(magic)-1])<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\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<\/tr><\/table><\/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=\"8a2ab35d8aebe9e148eff1165f603807\"\/>\n<div id='pbresults1' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit1\").value = \"Run program\";document.getElementById(\"inputInUse1\").value = \"N\";<\/script>\n<\/p>\n<h2>D\u00e9couper des cha\u00eenes: <code>S[:]<\/code><\/h2>\n<p>D\u00e9couper des partie de cha\u00eenes donne des <strong>sous-cha\u00eenes<\/strong>. Par exemple, les cha\u00eenes \"vide\" et \"ment\" sont des sous-cha\u00eenes de \"\u00e9videmment\". Pour extraire une sous-cha\u00eene en Python, on utilise la syntaxe<\/p>\n<pre>S[premierIndex:dernierIndex]<\/pre>pour obtenir la sous-cha\u00eene commen\u00e7ant \u00e0 l'index <strong>premierIndex<\/strong> et se terminant \u00e0 <strong>dernierIndex-1<\/strong>. Essayez de deviner la sortie de ce code avant de l'ex\u00e9cuter.<br \/>\n<form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox2'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Sous-cha\u00eenes<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nmaChaine = 'Imposant'\nprint(maChaine[1:6])\nprint('magic'[3:3])\nprint('chump'[0:4])<\/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=\"42d727b36769ecf02f475c0534938613\"\/>\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<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> Notez qu'en prenant les sous-cha\u00eenes, premierIndex <strong>est<\/strong> inclu alors que dernierIndex ne l'est <strong>pas<\/strong>. C'est une source d'erreur courante. Cependant, cela a des effets int\u00e9ressants. Par exemple, la longueur de la sous-cha\u00eene\u00a0<code>S[i:j]<\/code>\u00a0est toujours\u00a0<code>j-i<\/code>. <\/span><\/td><\/table><\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform3\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox3'>\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'>Rasage de cha\u00eene<\/span><\/div>Ecrivez un programme qui lit une cha\u00eene en utilisant\u00a0<code>input()<\/code>\u00a0et qui \u00e9crit la m\u00eame cha\u00eene mais en ayant au pr\u00e9alable effac\u00e9 le premier et le dernier caract\u00e8re. (Vous assumerez que la cha\u00eene a une longueur d'au moins 2.) Par exemple, pour l'entr\u00e9e\u00a0<code>Fairy<\/code>, un programme correct \u00e9crira\u00a0<code>air<\/code>.<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='usercode3' id='usercode3'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory3' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput3\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit3' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch3\" value=\"Input Switch\" onclick=\"pbInputSwitch(3,'N')\" ><\/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><select id='pbSelect3' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(3,'7a.firstlast')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(3);\" >Help<\/option>\n<\/select><\/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=\"eac16ba6f0479bff9ca671d47a25c7c7\"\/>\n<div id='pbresults3' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(3);});pbInputSwitch(3,\"N\");<\/script>\n<\/p>\n<h2>Coller des cha\u00eenes: <code>+<\/code><\/h2>\n<p>Nous savons tous que 1+2=3. Avec les cha\u00eenes, nous obtenons le r\u00e9sultat suivant \u00e0 la place:<br \/>\n<form class=\"pbform\" action=\"#\" id=\"pbform4\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox4'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Addition de Cha\u00eenes<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode4' id='usercode4'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nresultat = 'un' + 'deux'\nprint(resultat)\nprint(len(resultat))<\/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=\"4a4912a35863e96d91499a3dd7353917\"\/>\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>Comme vous pouvez le voir, l'effet de\u00a0<code>S+T<\/code>\u00a0est de cr\u00e9er une nouvelle cha\u00eene qui commence avec\u00a0<code>S<\/code>\u00a0et a <code>T<\/code>\u00a0imm\u00e9diatement apr\u00e8s. Ce collage de cha\u00eene s'appelle \u00e9galement <strong>concat\u00e9nation<\/strong>.<\/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'>Pile ou Face<\/span><\/div>Ecrivez un programme qui lit une cha\u00eene en utilisant\u00a0<code>input()<\/code>\u00a0et qui \u00e9crit comme sortie la m\u00eame cha\u00eene mais avec le premier et le dernier caract\u00e8res \u00e9chang\u00e9s.\u00a0(Vous assumerez que la cha\u00eene a comme longueur au moins 2.) Par exemple, pour l'entr\u00e9e\u00a0<code>Fairy<\/code>, un programme correct \u00e9crira\u00a0<code>yairF<\/code>. Indice: utilisez votre solution de l'exercice pr\u00e9c\u00e9dent comme point de d\u00e9part.<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 name=\"pyinput\" id=\"pyinput5\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit5' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch5\" value=\"Input Switch\" onclick=\"pbInputSwitch(5,'N')\" ><\/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<\/tr><\/table><select id='pbSelect5' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(5,'7a.swap')\" >History<\/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=\"af9ac35a3c24eb7455c536d7f8d094e1\"\/>\n<div id='pbresults5' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(5);});pbInputSwitch(5,\"N\");<\/script>\n<\/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> Si vous voulez concat\u00e9ner deux nombres, il faut d'abord les convertir en <code>str<\/code>. Sinon vous obtiendrez une de deux erreurs possibles suivant l'ordre dans lequel vous essayez. Ex\u00e9cutez ce programme pour voir les erreurs qui peuvent se produire.<form class=\"pbform\" action=\"#\" id=\"pbform6\" method=\"POST\">\n<div class='pybox modeNeutral scramble facultative' id='pybox6'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>R\u00e9arrangez les deux lignes pour voir les deux erreurs de concat\u00e9nations.<ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble6\">\n <li class=\"pyscramble\">print(&quot;high &quot; + 5)<\/li>\n <li class=\"pyscramble\">print(110 + &quot; pour cent&quot;)<\/li>\n<\/ul>\n<input type='hidden' id='usercode6' name='usercode6'\/>\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<\/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=\"83fe1fc1b9034ba8d9656a0aed974601\"\/>\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>\nVoici un exemple correct: la fonction\u00a0<code>str()<\/code>\u00a0convertie le nombre en cha\u00eene avant la concat\u00e9nation.<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>Convertir un nombre en cha\u00eene avec\u00a0<code>str()<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode7' id='usercode7'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nprint(\"high \" + str(5))<\/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=\"daa4e48441b54e974cbdf799ca6e292e\"\/>\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 <\/span><\/td><\/table><\/p>\n<p>Comme nous l'avons mentionn\u00e9 dans la le\u00e7on 4, vous pouvez multiplier cha\u00eenes et entiers: <code>S * n<\/code>\u00a0est un raccourci pour\u00a0<code>S + S + ... + S<\/code>.<\/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>Multiplication d'une cha\u00eene<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'>\nprint(\"hots\" * 2)\nprint(\"mi\"+(\"s\"*2+\"i\")*2+\"ppi\")<\/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=\"925f6d8d9c2560c5cb1806844f936b21\"\/>\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<h2>Codes de caract\u00e8res: <code>ord<\/code>, <code>chr<\/code><a name=\"ord\"><\/a><\/h2>\n<p>Comme nous l'avons mentionn\u00e9 dans l'introduction de cette le\u00e7on, l'ordinateur repr\u00e9sente chaque caract\u00e8re comme un nombre. Quel nombre correspond \u00e0 quel caract\u00e8re? En g\u00e9n\u00e9ral, cela d\u00e9pend de <em>l'encodage<\/em> que votre ordinateur utilise, mais presque tous les ordinateurs ont un ensemble standard de caract\u00e8res pour les nombres compris entre\u00a032 and 255. Voici une liste des caract\u00e8res avec les nombres entre 32 et 127:<\/p>\n<pre>ord: 32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47\r\nchr:      !   \"   #   $   %   &amp;   '   (   )   *   +   ,   -   .   \/\r\nord: 48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63\r\nchr:  0   1   2   3   4   5   6   7   8   9   :   ;   &lt;   =   &gt;   ?\r\nord: 64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79\r\nchr:  @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O\r\nord: 80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95\r\nchr:  P   Q   R   S   T   U   V   W   X   Y   Z   [   \\   ]   ^   _\r\nord: 96  97  98  99  100 101 102 103 104 105 106 107 108 109 110 111\r\nchr:  `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o\r\nord: 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127\r\nchr:  p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~<\/pre>Plus tard, dans la le\u00e7on 8, nous \u00e9crirons un programme qui g\u00e9n\u00e8re cette table.<br \/>\nIl n'est pas utile de m\u00e9moriser cette table mais voici quelques points dont il faut se souvenir:<\/p>\n<ul>\n<li>les lettres minuscules a, b, c, ..., z ont des codes cons\u00e9cutifs<\/li>\n<li>les lettres majuscules A, B, C, ..., Z ont des codes cons\u00e9cutifs<\/li>\n<li>les chiffres 0, 1, 2, ..., 9 ont des codes cons\u00e9cutifs<\/li>\n<\/ul>\n<p>Le caract\u00e8re 32 est un espace alors que le caract\u00e8re 127 est un des caract\u00e8res sp\u00e9ciaux de \"contr\u00f4le\". Des caract\u00e8res de contr\u00f4le utiles sont par exemple 9 pour la tabulation, 10 et 13 pour les\u00a0<a href=\"http:\/\/fr.wikipedia.org\/wiki\/Fin_de_ligne\">fins de lignes<\/a>.<\/p>\n<p>En Python, vous pouvez convertir un caract\u00e8re en son code num\u00e9rique correspondant en utilisant la fonction <code>ord<\/code>. La fonction\u00a0<code>chr<\/code>\u00a0fait le contraire: elle prend un nombre comme param\u00e8tre et retourne le caract\u00e8re correspondant \u00e0 ce code.<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>Exemples pour\u00a0<code>ord<\/code>\u00a0et\u00a0<code>chr<\/code> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode9' id='usercode9'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nprint(ord('a'), ord('b'), ord('A'), ord('B'), ord(' '))\nprint(chr(35), chr(43), chr(100))<\/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=\"a351e1806345a8af896f5e992e2af359\"\/>\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>\n<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform10\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox10'>\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'>Prochaine lettre<\/span><\/div>Ecrivez un programme qui prend un caract\u00e8re comme entr\u00e9e (une cha\u00eene de longueur 1), que vous assumerez \u00eatre une majuscule; la sortie devra \u00eatre la prochaine lettre dans l'alphabet. Si l'entr\u00e9e est 'Z', votre sortie sera 'A'. (Vous devrez utilisez l'instruction <code>if<\/code>.\u00a0Pour un autre indice <a class=\"hintlink\"  id=\"hintlink11\">cliquez ici<\/a>.)<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='usercode10' id='usercode10'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory10' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput10\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit10' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch10\" value=\"Input Switch\" onclick=\"pbInputSwitch(10,'N')\" ><\/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><select id='pbSelect10' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(10,'7a.lowercase')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(10);\" >Help<\/option>\n<\/select><\/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=\"a8539f4ddc8bc7395b599866799771ad\"\/>\n<div id='pbresults10' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(10);});pbInputSwitch(10,\"N\");<\/script>\n<\/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> Certains syst\u00e8mes supporte les caract\u00e8res imprimables entre 32 et 127; d'autres ont des caract\u00e8res imprimables jusqu'\u00e0 255 ou 65535; en Unicode, il y a des centaines de milliers de caract\u00e8res. Vous pouvez lire plus sur leur historique\u00a0<a href=\"http:\/\/fr.wikipedia.org\/wiki\/American_Standard_Code_for_Information_Interchange\">ici<\/a>\u00a0ou\u00a0<a href=\"http:\/\/www.joelonsoftware.com\/articles\/Unicode.html\">ici<\/a>. <\/span><\/td><\/table><\/p>\n<p>Voici deux exercices pour finir cette le\u00e7on.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform12\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox12'>\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'>Latin Cochon<\/span><\/div><strong><a href=\"http:\/\/fr.wikipedia.org\/wiki\/Pig_latin\">Latin Cochon<\/a><\/strong> est un langage qui ne veut rien dire.<strong>\u00a0Pour transformer un mot d'anglais en latin cochon, vous d\u00e9placez la premi\u00e8re lettre \u00e0 la fin et ajoutez \"ay\" apr\u00e8s cela.<\/strong>\u00a0Par exemple, <em>singe<\/em> devient\u00a0<em>ingesay<\/em> en latin cochon et\u00a0<em>mot<\/em>\u00a0devient\u00a0<em>otmay<\/em>. Ecrivez un programme qui prend un mot en entr\u00e9e et le traduit en latin cochon. (En r\u00e9alit\u00e9, Latin Cochon utilise des r\u00e8gles plus complexes que cela mais nous les ignorons pour cet exercice.)<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='usercode12' id='usercode12'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory12' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput12\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit12' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch12\" value=\"Input Switch\" onclick=\"pbInputSwitch(12,'N')\" ><\/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><select id='pbSelect12' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(12,'7a.piglatin')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(12);\" >Help<\/option>\n<\/select><\/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=\"52e0b766221744e7a6f054dfb1592a0f\"\/>\n<div id='pbresults12' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(12);});pbInputSwitch(12,\"N\");<\/script>\n<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform13\" method=\"POST\">\n<div class='pybox modeNeutral ' 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'>Coding Exercise: <\/span><span class='title'>Le Nouveau Jeu<\/span><\/div>Le <strong>Nouveau Jeu<\/strong> vous permet de cr\u00e9er une chanson \u00e0 partir du pr\u00e9nom d'une personne.\u00a0Ecoutez la chanson pour vous donnez une id\u00e9e de comment cela fonctionne: <div style='text-align: center;'>\n<iframe width='560' height='315' src='https:\/\/www.youtube.com\/embed\/NeF7jqf0GU4?rel=0' frameborder='0' allowfullscreen>\n<\/iframe>\n<\/div> Votre programme prendra le nom d'une personne comme entr\u00e9e, par exemple \"pearl\" et \u00e9crire la chanson suivante<\/p>\n<pre>pearl, pearl, bo-bearl\r\nbanana-fana fo-fearl\r\nfee-fi-mo-mearl\r\npearl!<\/pre>Notez que le nom entier appara\u00eet trois fois; de plus, le nom appara\u00eet trois autre fois avec la premi\u00e8re lettre remplac\u00e9e par b, f, ou m. (En r\u00e9alit\u00e9, la chanson utilise des r\u00e8gles plus complexes que cela mais nous les ignorons pour cet exercice.)<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='usercode13' id='usercode13'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory13' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput13\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit13' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch13\" value=\"Input Switch\" onclick=\"pbInputSwitch(13,'N')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(13)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(13,'N')\" ><\/td>\n<\/tr><\/table><select id='pbSelect13' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(13,'7a.namegame')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(13);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse13\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"13\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"9ef3460874f197f789fd3d6a36934750\"\/>\n<div id='pbresults13' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(13);});pbInputSwitch(13,\"N\");<\/script>\n<\/p>\n<p><em>Continuez \u00e0 la le\u00e7on suivante!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>La le\u00e7on 7 est compos\u00e9e de trois parties, A, B, C qui peuvent \u00eatre compl\u00e9t\u00e9es dans n'importe quel ordre. Jusqu'\u00e0 pr\u00e9sent, nous avons utilis\u00e9 les cha\u00eenes (\u00e9l\u00e9ments de type str) de mani\u00e8re simple. Dans cette le\u00e7on, nous allons vous montrer &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/7a-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-4654","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4654","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=4654"}],"version-history":[{"count":25,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4654\/revisions"}],"predecessor-version":[{"id":7459,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4654\/revisions\/7459"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=4654"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}