{"id":4615,"date":"2012-06-18T19:56:02","date_gmt":"2012-06-18T23:56:02","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=4615"},"modified":"2015-04-09T10:12:10","modified_gmt":"2015-04-09T14:12:10","slug":"1e-fr","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/1e-fr\/","title":{"rendered":"1E: Erreurs"},"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 \/>\nAdditional translator: Andr\u00e9 Roberge, andre.roberge@gmail.com<br \/>\nLicense: http:\/\/creativecommons.org\/licenses\/by-nc-sa\/3.0\/<br \/>\nFor the full site, visit http:\/\/cscircles.ca-->\n<p>Au fur et \u00e0 mesure que vous avancerez dans la programmation, vous rencontrerez naturellement beaucoup d'erreurs (ou <em>bogues<\/em>, adapt\u00e9 de l'anglais \"<em>bugs\"<\/em>). G\u00e9n\u00e9rer, comprendre et r\u00e9gler des erreurs est une partie importante de la programmation. Python fera de son mieux pour ex\u00e9cuter tout ce que vous lui direz d'ex\u00e9cuter, mais s'il ne comprend pas ce que vous lui demandez, il n'ex\u00e9cutera pas votre programme. Dans ce cas, Python vous donnera un peu d'information sur ce qui s'est mal pass\u00e9 afin de vous aider \u00e0 le r\u00e9soudre.<\/p>\n<p>Voici deux erreurs Python.<\/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='type'>Example: <\/span><span class='title'>Une erreur de syntaxe<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nprint \"Le poisson\"<\/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<\/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=\"4d9418e1c1a118fbc792d03b9a052261\"\/>\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>Dans ce premier exemple, nous avons oubli\u00e9 d'utiliser les parenth\u00e8ses qui sont n\u00e9cessaires pour la fonction\u00a0<code>print(...)<\/code>. Python ne comprend pas ce que vous essayez de faire.<\/p>\n<p>Voici un deuxi\u00e8me exemple de bogue\u00a0en Python.<\/p>\n<p><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'>Une erreur d'ex\u00e9cution<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nprint(salutations)<\/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<\/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=\"1da0ecb42fab3faf0bc1cfad18256f78\"\/>\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<p>Dans ce deuxi\u00e8me exemple, nous avons oubli\u00e9 de d\u00e9finir la variable <code>salutations<\/code>. Python sait ce que vous lui demandez de faire, mais comme <code>salutations<\/code> n'a pas \u00e9t\u00e9 d\u00e9fini, une erreur est g\u00e9n\u00e9r\u00e9e.<\/p>\n<p>Une <strong>erreur de syntaxe<\/strong> (<strong>syntax error<\/strong> en anglais) est g\u00e9n\u00e9r\u00e9e lorsque Python ne comprend pas ce que vous lui demandez de faire. Une <strong>erreur d'ex\u00e9cution<\/strong> (<strong>run-time error<\/strong> en anglais) est g\u00e9n\u00e9r\u00e9e lorsque Python comprend ce que vous demandez\u00a0mais qu'il rencontre des probl\u00e8me lorsqu'il suit vos instructions.<\/p>\n<p>En fran\u00e7ais, une <strong>erreur de syntaxe<\/strong> serait comme la phrase<\/p>\n<p style=\"text-align: center;\"><em>S'il vous pla\u00eet chat chien singe.<\/em><\/p>\n<p>La grammaire de cette phrase ne donne pas de sens. D'un point de vue de la grammaire fran\u00e7aise, il manque un <em>verbe<\/em> (action). Vous ne pouvez pas comprendre ce que l'on vous demande de faire. <em>Syntaxe<\/em> est synonyme de <em>grammaire<\/em> en programmation.<\/p>\n<p>En fran\u00e7ais, une <strong>erreur d'ex\u00e9cution<\/strong> serait comme la phrase<\/p>\n<p style=\"text-align: center;\"><em>S'il vous pla\u00eet, mangez le piano.<\/em><\/p>\n<p>La phrase donne un sens du point de vue de la grammaire \u2014\u00a0il y a un verbe et un nom o\u00f9 il se doit \u2014\u00a0et vous savez donc ce que l'on vous demande de faire. Mais vous allez rencontrer des probl\u00e8mes lorsque vous allez essayer de manger le piano (sauf si vous \u00eates un termite). Cela s'appelle une erreur d'ex\u00e9cution car elle a lieu lorsque le programme s'ex\u00e9cute.<\/p>\n<p>Nous parlerons \u00e9galement d'<strong>erreurs logiques<\/strong>\u00a0(<strong>logic errors<\/strong>\u00a0en anglais) \u00e0 la fin, ce qui signifie que votre programme s'ex\u00e9cute jusqu'au bout sans planter mais qu'il ne produit pas le r\u00e9sultat attendu. En voici un exemple<\/p>\n<p style=\"text-align: center;\"><em>Veuillez s'il vous pla\u00eet fermer la porte arri\u00e8re afin que les insectes n'entrent pas.<\/em><\/p>\n<p>Ce serait une erreur logique si la <em>porte avant<\/em> \u00e9tait aussi ouverte\u00a0: m\u00eame si la commande donne du sens et que vous pouvez fermer la porte arri\u00e8re, cela n'a pas l'effet escompt\u00e9 de garder les insectes dehors puisqu'ils peuvent entrer par la porte avant.<\/p>\n<h2>Erreurs de syntaxe courantes en Python<\/h2>\n<p>Voici d'autres exemples d'erreurs de syntaxes qui peuvent \u00eatre g\u00e9n\u00e9r\u00e9es en Python. Une chose tr\u00e8s g\u00e9n\u00e9rale qui peut arriver est que Python rencontre un symbole qui n'est pas o\u00f9 il est attendu.<\/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='type'>Example: <\/span><span class='title'>Erreur de syntaxe<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nprint(\"Bonjour, Monde\"!)<\/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<\/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=\"c5d44884d4a25224cee85912da49604b\"\/>\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>Python nous dit\u00a0<code>SyntaxError: invalid syntax<\/code>\u00a0et pointe avec <code>^<\/code> au point d'exclamation. Le probl\u00e8me est que\u00a0<code>!<\/code>\u00a0n'a pas de sens en Python. L'erreur de syntaxe disparaitrait si nous \u00e9crivions\u00a0<code>print(\"Bonjour, Monde!\")<\/code> \u00e0 la place, parce que Python comprendrait que\u00a0<code>!<\/code> appartient au texte\u00a0<code>Bonjour, Monde<\/code>.<\/p>\n<p>Voici une autre erreur de syntaxe qui est plus subtile.<\/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='type'>Example: <\/span><span class='title'>Erreur de syntaxe<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode3' id='usercode3'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\ncontinue = \"maintenant, svp\"<\/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<\/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=\"88d03d4cefc25da1ff6cc150642e2cb3\"\/>\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>Le probl\u00e8me est que\u00a0<code>continue<\/code>\u00a0est un mot r\u00e9serv\u00e9 en Python. Si vous aviez \u00e9crit <code>procede<\/code>\u00a0au lieu de <code>continue<\/code>, il n'y aurait pas eu de probl\u00e8me.\u00a0Cliquez <a class=\"hintlink\"  id=\"hintlink4\">ici<\/a> pour voir la liste de tous les \"mots r\u00e9serv\u00e9s\" en Python.<\/p>\n<p>Si vous utilisez les guillemets autour d'un texte et que vous oubliez le 2\u00e8me, ou que vous utilisez des parenth\u00e8ses et que vous oubliez la 2\u00e8me, vous aurez une erreur de syntaxe\u00a0:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform5\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox5'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Erreur de syntaxe<\/span><\/div>Oubli du 2\u00e8me guillemet<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode5' id='usercode5'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nname = \"Jim<\/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<\/tr><\/table><\/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=\"081a5c7b43f2ca691de7dcc38734aa91\"\/>\n<div id='pbresults5' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit5\").value = \"Run program\";document.getElementById(\"inputInUse5\").value = \"N\";<\/script>\n<\/p>\n<p>Dans cette erreur, <strong>EOL<\/strong> signifie\u00a0<strong>E<\/strong>nd <strong>O<\/strong>f <strong>L<\/strong>ine (fin de ligne)\u00a0: Python s'attendait \u00e0 une autre\u00a0<code>\"<\/code> mais la ligne s'est termin\u00e9e avant qu'il ne le trouve.<\/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='type'>Example: <\/span><span class='title'>Erreur de syntaxe<\/span><\/div>Oubli de la 2\u00e8me paranth\u00e8se<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode6' id='usercode6'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nprint(77<\/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<\/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=\"9c9e0c2dd811bccdec96a2ec5724f232\"\/>\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 m\u00eame,\u00a0<strong>EOF<\/strong>\u00a0signifie\u00a0<strong>E<\/strong>nd\u00a0<strong>O<\/strong>f\u00a0<strong>F<\/strong>ile\u00a0: Python a cherch\u00e9 une\u00a0<code>)<\/code>\u00a0mais la ligne s'est termin\u00e9e avant qu'il ne la trouve.<\/p>\n<h2>Erreurs d'ex\u00e9cution<\/h2>\n<p>Voici plusieurs erreurs d'ex\u00e9cution courantes. Python est capable de comprendre ce que le programme dit, mais il est face \u00e0 des probl\u00e8mes lorsqu'il essaye d'ex\u00e9cuter des instructions.<\/p>\n<ul>\n<li>utiliser une variable ou une fonction non d\u00e9finie. Cela peut aussi arriver si la casse des lettres (majuscules ou minuscules) n'est respect\u00e9e dans un nom de variable\u00a0:\u00a0<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>Une variable non d\u00e9finie<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'>\nappelleMoi = \"Maybe\"\nprint(appellemoi)<\/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<\/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=\"3b48799d04b9e8cb707f073cc06c487c\"\/>\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<\/li>\n<li>diviser par z\u00e9ro, ce qui ne donne pas de sens en math\u00e9matiques. (Pourquoi\u2009? Comme 0 fois n'importe quel nombre est \u00e9gal \u00e0 0, il n'y a pas de solution \u00e0 l'\u00e9quation 1 = <em>X<\/em>\u00a0* 0, et donc 1\/0 n'est pas d\u00e9fini.) <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>Diviser par 0<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode8' id='usercode8'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nprint(1\/0)<\/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<\/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=\"09f9746176a2d4230f0c6fff91c10e14\"\/>\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<\/li>\n<li>utiliser des op\u00e9rateurs avec des donn\u00e9es du mauvais type <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>Ajouter du texte et un nombre<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode9' id='usercode9'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nprint(\"vous ne pouvez pas ajouter du texte et un nombre\" + 12)<\/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<\/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=\"5928a1fe47c1bc55686c9308e6d29479\"\/>\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<\/li>\n<li>\u00e9crire une virgule <code>,<\/code> au lieu d'un point\u00a0<code>.<\/code> comme s\u00e9parateur d\u00e9cimal <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>Le s\u00e9parateur d\u00e9cimal devrait \u00eatre un point comme c'est le cas en anglais.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode10' id='usercode10'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\npi = 3,14159\nprint(pi*pi)<\/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<\/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=\"898117859c8854c162aa6bfcbd6e36c5\"\/>\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<\/li>\n<\/ul>\n<p>Vous trouverez d'autres moyens de g\u00e9n\u00e9rer des erreurs au fur et \u00e0 mesure que vous en apprendrez plus sur Python.<\/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> Quelle est la diff\u00e9rence technique entre une erreur de syntaxe et une erreur d'ex\u00e9cution\u2009? Voici un exemple qui compare une erreur de syntaxe et une erreur d'ex\u00e9cution. Regardez la sortie du programme. <form class=\"pbform\" action=\"#\" id=\"pbform11\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox11'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Erreur d'ex\u00e9cution<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode11' id='usercode11'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nprint(\"Voici du texte\")\nprint(1\/0)<\/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<\/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=\"cd5e3bab848d5943f5b56bdba4fda907\"\/>\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 <form class=\"pbform\" action=\"#\" id=\"pbform12\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox12'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Erreur de syntaxe<\/span><\/div> <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'>\nprint(\"Voici du texte\")\nprint(1*0<\/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<\/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=\"e4a0664608c37f02aa86dd2bd2d790af\"\/>\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 Le programme avec l'erreur d'ex\u00e9cution a produit une sortie mais pas celui avec l'erreur de syntaxe. Ceci s'explique par le fait que Python s'ex\u00e9cute en deux \u00e9tapes\u00a0: <\/p>\n<ol> \t<\/p>\n<li>Python v\u00e9rifie que la syntaxe de votre programme est correcte, afin de d\u00e9terminer sa structure et ses diff\u00e9rentes parties.<\/li>\n<p> \t<\/p>\n<li>Si aucune erreur de syntaxe n'a \u00e9t\u00e9 trouv\u00e9e \u00e0 l'\u00e9tape 1, alors le programme est ex\u00e9cut\u00e9.<\/li>\n<p> <\/ol>\n<p> <\/p>\n<div>Donc un programme qui a une erreur de syntaxe ne sera pas du tout ex\u00e9cut\u00e9, mais un programme avec une erreur d'ex\u00e9cution ex\u00e9cutera les \u00e9tapes qui se trouvent avant que l'erreur n'aie lieu.<\/div>\n<p>  <\/span><\/td><\/table><\/p>\n<h2>Erreurs logiques<\/h2>\n<p>Votre programme peut s'ex\u00e9cuter sans planter (pas d'erreurs de syntaxe ni\u00a0d'erreurs d'ex\u00e9cution) mais tout de m\u00eame ne pas faire ce qu'il est suppos\u00e9 faire. Par exemple, peut \u00eatre que vous voulez que votre programme calcule la <em>moyenne<\/em> de deux nombres\u00a0: la moyenne de <em>x<\/em> et <em>y<\/em> est d\u00e9finie par<\/p>\n<p style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdisplaystyle%7B%5Cfrac%7Bx%2By%7D%7B2%7D%7D&#038;bg=T&#038;fg=000000&#038;s=2' alt='\\displaystyle{\\frac{x+y}{2}}' title='\\displaystyle{\\frac{x+y}{2}}' class='latex' \/><\/p>\n<p>Pourquoi ce programme ne fonctionne-t-il pas\u2009?<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform13\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox13'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Cela ne calcule <em>pas<\/em> la moyenne correctement.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode13' id='usercode13'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nx = 3\ny = 4\nmoyenne = x + y \/ 2\nprint(moyenne)<\/textarea><\/div>\n<div id='pbhistory13' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit13' value=' '\/><\/td>\n<\/tr><\/table><\/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=\"a4ccade05d6e219e009ada3c3fe0e059\"\/>\n<div id='pbresults13' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit13\").value = \"Run program\";document.getElementById(\"inputInUse13\").value = \"N\";<\/script>\n<\/p>\n<p>La moyenne devrait \u00eatre<\/p>\n<p style=\"text-align: center;\"><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdisplaystyle%7B%5Cfrac%7Bx%2By%7D%7B2%7D%3D%5Cfrac%7B3%2B4%7D%7B2%7D%3D%5Cfrac%7B7%7D%7B2%7D%3D3.5%7D&#038;bg=T&#038;fg=000000&#038;s=2' alt='\\displaystyle{\\frac{x+y}{2}=\\frac{3+4}{2}=\\frac{7}{2}=3.5}' title='\\displaystyle{\\frac{x+y}{2}=\\frac{3+4}{2}=\\frac{7}{2}=3.5}' class='latex' \/><\/p>\n<p>mais le programme \u00e9crit\u00a0<code>5.0<\/code>\u2009! L'erreur est li\u00e9e \u00e0 \"l'ordre des op\u00e9rations\" en arithm\u00e9tique. Quand vous \u00e9crivez\u00a0<code>x + y \/ 2<\/code>, cela signifie math\u00e9matiquement <img src='https:\/\/s0.wp.com\/latex.php?latex=x+%2B+%28y+%2F+2%29+%3D+3+%2B+%284+%2F+2%29+%3D+3+%2B+2+%3D+5&#038;bg=T&#038;fg=000000&#038;s=2' alt='x + (y \/ 2) = 3 + (4 \/ 2) = 3 + 2 = 5' title='x + (y \/ 2) = 3 + (4 \/ 2) = 3 + 2 = 5' class='latex' \/>. Pour r\u00e9soudre le probl\u00e8me, la troisi\u00e8me ligne de notre programme devrait \u00eatre <code>moyenne<\/code><code>\u00a0= (x + y) \/ 2<\/code>, ce qui indique clairement \u00e0 Python que nous voulons la valeur <img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cfrac%7Bx%2By%7D%7B2%7D&#038;bg=T&#038;fg=000000&#038;s=3' alt='\\frac{x+y}{2}' title='\\frac{x+y}{2}' class='latex' \/>, o\u00f9 nous additionnons d'abord puis divisons ensuite.<\/p>\n<p>Vous avez des erreurs logiques parce que vous n'avez pas con\u00e7u votre programme correctement, ou parce que vous n'avez pas \u00e9crit votre code en suivant votre conception correctement (comme la <code>moyenne<\/code> par exemple). Les erreurs logiques sont difficiles \u00e0 d\u00e9tecter, surtout dans un long programme, mais en vous am\u00e9liorant \u00e0 \u00e9crire du code, vous deviendrez aussi meilleur \u00e0 \u00e9viter les erreurs logiques. La le\u00e7on 6D vous donnera des indices pour \u00e9viter les erreurs logiques.<\/p>\n<h2>Exercices<\/h2>\n<p>Maintenant que vous avez compl\u00e9t\u00e9 la le\u00e7on, nous avons trois exercices sur le <em>d\u00e9bogage\u00a0<\/em>(r\u00e9soudre les erreurs dans les programmes).\u00a0Vous pouvez essayer de trouver les erreurs avant d'ex\u00e9cuter les programmes, ou vous pouvez d'abord les ex\u00e9cuter et utiliser les r\u00e9ponses de Python pour d\u00e9terminer ce qui doit \u00eatre fix\u00e9.<\/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> Chaque programme vient avec du code d\u00e9j\u00e0 pr\u00e9par\u00e9 pour vous. Vous devez seulement changer quelques caract\u00e8res (lettres\/symboles\/nombres) pour fixer chaque programme. Le correcteur\u00a0rejettera les solutions qui changent trop de caract\u00e8res. S\u00e9lectionnez\u00a0\u00a0<strong>R\u00e9initialiser code<\/strong>\u00a0si vous voulez revenir \u00e0 la version originale. <\/span><\/td><\/table><\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform14\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox14'>\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'>Additionneur<\/span><\/div>Fixez la syntaxe du programme suivant pour qu'il \u00e9crive la somme des nombres de 1 \u00e0 10. Vous pouvez changer au plus un caract\u00e8re.<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='usercode14' id='usercode14'  cols=10 rows=20   class='pyboxCode RW'>\nprint(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +)\n<\/textarea><\/div>\n<div id='pbhistory14' class='flexcontain' style='display:none;'><\/div>\n<input type='hidden' id='defaultCode14' value='print(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +)\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit14' value=' '\/><\/td>\n<td><input type='button' name='history' value=\"History\" onclick=\"historyClick(14,'1e.product')\" ><\/td>\n<td><input type='button' name='default' value=\"Reset code to default\" onclick=\"pbSetText(14,descape($('#defaultCode14').val()))\" ><\/td>\n<td><input type='button' name='help' value=\"Help\" onclick=\"helpClick(14);\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse14\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"14\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"97153721e6f352d433bd096da88aef0b\"\/>\n<div id='pbresults14' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit14\").value = \"Run program\";document.getElementById(\"inputInUse14\").value = \"N\";<\/script>\n<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform15\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox15'>\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'>Bonjour Joe<\/span><\/div>Fixez l'erreur d'ex\u00e9cution dans le programme suivant pour qu'il imprime\u00a0<code>Bonjour<\/code>\u00a0sur la premi\u00e8re ligne et\u00a0<code>Joe<\/code> sur la seconde ligne. Vous pouvez changer au plus deux caract\u00e8res.<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='usercode15' id='usercode15'  cols=10 rows=20   class='pyboxCode RW'>\nprint(\"Bonjour\")\nusername = Joe \nprint(username)\n<\/textarea><\/div>\n<div id='pbhistory15' class='flexcontain' style='display:none;'><\/div>\n<input type='hidden' id='defaultCode15' value='print(\\\"Bonjour\\\")\\nusername = Joe \\nprint(username)\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit15' value=' '\/><\/td>\n<td><input type='button' name='history' value=\"History\" onclick=\"historyClick(15,'1e.joe')\" ><\/td>\n<td><input type='button' name='default' value=\"Reset code to default\" onclick=\"pbSetText(15,descape($('#defaultCode15').val()))\" ><\/td>\n<td><input type='button' name='help' value=\"Help\" onclick=\"helpClick(15);\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse15\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"15\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"1d2479ce8071c6f10eaad42cd73499ca\"\/>\n<div id='pbresults15' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit15\").value = \"Run program\";document.getElementById(\"inputInUse15\").value = \"N\";<\/script>\n<\/p>\n<p>Le dernier probl\u00e8me est plus difficile que les deux pr\u00e9c\u00e9dents. Si vous \u00eates bloqu\u00e9s, vous pouvez passer l'exercice et passer \u00e0 la prochaine le\u00e7on. Vous pouvez toujours v\u00e9rifier quels probl\u00e8mes vous avez compl\u00e9t\u00e9s ou pass\u00e9s en allant sur la page\u00a0<a title=\"Mon progr\u00e8s\" href=\"\/progres\/\">Mon progr\u00e8s<\/a>.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform16\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox16'>\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'>Croissance<\/span><\/div>Fixez l'erreur logique dans ce programme\u00a0: il devrait calculer la population dans votre pays pour les trois prochaines ann\u00e9es, en supposant\u00a0qu'elle commence avec 1000 personnes en 2012, et que le nombre de personnes augmente de 10% par ann\u00e9e. Vous pouvez changer au plus 3 caract\u00e8res. <br\/> <a class=\"hintlink\"  id=\"hintlink17\">Si vous \u00eates bloqu\u00e9, cliquez ici pour un indice.<\/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='usercode16' id='usercode16'  cols=10 rows=20   class='pyboxCode RW'>\npopulationIn2012 = 1000\npopulationIn2013 = populationIn2012 * 0.1\npopulationIn2014 = populationIn2013 * 0.1\npopulationIn2015 = populationIn2014 * 0.1\n<\/textarea><\/div>\n<div id='pbhistory16' class='flexcontain' style='display:none;'><\/div>\n<input type='hidden' id='defaultCode16' value='populationIn2012 = 1000\\npopulationIn2013 = populationIn2012 * 0.1\\npopulationIn2014 = populationIn2013 * 0.1\\npopulationIn2015 = populationIn2014 * 0.1\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit16' value=' '\/><\/td>\n<td><input type='button' name='history' value=\"History\" onclick=\"historyClick(16,'1e.growth')\" ><\/td>\n<td><input type='button' name='default' value=\"Reset code to default\" onclick=\"pbSetText(16,descape($('#defaultCode16').val()))\" ><\/td>\n<td><input type='button' name='help' value=\"Help\" onclick=\"helpClick(16);\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse16\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"16\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"3c5ef26bce1e339f7b3f008be7dbb753\"\/>\n<div id='pbresults16' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit16\").value = \"Run program\";document.getElementById(\"inputInUse16\").value = \"N\";<\/script>\n<\/p>\n<p>Une fois que vous avez trouv\u00e9 tous les bogues, allez \u00e0 la prochaine le\u00e7on\u2009!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Au fur et \u00e0 mesure que vous avancerez dans la programmation, vous rencontrerez naturellement beaucoup d'erreurs (ou bogues, adapt\u00e9 de l'anglais \"bugs\"). G\u00e9n\u00e9rer, comprendre et r\u00e9gler des erreurs est une partie importante de la programmation. Python fera de son mieux &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/1e-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-4615","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4615","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=4615"}],"version-history":[{"count":63,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4615\/revisions"}],"predecessor-version":[{"id":8959,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4615\/revisions\/8959"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=4615"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}