{"id":6155,"date":"2012-11-05T20:26:32","date_gmt":"2012-11-06T01:26:32","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=6155"},"modified":"2019-03-05T05:04:37","modified_gmt":"2019-03-05T10:04:37","slug":"12-tips-nl","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/12-tips-nl\/","title":{"rendered":"12: Tips"},"content":{"rendered":"<p>Deze les bevat een aantal weetjes over Python die niet aan bod zijn gekomen in de voorgaande lessen.<\/p>\n<h2><code>print<\/code>-opties<\/h2>\n<p>De enige manier om uitvoer af te drukken die we tot nu toe gezien hebben is het gebruik van de functie\u00a0<code>print()<\/code>,\u00a0waarmee meerdere waarden kunnen worden afgedrukt, gescheiden door een spatie, en afgesloten met een regeleinde (waardoor verdere uitvoer op een nieuwe regel begint). In feite aanvaardt <code>print<\/code> een paar\u00a0<em>sleutelwoordargumenten<\/em>\u00a0(Eng.: <em>keyword arguments<\/em>)\u00a0die het mogelijk maken dit gedrag aan te passen aan je behoeften.<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Om een string <code>S<\/code>\u00a0te gebruiken als scheiding tussen de waarden in plaats van een spatie: voeg het argument\u00a0<code>sep = \u00abS\u00bb<\/code> toe<\/li>\n<li>Om een string\u00a0<code>S<\/code>\u00a0te gebruiken als afsluiting in plaats van een regeleinde: voeg het argument <code>end = \u00abS\u00bb<\/code> toe<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Deze taalvoorziening, <em>sleutelwoordargumenten<\/em>, is het gemakkelijkst te demonstreren met een paar voorbeelden.<\/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>Voorbeelden van\u00a0<code>sep<\/code> en\u00a0<code>end<\/code>. Kijk naar het effect van elke <code>print<\/code>-opdracht.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode0' id='usercode0'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\nprint('D', 'A', 'S', 'H', sep='-')\nprint('De prijs is $', 12*5, sep='')\nprint('Deze twee regels', end='')\nprint(' zullen op een regel verschijnen.')\nprint('Mooi', end='!')<\/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=\"fdb582f84bcfb228536e8d64991b49c0\"\/>\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>De sleutelwoordargumenten moeten aan het einde van de lijst met argumenten worden toegevoegd; anders zal een <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=print%28end%3D%27%27%2C%205%29\" target=\"_blank\">fout<\/a> optreden. Wanneer je ze beide gebruikt kunnen ze in willekeurige volgorde worden opgegeven.<\/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'>Alfabet-aerobics<\/span><\/div>Debug het volgende programma, door gebruik te maken van hetgeen we zojuist geleerd hebben, zodanig dat het alfabet in hoofdletters <em>op \u00e9\u00e9n regel<\/em> wordt afgedrukt.<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'>\nfor c in range(0, 26):\n print(chr(ord('A')+c))\n<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<input type='hidden' id='defaultCode1' value='for c in range(0, 26):\\n print(chr(ord(\\u0027A\\u0027)+c))\\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='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(1)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(1,'N')\" ><\/td>\n<td><input type='button' name='history' value=\"History\" onclick=\"historyClick(1,'12.alphabet')\" ><\/td>\n<\/tr><\/table><select id='pbSelect1' class='selectmore'><option name='more'>More actions...<\/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=\"6e475d3e043123c9f216990a53591fea\"\/>\n<div id='pbresults1' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(1);});document.getElementById(\"submit1\").value = \"Run program\";document.getElementById(\"inputInUse1\").value = \"N\";<\/script>\n<\/p>\n<h2>Namen die zijn toegestaan voor variabelen en functies<\/h2>\n<ul>\n<li>Namen kunnen bestaan uit letters, getallen en het underscore (<code>_<\/code>)-teken<\/li>\n<li>Het eerste teken van een naam moet een letter zijn.<\/li>\n<li>Python maakt onderscheid tussen hoofdletters en kleine letters.<\/li>\n<\/ul>\n<p>Zo is\u00a0<code>my_3rd_int<\/code>\u00a0een naam die is toegestaan, maar <code>3rd_int<\/code> is dat niet.<\/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=\"title\">Example<\/span><\/div>Een voorbeeld over onderscheid tussen hoofdletters en kleine letters.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\ngreaterOde = \"Truth is beauty, beauty truth\"\ngreatErode = \"Wind erosion\"\nprint(greaterOde) # still poetry<\/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=\"045208e9dc7dd2820a91bab0e459ef7b\"\/>\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<h2>Aflopende\u00a0<code>for<\/code>-lussen &amp; andere<\/h2>\n<p>Herinner je je nog hoe we lieten zien hoe\u00a0<code>for<\/code>-lussen getallen kunnen doorlopen in opklimmende volgorde?<\/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>Een\u00a0<code>for<\/code>-lus<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode3' id='usercode3'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nfor i in range(0, 5):\n print(i)<\/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=\"48e0123a12ad2574217df6c6fcebe640\"\/>\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>Vaak is het nodig om een\u00a0<code>for<\/code>-lus te schrijven die getallen doorloopt in\u00a0<em>dalende<\/em>\u00a0volgorde (van het grootste naar het kleinste). Om dat te kunnen doen gebruiken we\u00a0<code>range<\/code>\u00a0met een derde argument met de naam\u00a0<em>stap<\/em>:<\/p>\n<p><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>Negatieve stap bij\u00a0<code>range<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode4' id='usercode4'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nfor i in range(5, 1, -1):\n print(i)<\/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=\"61f7b1cfa7128b1075811c3bc806df3a\"\/>\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>Wanneer je even nadenkt, zul je kunnen vaststellen dat\u00a0<code>range(0, 5)<\/code>\u00a0hetzelfde is als \u00a0<code>range(0, 5, 1)<\/code>: de\u00a0<em>verstek- ophoging\u00a0<\/em>is 1. Denk eraan dat\u00a0<code>range(start, stop, step)<\/code>\u00a0al stopt, een stap v\u00f3\u00f3rdat <code>stop<\/code> bereikt wordt. Voor nog meer informatie, zie de\u00a0<a href=\"http:\/\/docs.python.org\/py3k\/library\/functions.html#range\">Python<\/a>-handleiding.<\/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'>Lucky Sevens<\/span><\/div>Schrijf een programma waarbij je een\u00a0<code>for<\/code>-lus gebruikt met stapgrootte 10, om alle getallen met 2 cijfers af te drukken die eindigen op een 7, in oplopende volgorde.<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 class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit5' value=' '\/><\/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<td><input type='button' name='history' value=\"History\" onclick=\"historyClick(5,'12.sevens')\" ><\/td>\n<\/tr><\/table><select id='pbSelect5' class='selectmore'><option name='more'>More actions...<\/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=\"3ddfe6a0b90f746bba2e0701b5b798d4\"\/>\n<div id='pbresults5' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(5);});document.getElementById(\"submit5\").value = \"Run program\";document.getElementById(\"inputInUse5\").value = \"N\";<\/script>\n<\/p>\n<p>Op dezelfde manier kun je <code>string[x:y:-1]<\/code> gebruiken om een deel van een string om te draaien.<\/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=\"title\">Example<\/span><\/div>Negatieve stap bij substrings<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode6' id='usercode6'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nstringVoorbeeld='abcdef'\nstringVoorbeeld=stringVoorbeeld[4:1:-1]\nprint(stringVoorbeeld)<\/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<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(6)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(6,'N')\" ><\/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=\"ad47d83edfd5c12cc07843f3f942a764\"\/>\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>Zo geeft <code>string[x:y:2]<\/code> een substring van <em>string<\/em> met de tekens op positie <code>x, x+2, x+4, ...<\/code><\/p>\n<p>Bij een\u00a0<code>for<\/code>-lus is er een andere manier om een aflopende volgorde te realiseren:\u00a0<code>reversed(range(x, y))<\/code>. De lus gaat dan van\u00a0<code>y-1<\/code>\u00a0tot\u00a0<code>x<\/code>\u00a0in afnemende volgorde.<\/p>\n<h2>Minder code schrijven<\/h2>\n<p>Python kent verschillende manieren om de hoeveelheid code te verminderen; we laten er hier een paar zien:<\/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 zullen we er niet altijd gebruik van maken, omdat daardoor het programma soms moeilijker leesbaar wordt. <\/span><\/td><\/table><\/p>\n<h3>Toekenningsopdrachten<\/h3>\n<p>In Python kan je schrijven \"<code>x += 1<\/code>\"; dat betekent \"voeg 1 toe aan <code>x<\/code>\". Het is een verkorte schrijfwijze voor \"<code>x = x + 1<\/code>\" zoals we hieronder zullen laten zien:<\/p>\n<p><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>Voorbeelden van\u00a0<code>+=<\/code>, <code>-=<\/code>, <code>*=<\/code>, <code>\/=<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 240px;'><textarea wrap='off' name='usercode7' id='usercode7'  cols=10 rows=9 readonly='readonly'  style = 'height : 240px;'  class='pyboxCode RO'>\nx = 8\nx += 2\nprint(x)\nx -= 1\nprint(x)\nx \/= 3\nprint(x)\nx *= 10\nprint(x)<\/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=\"657dbfafceda6ebf4bb45614201a5a12\"\/>\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<\/p>\n<p>Op dezelfde manier bestaan er operatoren voor geheeltallige deling (<code>\/\/=<\/code>), modulo (<code>%=<\/code>), en machtsverheffen (<code>**=<\/code>).<\/p>\n<h3>Een lichaam op dezelfde regel (Eng.: <em>inline blocks<\/em>)<\/h3>\n<p>We hebben een aantal opdrachten gezien die worden gevolgd door een ingesprongen \"lichaam\" met code: <code>for<\/code>, <code>if<\/code>, <code>else<\/code>, <code>elif<\/code>, <code>while<\/code>, en <code>def<\/code>, bijvoorbeeld:<\/p>\n<pre>if x==y:\r\n \u00a0\u00ablichaam\u00bb #ingesprongen, meerdere regels<\/pre>In het speciale geval dat een <code>\u00ablichaam\u00bb<\/code> maar \u00e9\u00e9n regel bevat kun je dat in Python ook als volgt schrijven:<\/p>\n<pre>if x==y: \u00ablichaam\u00bb # enkele regel<\/pre>Hier volgt een voorbeeld:<\/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>Opdracht met lichaam op \u00e9\u00e9n regel<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'>\ndef square(x): return x*x\nfor i in range(0, 6): print(square(i))<\/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=\"b3ade191aee4175bf56777c569c34c2f\"\/>\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<p>Dit is echter wel beperkt: een samengesteld lichaam met een dubbele punt erin (<code>if<\/code>, <code>for<\/code>, etc.) kan niet worden gebruikt als een <em>inline block<\/em>. Bijvoorbeeld <code>if 2&gt;1: if 4&gt;3: print()<\/code> geeft een <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=if%202%26gt%3B1%3A%20if%204%26gt%3B3%3A%20print%28%29\" target=\"_blank\">syntax error<\/a>.<\/p>\n<h3>Gelijktijdige toekenningen<\/h3>\n<p>Python staat je toe meerdere toekenningen tegelijk te doen op \u00e9\u00e9n regel:<\/p>\n<p><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>Gelijktijdige toekenningen<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'>\nx, y = 3, 4\nprint('x =', x, 'and y =', y)<\/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=\"4c8e080f4888bb5c86d52fe2d2145597\"\/>\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>Merk op dat dit je in staat stelt om de <a href=\"\/1-variables-nl\/\">verwissel-opgave<\/a> met een programma van 1 regel op te lossen!<\/p>\n<h3>Vergelijkingen Rijgen<\/h3>\n<p>Python staat je ook toe om meerdere vergelijkingen te combineren:<br \/>\n<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>Vergelijkingen rijgen<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode10' id='usercode10'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nage = int(input())\nif 12 &lt; age &lt; 20: # hetzelfde als (12 &lt; age) and (age &lt; 20) \n print('You are a teenager!')<\/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<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><\/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=\"30131362f1ebc652eda7da14df644c7d\"\/>\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>\nElke keten <code>v1 c1 v2 c2 v3 ...<\/code> waar alle <code>v<\/code> waarden zijn en alle <code>c<\/code> vergelijkinsoperatoren, wordt hetzelfde behandeld als <code>(v1 c1 v2) and (v2 c2 v3) and ...<\/code><\/p>\n<h3>Standaardwaarden voor <code>[:]<\/code> en <code>range()<\/code><\/h3>\n<p>Je kan de start- en\/of eindwaarden ook weglaten wanneer je de substring-operator <code>[:]<\/code> gebruikt. (Dit geldt ook voor lijsten, zoals we in de volgende les zullen zien.) De standaardwaarde van de eerste index is <code>0<\/code> (het begin van de string) en de standaardwaarde van de laatste index is de lengte van de string. Op dezelfde manier is <code>range(n)<\/code> een afkorting voor <code>range(0, n)<\/code>.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform11\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox11'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Gebruik maken van de standaardwaarde van <code>[:]<\/code>\u00a0en\u00a0<code>range()<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode11' id='usercode11'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nS = \"Toronto\"\nprint(S[3:])                  # rechtersubstring, \"onto\"\nprint(S[:2])                  # linker substring, \"To\"\nfor i in range(5): print(i*i) # prints 0, 1, .. 16<\/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<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(11)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(11,'N')\" ><\/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=\"5a90f3bda4d2982a73f4b4bc5efbebed\"\/>\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<\/p>\n<h1><code>None<\/code><\/h1>\n<p>Sommige functies geven een waarde terug als hun belangrijkste effect, zoals\u00a0<code>abs(x)<\/code>, maar andere functies die belangrijker zijn vanwege hun neveneffecten, zoals\u00a0<code>print()<\/code>, geven de verstekwaarde (Eng.:\u00a0<em>default value<\/em>)\u00a0<code>None<\/code> terug:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform12\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox12'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Het resultaat van <code>print<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 136px;'><textarea wrap='off' name='usercode12' id='usercode12'  cols=10 rows=5 readonly='readonly'  style = 'height : 136px;'  class='pyboxCode RO'>\nresult = print('Anything works here')\nprint(result)\ndef forgotToReturn(x):\n x*x\nprint(forgotToReturn(5))<\/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<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><\/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=\"9b7f3f4bb01953a5fbbe924ce2aee475\"\/>\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<\/p>\n<p>We gebruiken <code>None<\/code> als een speciale waarde in Python wanneer er geen andere waarde geschikt is. Als je <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=print%28type%28None%29%29\" target=\"_blank\">type(None)<\/a> uitvoert zie je dat <code>None<\/code> zelfs z'n eigen type heeft: <code>NoneType<\/code>. Laten we ook gelijk even bekijken wat het type van een type is:<\/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>Het type van een type<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode13' id='usercode13'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nx = 23432\nprint(x, type(x), type(type(x)), type(type(type(x))))<\/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<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><\/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=\"aea32d11990220cd2435630a82e7da88\"\/>\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>In de volgende opgave moet je de tussenresultaten achterhalen van een lange opdracht opgebouwd uit\u00a0<code>type<\/code> en <code>print<\/code>.<\/p>\n<div class='pybox modeNeutral multiscramble' 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'>Scramble Exercise: <\/span><span class='title'>One None<\/span><\/div>De uitvoer van <code>print(type(print(type(type(print(print()))))))<\/code> bestaat uit 4 regels. Zet ze in de goede volgorde.<ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble14\">\n<li id=\"pyli14_2\" class=\"pyscramble\" >&lt;class 'type'&gt;<\/li>\n<li id=\"pyli14_1\" class=\"pyscramble\" >None<\/li>\n<li id=\"pyli14_3\" class=\"pyscramble\" >&lt;class 'NoneType'&gt;<\/li>\n<li id=\"pyli14_0\" class=\"pyscramble\" ><i>&laquo;blank line&raquo;<\/i><\/li>\n<\/ul>\n<div class=\"pyboxbuttons\"><input type='button' value='Check answer' onclick='pbMultiscrambleCheck(14)'\/>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"12.ordering\"\/>\n<\/div><div id=\"pbresults14\" class=\"pbresults\"><\/div><div class=\"epilogue\">Correct!<\/div><\/div>\n<p>Laten we het hier maar even bij houden. Je kunt nu door naar de volgende les!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Deze les bevat een aantal weetjes over Python die niet aan bod zijn gekomen in de voorgaande lessen. print-opties De enige manier om uitvoer af te drukken die we tot nu toe gezien hebben is het gebruik van de functie\u00a0print(),\u00a0waarmee &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/12-tips-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-6155","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6155","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=6155"}],"version-history":[{"count":25,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6155\/revisions"}],"predecessor-version":[{"id":11221,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6155\/revisions\/11221"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=6155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}