{"id":6145,"date":"2012-11-05T20:21:21","date_gmt":"2012-11-06T01:21:21","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=6145"},"modified":"2024-05-25T13:38:25","modified_gmt":"2024-05-25T17:38:25","slug":"5-input-nl","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/5-input-nl\/","title":{"rendered":"05: Invoer"},"content":{"rendered":"<p>In de vorige les kwam invoer door de gebruiker aan de orde, maar we hebben niet echt uitgelegd hoe de invoer van de gebruiker wordt verkregen. In Python typt de gebruiker \u00e9\u00e9n regel met invoer per keer. Je dient de functie <code><code>input()<\/code><\/code> te gebruiken om een regel invoer van de gebruiker te verkrijgen. De functie <code>input()<\/code> neemt geen argumenten en geeft altijd een <code>str<\/code>\u00a0(een tekenreeks) terug als <em>resultaatwaarde<\/em>.<\/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> Op deze website moet alle invoer worden gespecificeerd voordat het programma wordt uitgevoerd. Maar als je\u00a0<a href=\"\/run-at-home\/\">Python thuis uitvoert<\/a> dan zal\u00a0<code>input()<\/code> het programma pauzeren en wachten totdat de gebruiker een regel tekst intypt. <\/span><\/td><\/table><\/p>\n<p>Hier is een voorbeeld van het gebruik van <code>input()<\/code> om invoer te verkrijgen. Het nakijkprogramma zal automatisch zelf de invoer voor het programma bepalen.<\/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>Echo\u00ebn van een regel tekst.<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(\"De eerste regel invoer is:\", 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=\"21eda0a16ceccde00a3795faca5a8016\"\/>\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>Merk op dat in de laatste testcase, de tweede invoerregel niet werd ingelezen, vanwege het feit dat <code>input()<\/code> slechts \u00e9\u00e9n keer werd aangeroepen. Door <code>input()<\/code> meerdere malen aan te roepen, kun je meerdere regels invoeren.<\/p>\n<p>Van nu af aan kun je bij de meeste oefeningen je eigen testdata invoeren; hier volgt een eenvoudig voorbeeld. Zoals we in les 4 zagen, kan de string die via <code>input()<\/code> wordt verkregen worden omgezet in een <code>int<\/code> of indien gewenst in een\u00a0<code>float<\/code>.<\/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>Het gebruik van <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()\naFloat = float(inputString)\nprint(aFloat + 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=\"47d7b07f7be8accb37586f6226f3d3d9\"\/>\n<div id='pbresults1' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>pbInputSwitch(1,\"N\");<\/script>\n<\/p>\n<p>Probeer het volgende: druk op de knop <strong>Tik invoer in<\/strong>\u00a0hierboven. Laat het invoervenster leeg, of verwijder alle tekst die je hebt ingetypt. Druk dan op: <strong>Test uitvoeren<\/strong>. Je dient dan een foutmelding te krijgen zoals:<\/p>\n<pre>EOFError: EOF when reading a line<\/pre>De afkorting <strong>EOF<\/strong> staat voor <strong>E<\/strong>nd <strong>O<\/strong>f <strong>F<\/strong>ile (einde van het bestand). Deze foutmelding krijg je als je programma invoer probeert te lezen wanneer het einde van de invoer al bereikt is.<\/p>\n<p>Bij de volgende oefening wordt je gevraagd om het programma, dat niet werkt, te debuggen (de fout(en) eruit te halen) en te doen werken. Merk op dat de bug (fout) geen typefout is, maar eerder een <em>logische fout<\/em>: het ontwerp van het programma is niet correct; je moet het ontwerp enigszins aanpassen.<\/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>Schrijf een programma dat \u00e9\u00e9n regel tekst inleest en dan diezelfde regel tweemaal afdrukt. Is bijvoorbeeld de invoer <code>Echo<\/code> dan dient de uitvoer te zijn: <\/p>\n<pre>Echo<br\/>Echo<\/pre> Corrigeer de voorbeeldoplossing. (Of wis de hele voorbeeldoplossing en begin opnieuw.)<a class=\"hintlink\"  id=\"hintlink3\">Hint<\/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=\"c46092927452986086a5249a3c9a0295\"\/>\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>Je kunt doorgaan met de volgende les; die gaat over <code><code>if<\/code><\/code>-opdrachten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In de vorige les kwam invoer door de gebruiker aan de orde, maar we hebben niet echt uitgelegd hoe de invoer van de gebruiker wordt verkregen. In Python typt de gebruiker \u00e9\u00e9n regel met invoer per keer. Je dient de &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/5-input-nl\/\">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-6145","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6145","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=6145"}],"version-history":[{"count":16,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6145\/revisions"}],"predecessor-version":[{"id":15921,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6145\/revisions\/15921"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=6145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}