{"id":4645,"date":"2012-06-21T16:54:29","date_gmt":"2012-06-21T20:54:29","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=4645"},"modified":"2015-04-09T13:15:32","modified_gmt":"2015-04-09T17:15:32","slug":"5-fr","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/5-fr\/","title":{"rendered":"5: Entr\u00e9e"},"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 la le\u00e7on pr\u00e9c\u00e9dente, nous avons discut\u00e9 d'entr\u00e9e de l'utilisateur mais nous n'avons pas vraiment expliqu\u00e9 comment l'entr\u00e9e d'un utilisateur est obtenue. En Python, l'utilisateur tape une ligne d'entr\u00e9e \u00e0 la fois. Vous devez utiliser la fonction\u00a0<code><code>input()<\/code><\/code>\u00a0pour obtenir la prochaine ligne d'entr\u00e9e de l'utilisateur. La fonction\u00a0<code>input()<\/code>\u00a0ne requiert\u00a0pas d'argument (mais peut en accepter un comme cha\u00eene) et retourne toujours une cha\u00eene de type\u00a0<code>str.<\/code><\/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> Sur ce site, toutes les entr\u00e9es sont sp\u00e9cifi\u00e9es avant que le programme ne soit ex\u00e9cut\u00e9. Si vous utilisez <a href=\"\/install-fr\/\">Python chez vous<\/a>\u00a0alors\u00a0<code>input()<\/code>\u00a0fait une pause et attend que l'utilisateur entre une ligne de texte. <\/span><\/td><\/table><\/p>\n<p>Voici un exemple d'utilisation de\u00a0<code>input()<\/code>\u00a0pour obtenir l'entr\u00e9e. Le correcteur\u00a0va sp\u00e9cifier automatiquement l'entr\u00e9e pour le programme.<\/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>Afficher une ligne de texte<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nline = input()\nprint(\"La premi\u00e8re ligne d'entr\u00e9e est:\", line)<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit0' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(0)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(0,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse0\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"0\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"01b937b9843bc35e3a3cfb7aa6418b04\"\/>\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>Remarquez que dans le dernier cas test, la seconde ligne d'entr\u00e9e n'est m\u00eame pas lue car <code>input()<\/code>\u00a0n'a \u00e9t\u00e9 appel\u00e9e qu'une fois. En appelant\u00a0<code>input()<\/code>\u00a0plusieurs fois, vous pouvez lire plusieurs lignes d'entr\u00e9es.<\/p>\n<p>A partir de maintenant, la plupart des exercices propose l'option de founir vos propres entr\u00e9es de test; voici un exemple tr\u00e8s simple. Comme nous l'avons vu dans la le\u00e7on 4. la cha\u00eene donn\u00e9e par\u00a0<code>input()<\/code>\u00a0peut \u00eatre convertie en\u00a0<code>int<\/code>\u00a0ou en\u00a0<code>float<\/code>\u00a0si vous le d\u00e9sirez.<\/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=\"title\">Example<\/span><\/div>Utiliser\u00a0<code>input()<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ninputString = input()\nmonFloat = float(inputString)\nprint(monFloat + 1)<\/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<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><\/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=\"f639bc1b0d6861ced394048db3a8faca\"\/>\n<div id='pbresults1' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>pbInputSwitch(1,\"N\");<\/script>\n<\/p>\n<p>Essayez l'exp\u00e9rience suivante: appuyez sur le bouton\u00a0<strong>Tape entr\u00e9e<\/strong> ci-dessus. Laissez la bo\u00eete de texte d'entr\u00e9e vide ou effacez ce que vous avez d\u00e9j\u00e0 \u00e9crit dedans. Ensuite, appuyez sur\u00a0<strong>Ex\u00e9cuter le test<\/strong>. Vous devriez obtenir une erreur de ce type<\/p>\n<pre>EOFError: EOF when reading a line<\/pre>L'acronyme <strong>EOF<\/strong> signifie\u00a0<strong>E<\/strong>nd <span style=\"color: #000000;\"><strong>O<\/strong>f <strong>F<\/strong>ile (fin de fichier). Cela veut dire que quand votre programme a essay\u00e9 de lire plus d'entr\u00e9es, toutes les lignes d'entr\u00e9es avaient d\u00e9j\u00e0 \u00e9t\u00e9 lues (utilis\u00e9es), ce qui g\u00e9n\u00e8re une erreur.<\/span><\/p>\n<p>Dans le prochain exercice, on vous demande de d\u00e9boguer\u00a0un programme qui ne fonctionne pas et de le faire fonctionner. Notez que le bogue\u00a0n'est pas une erreur de frappe mais plut\u00f4t un <em>bogue\u00a0logique<\/em>: le programme n'a pas \u00e9t\u00e9 pens\u00e9 correctement pour faire son travail, vous devez donc le reformuler un peu.<\/p>\n<p><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'>Echo<\/span><\/div>Ecrivez un programme qui lit une ligne d'entr\u00e9e et \u00e9crit cette m\u00eame ligne deux fois. Par exemple, si l'entr\u00e9e est <code>Echo<\/code>, la sortie devrait \u00eatre<\/p>\n<pre>Echo\r\nEcho<\/pre>R\u00e9parez l'extrait de solution donn\u00e9 ci-dessous. (Ou effacez tout et refaites tout vous-m\u00eame.) \u00a0<a class=\"hintlink\"  id=\"hintlink3\">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='usercode2' id='usercode2'  cols=10 rows=20   class='pyboxCode RW'>\nprint(input())\nprint(input())\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<input type='hidden' id='defaultCode2' value='print(input())\\nprint(input())\\n'><\/input>\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,'5.echo')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(2,descape($('#defaultCode2').val()))\" >Reset code to default<\/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=\"1ef95753ed316b348f71d4da07f52a18\"\/>\n<div id='pbresults2' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>pbInputSwitch(2,\"N\");<\/script>\n<\/p>\n<p>Vous pouvez passez \u00e0 la prochaine le\u00e7on qui traite des instructions\u00a0<code><code>if<\/code><\/code>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans la le\u00e7on pr\u00e9c\u00e9dente, nous avons discut\u00e9 d'entr\u00e9e de l'utilisateur mais nous n'avons pas vraiment expliqu\u00e9 comment l'entr\u00e9e d'un utilisateur est obtenue. En Python, l'utilisateur tape une ligne d'entr\u00e9e \u00e0 la fois. Vous devez utiliser la fonction\u00a0input()\u00a0pour obtenir la prochaine &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/5-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-4645","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4645","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=4645"}],"version-history":[{"count":20,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4645\/revisions"}],"predecessor-version":[{"id":8968,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/4645\/revisions\/8968"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=4645"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}