{"id":4663,"date":"2012-06-21T17:04:45","date_gmt":"2012-06-21T21:04:45","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=4663"},"modified":"2013-08-07T19:47:17","modified_gmt":"2013-08-07T23:47:17","slug":"9-fr","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/9-fr\/","title":{"rendered":"9: Else, and, or, not"},"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>Dans cette le\u00e7on, vous allez apprendre \u00e0 effectuer des tests bool\u00e9ens complexes de mani\u00e8re \u00e9l\u00e9gante en utilisant deux \u00e9l\u00e9ments du langage Python:<\/p>\n<ul>\n<li>apr\u00e8s une instruction\u00a0<code>if \u00abC\u00bb<\/code>, une instruction\u00a0<code>else<\/code> est ex\u00e9cut\u00e9e si\u00a0<code>C<\/code>\u00a0est\u00a0<em>false<\/em><\/li>\n<li>vous pouvez combinez des conditions bool\u00e9ennes en utilisant\u00a0<code>A and B<\/code>, <code>A or B<\/code>, et\u00a0<code>not A<\/code><\/li>\n<\/ul>\n<h1><code>else<\/code><\/h1>\n<p>Une t\u00e2che courante lorsque l'on \u00e9crit des programmes est de vouloir tester des conditions et de faire une chose ou une autre suivant que la condition est vraie ou fausse. Nous avons vu un exemple <a href=\"\/6-fr\/\">pr\u00e9c\u00e9demment<\/a>\u00a0o\u00f9 nous voulions d\u00e9terminer lequel de deux nombres \u00a0<code>x<\/code>, <code>y<\/code> \u00e9tait le plus grand et nous avons pour cela utilis\u00e9 deux instructions\u00a0<code>if<\/code>. R\u00e9\u00e9crivons le programme en utilisant l'instruction <code>else<\/code>:<\/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>Calcul du maximum et illustration de else<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 266px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=10 readonly='readonly'  style = 'height : 266px;'  class='pyboxCode RO'>\nx = int(input())\ny = int(input())\nprint('Dans ce cas de test nous mettons x =', x, 'and y =', y)\nif x >= y:\n    print('(Le maximum est x)')\n    leMax = x\nelse:\n    print('(Le maximum est y)')\n    leMax = y\nprint('Le maximum est', leMax)<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput0\">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='submit0' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch0\" value=\"Input Switch\" onclick=\"pbInputSwitch(0,'N')\" ><\/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=\"7755a31ec8ed92c68b9e04e5a5e6f4aa\"\/>\n<div id='pbresults0' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>pbInputSwitch(0,\"N\");<\/script>\n<\/p>\n<p>Plus g\u00e9n\u00e9ralement, on utilise\u00a0<code>else<\/code> \u00e0 l'aide de la paire de blocks d'instructions:<\/p>\n<pre>if \u00abtest\u00bb:\r\n   \u00abcorps-vrai\u00bb       # un block indent\u00e9\r\nelse:\r\n   \u00abcorps-faux\u00bb       # un autre block indent\u00e9<\/pre>Python \u00e9value le test. Si le r\u00e9sultat est vrai alors le block corps-vrai est ex\u00e9cut\u00e9 et si le r\u00e9sultat est faux, alors le block corps-faux est ex\u00e9cut\u00e9.<\/p>\n<h2>La Philosophie du\u00a0<code>else<\/code><\/h2>\n<p>L'instruction\u00a0<code>else<\/code>\u00a0ne nous donne pas des pouvoirs magiques mais rend le code plus facile \u00e0 lire, \u00e0 d\u00e9verminer et \u00e0 maintenir \u00e0 jour. Voici deux extraits de code qui font la m\u00eame chose:<\/p>\n<table id=\"AB\">\n<tbody>\n<tr>\n<td>\n<div>Version A<\/div>\n<pre>if hauteur &lt; 256:\r\n   print('Montagnes russes interdites')\r\nelse:\r\n   print('Bienvenu \u00e0 bord!')<\/pre>\n<\/td>\n<td>\n<div>Version B<\/div>\n<pre>if hauteur &lt; 256:\r\n   print('Montagnes russes interdites')\r\nif hauteur &gt;= 256:\r\n   print('Bienvenu \u00e0 bord!')<\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Les deux extraits font la m\u00eame chose et <strong>B<\/strong>\u00a0n'a m\u00eame pas besoin du\u00a0<code>else<\/code>. Cependant, la plupart des programmeurs seront d'accord de dire que\u00a0<strong>A<\/strong> est meilleur. Par exemple avec <strong>A<\/strong>, changer la condition (e.g., 128 au lieu de 256) ne demande qu'un changement alors qu'il en faut deux avec <strong>B<\/strong>. De plus, <strong>A<\/strong> est compris imm\u00e9diatement par un lecteur humain, alors qu'avec\u00a0<strong>B<\/strong>\u00a0il vous faut v\u00e9rifier et r\u00e9fl\u00e9chir si les deux conditions peuvent \u00eatre vraies ou non en m\u00eame temps.<\/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'>Valeur absolue<\/span><\/div>La <em>valeur absolue<\/em>\u00a0est d\u00e9finie de la mani\u00e8re suivante: pour un nombre\u00a0<em>x<\/em>\u00a0positif ou nul, la valeur absolue de\u00a0<em>x <\/em>est\u00a0<em>x<\/em>; pour un nombre n\u00e9gatif, la valeur absolue de\u00a0<em>x<\/em>\u00a0est\u00a0<em>-x<\/em>, soit l'oppos\u00e9 de <em>x<\/em>. Par exemple, la valeur absolue de\u00a0<code>5<\/code>\u00a0est\u00a0<code>5\u00a0<\/code>et la valeur absolue de\u00a0<code>-10<\/code>\u00a0est\u00a0<code>10<\/code>.\u00a0En utilisant\u00a0<code>if<\/code>\u00a0et\u00a0<code>else<\/code>, \u00e9crivez un programme qui lit un entier comme entr\u00e9e et qui affiche sa valeur absolue.<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'>\nx=int(input())\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput1\">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<input type='hidden' id='defaultCode1' value='x=int(input())\\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='switch' id=\"switch1\" value=\"Input Switch\" onclick=\"pbInputSwitch(1,'N')\" ><\/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><select id='pbSelect1' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(1,'9.abs')\" >History<\/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=\"eaf53ce9b2bcacdb94432af44b05d071\"\/>\n<div id='pbresults1' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(1);});pbInputSwitch(1,\"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> Python a une fonction int\u00e9gr\u00e9e\u00a0<code>abs(x)<\/code>\u00a0qui calcule la valeur absolue de\u00a0<code>x<\/code>. Le \"grader\" ci-dessus vous emp\u00eache de l'utiliser pour cet exercice mais vous pourrez l'utiliser plus tard. <\/span><\/td><\/table><\/p>\n<h2><code>elif<\/code><\/h2>\n<p>Python propose une autre instruction,\u00a0<code>elif<\/code>, qui facilite la v\u00e9rification de plusieurs instructions en une seule fois. La forme la plus simple de\u00a0<code>elif<\/code> est la suivante:<\/p>\n<pre>if \u00abtest1\u00bb:\r\n   \u00abbody1\u00bb        # ex\u00e9cut\u00e9 si test1 est vrai\r\nelif \u00abtest2\u00bb:\r\n   \u00abbody2\u00bb        # ex\u00e9cut\u00e9 si test1 est faux et test2 est vrai<\/pre>Comme vous l'avez peut \u00eatre devin\u00e9, <code>elif<\/code>\u00a0est la contraction de \"else if\" (sinon si) et revient au m\u00eame que de mettre une instruction if \u00e0 l'int\u00e9rieur d'un block else. Mais cela abouti \u00e0 un code plus court et moins d'indentation, ce qui rend votre programme plus facile \u00e0 lire, d\u00e9verminer et \u00e9diter. De plus, vous pouvez en combiner autant d'instructions\u00a0elif que vous le souhaitez et m\u00eame ajouter une instruction\u00a0<code>else<\/code> \u00e0 la fin:<\/p>\n<pre>if \u00abtest1\u00bb:\r\n   \u00abbody1\u00bb    # ex\u00e9cut\u00e9 si test1 est vrai\r\nelif \u00abtest2\u00bb:\r\n   \u00abbody2\u00bb    # ex\u00e9cut\u00e9 si test1 est faux et test2 est vrai\r\nelif \u00abtest3\u00bb:\r\n   \u00abbody3\u00bb    # ex\u00e9cut\u00e9 si test1 &amp; test2 sont tous les deux faux &amp; test3 est vrai\r\nelse:         # ces deux derni\u00e8res lignes sont optionnelles\r\n   \u00abautrement\u00bb# ex\u00e9cut\u00e9 si tous les autres tests sont faux<\/pre><form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox2'>\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'>Premier, deuxi\u00e8me, troisi\u00e8me<\/span><\/div>Les abr\u00e9viations\u00a0anglais 1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, et 9th sont des <em>adjectifs ordinaux.<\/em>\u00a0Ecrivez un programme qui prend un entier\u00a0<em>x<\/em>\u00a0entre 1 et 9 en entr\u00e9e. Le programme doit afficher l'adjectif ordinal correspondant \u00e0\u00a0<em>x<\/em>. <br\/> <strong>Indice<\/strong>: Vous n'avez pas besoin de 9 cas s\u00e9par\u00e9s; 4 suffisent.<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='usercode2' id='usercode2'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory2' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput2\">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='submit2' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch2\" value=\"Input Switch\" onclick=\"pbInputSwitch(2,'N')\" ><\/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><select id='pbSelect2' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(2,'9.ordinal')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(2);\" >Help<\/option>\n<\/select><\/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=\"09c9a051e5ecdfb287a38942c70c7629\"\/>\n<div id='pbresults2' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(2);});pbInputSwitch(2,\"N\");<\/script>\n<\/p>\n<h2>Op\u00e9rateurs Bool\u00e9ens: <code>and<\/code>, <code>or<\/code>, <code>not<\/code><\/h2>\n<p>Vous pouvez combiner des expressions bool\u00e9ennes en utilisant \"<code>and<\/code>\", \"<code>or<\/code>\", and \"<code>not<\/code>\" (\"et\", \"ou\" et \"non\").<\/p>\n<ul>\n<li>L'expression\u00a0<code>A and B<\/code>\u00a0est vraie si \u00e0 la fois\u00a0<code>A<\/code> et\u00a0<code>B<\/code> sont vrais et fausse si un des deux ou les deux sont faux. (Par exemple, vous serez mouill\u00e9 s'il pleut <code>et<\/code> que vous avez oubli\u00e9 votre parapluie.)<\/li>\n<li>L'expression\u00a0<code>A or B<\/code>\u00a0est vraie si soit\u00a0<code>A<\/code>\u00a0est vraie soit\u00a0<code>B<\/code> est vrai et fausse si les deux sont faux. (Par exemple l'\u00e9cole est ferm\u00e9e pendant les vacances <code>ou<\/code> c'est le weekend.)<\/li>\n<li>L'expression\u00a0<code>not A<\/code>\u00a0est vraie si\u00a0<code>A<\/code> est faux et fausse si\u00a0<code>A<\/code> est vrai. (Par exemple, vous avez faim si vous n'avez <code>pas<\/code> mang\u00e9 votre diner.)<\/li>\n<\/ul>\n<p>Voici un programme qui affiche automatiquement toutes les possibilit\u00e9s. Comme les tables de multiplication que vous connaissez de l'\u00e9cole promaire, ceci s'appelle des tables de v\u00e9rit\u00e9.<\/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>Tables de v\u00e9rit\u00e9<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode3' id='usercode3'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\nprint(\"  A      B       not A  not B  A and B  A or B\")\nprint(\"----------------------------------------------\")\nfor A in [False, True]:               # (boucle \"for\" avec liste\n    for B in [False, True]:           #  sera expliqu\u00e9e plus tard)\n        print(A, \" \", B, \"   \", not A, \" \", not B, \" \", A and B, \" \", A or B)<\/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=\"8f54c2dc44a45ce47aa3ac86a74f9fbb\"\/>\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>Comme exemple d'utilisation de\u00a0<code>and<\/code>, voici un programme qui convertit des chiffres en lettres avec contr\u00f4le d'erreurs.<br \/>\n<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>Un exemple qui convertit les chiffres en lettres avec\u00a01=A, 2=B, etc.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode4' id='usercode4'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\nx = int(input())\nif x>=1 and x<=26:\n    print('lettre', x, \"dans l'alphabet:\", chr(ord('A')+(x-1)))\nelse:\n    print('entr\u00e9e non valide:', x)<\/textarea><\/div>\n<div id='pbhistory4' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput4\">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='submit4' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch4\" value=\"Input Switch\" onclick=\"pbInputSwitch(4,'N')\" ><\/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=\"41b809faea905c0fbe6c2489c4b1b380\"\/>\n<div id='pbresults4' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>pbInputSwitch(4,\"N\");<\/script>\n<\/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'>26 Lettres<\/span><\/div>Ecrivez un programme qui fait l'inverse de l'exemple ci-dessus: il prendra un caract\u00e8re en entr\u00e9e et affichera le nombre correspondant (entre 1 et 26). Votre programme n'acceptera que les lettres majuscules: affichez\u00a0<code>non\u00a0valide<\/code>\u00a0si l'entr\u00e9e n'est pas une des lettres majuscules\u00a0<code>A<\/code>, <code>B<\/code>, ..., <code>Z<\/code>. <a class=\"hintlink\"  id=\"hintlink6\">Indice<\/a><a class=\"hintlink\"  id=\"hintlink7\">M\u00e9thode de comparaison alternative<\/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='usercode5' id='usercode5'  cols=10 rows=20   class='pyboxCode RW'>\nletter = input()\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<input type='hidden' id='defaultCode5' value='letter = input()\\n'><\/input>\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,'9.numberify')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(5,descape($('#defaultCode5').val()))\" >Reset code to default<\/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=\"a4329a3478cdda120b98a47dea51d537\"\/>\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<div class='pybox modeNeutral' id='pybox8'>\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'>Loi de De Morgan<\/span><\/div><div>Laquelle de ces expressions est \u00e9quivalente \u00e0\u00a0<code>A or B<\/code>?<\/div><label>Your choice: <\/label><select id=\"pyselect8\"><option value=\"d\" selected>Select one<\/option><option value=\"w\">not (A and B)<\/option><option value=\"r\">not ((not A) and (not B))<\/option><option value=\"w\">(not A) and (not B)<\/option><\/select><div class='pyboxbuttons'><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"9.demorgan\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick='pbMultiCheck(8)'\/><\/div><div class=\"pbresults\" id=\"pyMultiResults8\"><\/div><div class=\"epilogue\">Correct!\nVoici une fa\u00e7on d'arriver \u00e0 cette r\u00e9ponse.\nTout d'abord, <code>not (A or B) <\/code> n'est vrai que lorsque les deux\n<code>A<\/code> et <code>B<\/code> sont fausses.\nNotez \u00e9galement que <code>(not A) and (not B)<\/code> n'est vrai que si les deux\n<code>not A<\/code> et <code>not B<\/code> sont vraies,\nc.-\u00e0-d. que si les deux <code>A<\/code> et <code>B<\/code> sont fausses.\nDonc, nous avons l'\u00e9galit\u00e9 suivante:\n<pre>(not A) and (not B) = not (A or B)<\/pre>\nMettez un <code>not<\/code> autour des deux c\u00f4t\u00e9s, donc on en d\u00e9duit\n<pre>not ((not A) and (not B)) = not (not (A or B))<\/pre>\net observez que <code> not (not X)<\/code> toujours \u00e9gale\n<code>X<\/code>, alors\n<pre>not ((not A) and (not B)) = not (not (A or B)) = A or B<\/pre>\nCette fa\u00e7on de r\u00e9\u00e9crire une expression bool\u00e9enne est un des\n<a href='http:\/\/fr.wikipedia.org\/wiki\/Lois_de_De_Morgan'>\nlois de De Morgan<\/a>.\n<\/div><\/div>\n<h3>Ordre des Op\u00e9rations<\/h3>\n<p><span style=\"color: #444444; line-height: 24px;\">Les op\u00e9rateurs bool\u00e9ens ont un \"ordre d'op\u00e9rations\" tout comme les op\u00e9rateurs math\u00e9matiques. L'ordre est<\/span><\/p>\n<p style=\"text-align: center;\"><strong>NAO<\/strong>: not (pr\u00e9c\u00e9dence haute), and, or (pr\u00e9c\u00e9dence basse)<\/p>\n<p style=\"text-align: left;\">donc par exemple,<\/p>\n<p style=\"text-align: center;\"><code>not x or y and z<\/code> <span style=\"padding-right: 40px; padding-left: 40px;\">signifie<\/span> <code>(not x) or (y and z)<\/code><\/p>\n<p>Nous concluons cette le\u00e7on avec une courte question sur ce th\u00e8me:<br \/>\n<div class='pybox modeNeutral' id='pybox9'>\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'>Ordre des Op\u00e9rations<\/span><\/div><div>Quelle est la valeur de<\/p>\n<pre>A or not B and C<\/pre>Si (A, B, C) = (False, True, True)? <a class=\"hintlink\"  id=\"hintlink10\">Indice<\/a><\/div><label>Your choice: <\/label><select id=\"pyselect9\"><option value=\"d\" selected>Select one<\/option><option value=\"r\">False<\/option><option value=\"w\">True<\/option><\/select><div class='pyboxbuttons'><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"9.multi\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick='pbMultiCheck(9)'\/><\/div><div class=\"pbresults\" id=\"pyMultiResults9\"><\/div><div class=\"epilogue\">Correct !\nL'ordre des op\u00e9rations le rend \u00e9quivalent \u00e0\n<pre>A or ((not B) and C)<\/pre>\nen rempla\u00e7ant les valeurs, nous avons\n<pre>False or ((not True) and True)<\/pre>\net maintenant, simplifiant une \u00e9tape \u00e0 la fois donne\n<pre>False or ((not True) and True)\n= False or (False and True)\n= False or False\n= False<\/pre><\/div><\/div>\n<p>Quand vous avez termin\u00e9, vous \u00eates pr\u00eat pour la prochaine le\u00e7on.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans cette le\u00e7on, vous allez apprendre \u00e0 effectuer des tests bool\u00e9ens complexes de mani\u00e8re \u00e9l\u00e9gante en utilisant deux \u00e9l\u00e9ments du langage Python: apr\u00e8s une instruction\u00a0if \u00abC\u00bb, une instruction\u00a0else est ex\u00e9cut\u00e9e si\u00a0C\u00a0est\u00a0false vous pouvez combinez des conditions bool\u00e9ennes en utilisant\u00a0A and &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/9-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-4663","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4663","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=4663"}],"version-history":[{"count":34,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4663\/revisions"}],"predecessor-version":[{"id":7464,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4663\/revisions\/7464"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=4663"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}