{"id":6147,"date":"2012-11-05T20:22:21","date_gmt":"2012-11-06T01:22:21","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=6147"},"modified":"2024-12-17T01:30:05","modified_gmt":"2024-12-17T06:30:05","slug":"7a-strings-nl","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/7a-strings-nl\/","title":{"rendered":"07A: Strings"},"content":{"rendered":"<p><em>Les 7 kent drie delen A, B, C die in een willekeurige volgorde kunnen worden doorgenomen.<\/em><\/p>\n<p>Tot nu toe hebben we strings (waarden van het type <code>str<\/code>) alleen nog maar op eenvoudige wijze gebruikt. In deze les zullen we laten zien hoe we strings kunnen bewerken: hoe ze kunnen worden opgesplitst, hoe ze zijn samen te voegen, en hoe de individuele <em>karakters<\/em> (letters, cijfers, spaties, en leestekens) kunnen worden opgespoord die deel uit maken van een string.<\/p>\n<h2>Wat is een string?<\/h2>\n<p>Alle gegevens die op een computer worden bewaard bestaan uit 0-en en 1-en. Inclusief tekst, digitale boeken, plaatjes, liedjes, video's en \"programma's\" zoals spelletjes en toepassingen. Strings, een voorbeeld van tekst, worden op de volgende wijze opgeslagen:<\/p>\n<ul>\n<li>een string is een rij karakters (bijv., de string \"Hello, World!\" bestaat uit 13 karakters waaronder de letters \"H\", \"e\" en tekens als \" \" (spatie) en \"!\")<\/li>\n<li>elk karakter wordt opgeslagen als een getal (bijv. \"H\" wordt opgeslagen als het getal 72, de <a href=\"http:\/\/en.wikipedia.org\/wiki\/ASCII\">ASCII<\/a>\/<a href=\"http:\/\/en.wikipedia.org\/wiki\/Unicode\">Unicode<\/a>-waarde voor \"H\")<\/li>\n<\/ul>\n<p>Getallen worden intern op hun beurt weer bewaard in een 0-1 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Binary_numeral_system\">binair<\/a> formaat.<\/p>\n<h2>Het bewerken van een string door deze te zien als een rij karakters: <code>S[]<\/code><\/h2>\n<p>Om een string te kunnen bewerken is het nodig om de individuele karakters te kunnen selecteren. In Python wordt dit op de volgende manier gedaan: bij een string <code>S<\/code> en een integer <code>index<\/code>, is<\/p>\n<pre>S[index]<\/pre>het karakter van <code>S<\/code> op positie <code>index<\/code>.<b>\u00a0<\/b>In Python\u00a0begint de string bij index 0: dus is <code>S[0]<\/code> het eerste karakter en <code>S[1]<\/code>\u00a0het tweede karakter, enz. In \"Hello, World!\" bestaat de lijst van karakters uit:<\/p>\n<pre>Index   : 0  1  2  3  4  5  6  7  8  9 10 11 12\nKarakter: H  e  l  l  o  ,     W  o  r  l  d  !<\/pre>Merk op dat het karakter op index 6 een spatie is.<\/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> In veel andere programmeertalen bestaat er een speciaal type voor karakters. In Python zijn karakters hetzelfde als strings van lengte 1, <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=ch%20%3D%20%22Hi%22%5B0%5D%0Aprint%28ch%29%0Aprint%28type%28ch%29%29%0Aprint%28len%28ch%29%29\" target=\"_blank\">met als type <code>str<\/code><\/a>. <\/span><\/td><\/table><\/p>\n<h2>Het aantal karakters in een string vaststellen: <code>len<\/code><\/h2>\n<p>Om het aantal karakters van een string te achterhalen gebruiken we de Python-functie <code>len<\/code>. Zo is bijvoorbeeld\u00a0<code>len(\"Hello, World!\")<\/code> gelijk aan 13.<\/p>\n<div class='pybox modeNeutral' id='pybox0'>\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'>Laatste karakter<\/span><\/div><div>Welke expressie kan worden gebruikt om het <strong>laatste<\/strong> karakter van een string <code>S<\/code> te bepalen?<\/div><label>Your choice: <\/label><select id=\"pyselect0\"><option value=\"d\" selected>Select one<\/option><option value=\"w\">S[len(S)+1]<\/option><option value=\"r\">S[len(S)-1]<\/option><option value=\"w\">S[len(S)]<\/option><\/select><div class='pyboxbuttons'><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"7a.last\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick='pbMultiCheck(0)'\/><\/div><div class=\"pbresults\" id=\"pyMultiResults0\"><\/div><div class=\"epilogue\">Juist! <code>len(S)<\/code> is weliswaar het totaal aantal karakters in <code>S<\/code>; echter, omdat men begint met index <code>0<\/code>, heeft het laatste karakter index <code>len(S)-1<\/code>.<\/div><\/div>\n<p>Hier volgt een voorbeeld van het gebruik van <code>len<\/code> en <code>[]<\/code>.<br \/>\n<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'>De lengte van een string en karakters<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nmagic = 'Abracadabra!'\nprint(magic)\nprint(len(magic))\nprint(magic[0], magic[1], magic[len(magic)-1])<\/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<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=\"1fcd06298e43ea3a100bfe7092475ec9\"\/>\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><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> Je kunt <a href=\"http:\/\/www.cs.utexas.edu\/users\/EWD\/transcriptions\/EWD08xx\/EWD831.html\">hier<\/a> in het Engels lezen over de reden waarom de index in Python en vele andere programmeertalen bij 0 begint. <\/span><\/td><\/table><\/p>\n<h2>Delen van een string: <code>S[:]<\/code><\/h2>\n<p>Een deel van een string heet een <strong>substring<\/strong>. Zo zijn bijvoorbeeld de strings \"her\" en \"hal\" substrings van \"herhaling\". Om een substring in Python te bepalen, gebruiken we de syntax<\/p>\n<pre>S[beginIndex:eindIndex]<\/pre>.<br \/>\nHet levert de substring startend bij index <strong>beginIndex<\/strong> en eindigend bij <strong>eindIndex-1<\/strong>. Probeer eerst de uitvoer van het volgende programma te voorspellen voor dat je het uitvoert.<br \/>\n<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'>Substrings<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nmyString = 'Weighty'\nprint(myString[1:6])\nprint('magic'[3:3])\nprint('chump'[0:4])<\/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=\"45119d9534f7774b00f02ed90785927c\"\/>\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><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> Merk op het karakter op index <code>beginIndex<\/code>\u00a0<strong>wel<\/strong> deel uitmaakt van <code>S[beginIndex:eindIndex]<\/code>, en het karakter op index <code>eindIndex<\/code> <strong>niet<\/strong>. Dit geeft vaak aanleiding tot fouten. Het heeft weliswaar ook een aardig bijeffect. Zo is vanwege deze keuze, de lengte van de substring\u00a0<code>S[i:j]<\/code>\u00a0altijd gelijk aan <code>j-i<\/code>. <\/span><\/td><\/table><\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform3\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox3'>\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'>Een string inkorten<\/span><\/div>Schrijf een programma dat een string inleest met behulp van <code>input()<\/code>, en als uitvoer dezelfde string geeft maar dan zonder het eerste en laatste karakter. (Je mag aannemen dat de invoerstring tenminste een lengte heeft van twee karakters.) Zo zal bijvoorbeeld bij invoer\u00a0<code>Python<\/code> een correct programma <code>ytho<\/code> afdrukken.<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='usercode3' id='usercode3'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory3' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput3\">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='submit3' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch3\" value=\"Input Switch\" onclick=\"pbInputSwitch(3,'N')\" ><\/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><select id='pbSelect3' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(3,'7a.firstlast')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(3);\" >Help<\/option>\n<\/select><\/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=\"10f95a199e2a49e737503bb346087f85\"\/>\n<div id='pbresults3' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(3);});pbInputSwitch(3,\"N\");<\/script>\n<\/p>\n<h2>Strings aan elkaar plakken: <code>+<\/code><\/h2>\n<p>We weten allemaal dat 1+2=3. Met strings krijgen we het volgende resultaat:<br \/>\n<form class=\"pbform\" action=\"#\" id=\"pbform4\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox4'>\n<div class=\"heading\"><span class='type'>Example: <\/span><span class='title'>Strings optellen<\/span><\/div> <div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 84px;'><textarea wrap='off' name='usercode4' id='usercode4'  cols=10 rows=3 readonly='readonly'  style = 'height : 84px;'  class='pyboxCode RO'>\nresult = 'een' + 'twee'\nprint(result)\nprint(len(result))<\/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=\"8c668d1f1127bf383b4bae041d332bb8\"\/>\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>Zoals te zien is, is het effect van <code>S+T<\/code> een nieuwe string die begint met <code>S<\/code> onmiddellijk gevolgd door <code>T<\/code>. Dit aan-elkaar-plakken wordt ook <strong>concatenatie<\/strong> genoemd.<\/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'>Heads and Tails<\/span><\/div>Schrijf een programma dat een string inleest met behulp van <code>input()<\/code>, en als uitvoer dezelfde string geeft maar waarbij het eerste en het laatste karakter zijn <strong>omgewisseld<\/strong>. (Je mag aannemen dat de string tenminste lengte 2 heeft. Zo zal bijvoorbeeld bij invoer\u00a0<code>kaart<\/code> een correct programma <code>taark<\/code> afdrukken. Hint: gebruik hierbij de oplossing van je vorige programma als deel van het antwoord.<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 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<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,'7a.swap')\" >History<\/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=\"c5ee1959277f59799202dcf5b54357c5\"\/>\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<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> Wanneer je een string en een getal wilt samenvoegen, moet je het getal eerst omzetten in een string. Anders krijg je \u00e9\u00e9n van twee foutmeldingen, afhankelijk van de volgorde waarin je het probeert. Voer dit programma uit om de foutmeldingen te zien die kunnen optreden. <form class=\"pbform\" action=\"#\" id=\"pbform6\" method=\"POST\">\n<div class='pybox modeNeutral scramble facultative' id='pybox6'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div>Voer het programma uit en bekijk de foutmelding. Zet daarna de regels in een andere volgorde om de tweede samenvoeg-foutmelding te zien.<ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble6\">\n <li class=\"pyscramble\">print(&quot;high &quot; + 5)<\/li>\n <li class=\"pyscramble\">print(110 + &quot; percent&quot;)<\/li>\n<\/ul>\n<input type='hidden' id='usercode6' name='usercode6'\/>\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=\"42f55e078525cdaf706e417b10880dee\"\/>\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>\nHier is een correct voorbeeld: de\u00a0<code>str()<\/code>-functie vertaalt het getal in een string voor de samenvoeging.<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>Vertalen van een getal in een string met <code>str()<\/code><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode7' id='usercode7'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nprint(\"high \" + str(5))<\/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=\"daa4e48441b54e974cbdf799ca6e292e\"\/>\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 <\/span><\/td><\/table><\/p>\n<p>Zoals we hebben aangegeven in Les 4, kun je strings vermenigvuldigen met een geheel getal. Zo is <code>S * n<\/code> een afkorting voor <code>S + S + ... + S<\/code>, <code>n<\/code> keer.<\/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>String-vermenigvuldiging<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'>\nprint(\"hots\" * 2)\nprint(\"mi\"+(\"s\"*2+\"i\")*2+\"ppi\")<\/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=\"925f6d8d9c2560c5cb1806844f936b21\"\/>\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<h2>Codes voor karakters: <code>ord<\/code>, <code>chr<\/code><a name=\"ord\"><\/a><\/h2>\n<p>Zoals we in de inleiding van deze les al vermeldden, wordt in de computer elk karakter opgeslagen als een getal. Welk karakter komt overeen met welk getal? In het algemeen hangt dat af van de <em>codering<\/em> die je gebruikt, maar vrijwel alle moderne computers interpreteren de getallen tussen 32 en 255 op dezelfde manier als een karakter. Hier volgt de lijst van de karakters die overeen komen met de getallen tussen 32 en 127:<\/p>\n<pre>ord: 32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47\nchr:      !   \"   #   $   %   &amp;   '   (   )   *   +   ,   -   .   \/\nord: 48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63\nchr:  0   1   2   3   4   5   6   7   8   9   :   ;   &lt;   =   &gt;   ?\nord: 64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79\nchr:  @   A   B   C   D   E   F   G   H   I   J   K   L   M   N   O\nord: 80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95\nchr:  P   Q   R   S   T   U   V   W   X   Y   Z   [   \\   ]   ^   _\nord: 96  97  98  99  100 101 102 103 104 105 106 107 108 109 110 111\nchr:  `   a   b   c   d   e   f   g   h   i   j   k   l   m   n   o\nord: 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127\nchr:  p   q   r   s   t   u   v   w   x   y   z   {   |   }   ~<\/pre>Dit is een zogenaamde <em>ASCII-tabel<\/em>. Later, in les 8, zul je een programma schrijven om deze tabel te genereren.<br \/>\nHet is niet zinvol om de hele tabel uit je hoofd te kennen, maar er zijn een paar aspecten die nuttig zijn om je te herinneren:<\/p>\n<ul>\n<li>de kleine letters a, b, c, ..., z hebben opeenvolgende codes<\/li>\n<li>de hoofdletters A, B, C, ..., Z hebben opeenvolgende codes<\/li>\n<li>de cijfers 0, 1, 2, ..., 9 hebben opeenvolgende codes<\/li>\n<\/ul>\n<p>Het karakter met code 32 is de spatie, terwijl het karakter met code 127 een van de speciale besturingskarakters (Eng.: <em>control characters<\/em>)\u00a0is. Enkele speciale control karakters zijn die met code 9 (tab), en 10 en 13 die worden gebruikt om naar een <a href=\"http:\/\/en.wikipedia.org\/wiki\/Newline\">nieuwe regel<\/a> te gaan.<\/p>\n<p>In Python kun je een karakter omzetten naar zijn bijbehorende code door middel van de functie\u00a0<code>ord<\/code>. De functie\u00a0<code>chr<\/code>\u00a0doet het omgekeerde: het argument is een getal en de resultaatwaarde is het karakter met die code.<br \/>\n<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>Voorbeeld van<code>ord<\/code> en <code>chr<\/code> <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'>\nprint(ord('a'), ord('b'), ord('A'), ord('B'), ord(' '))\nprint(chr(35), chr(43), chr(100))<\/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=\"a351e1806345a8af896f5e992e2af359\"\/>\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><form class=\"pbform\" action=\"#\" id=\"pbform10\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox10'>\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'>De volgende letter<\/span><\/div>Schrijf een programma dat een karakter als invoer neemt (een string met lengte 1), waarbij we aannemen dat het een hoofletter is; en de uitvoer is de volgende letter uit het alfabet. Maar als de input 'Z' is, dan moet de output 'A' zijn. (Je zult daarbij een <code>if<\/code>-opdracht nodig hebben. Voor nog een aanwijzing <a class=\"hintlink\"  id=\"hintlink11\">klik hier<\/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='usercode10' id='usercode10'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory10' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput10\">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='submit10' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch10\" value=\"Input Switch\" onclick=\"pbInputSwitch(10,'N')\" ><\/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><select id='pbSelect10' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(10,'7a.lowercase')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(10);\" >Help<\/option>\n<\/select><\/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=\"bd25abf9ebed63cfa9c8373ec9ab6f2f\"\/>\n<div id='pbresults10' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(10);});pbInputSwitch(10,\"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> Sommige systemen ondersteunen slechts karakters met code tussen de 32 en 127; andere systemen ondersteunen karakters tot code 255 of zelfs 65535; in Unicode bestaan honderdduizenden karakters. Je kunt meer lezen over de geschiedenis <a href=\"http:\/\/nl.wikipedia.org\/wiki\/ASCII_%28tekenset%29\">hier<\/a> of <a href=\"http:\/\/www.joelonsoftware.com\/articles\/Unicode.html\">hier<\/a>. <\/span><\/td><\/table><\/p>\n<p>Hier volgen nog twee oefeningen. Daarmee sluiten we het hoofdstuk af.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform12\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox12'>\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'>Potjeslatijn<\/span><\/div><strong>Potjeslatijn<\/strong> is een onzin-taal. Om een woord vanuit het Engels om te zetten naar potjeslatijn, verplaats je de eerste letter naar het einde en je voegt er daarna \"ay\" aan toe. Zo wordt in het potjeslatijn bijvoorbeeld, <em>monkey<\/em> <em>onkeymay<\/em>, en wordt <em>word<\/em> <em>ordway<\/em>. Schrijf een programma dat een enkelvoudig woord als invoer neemt en het woord vervolgens omzet naar het potjeslatijn. (In werkelijkheid heeft potjeslatijn complexere regels, maar die laten we achterwege voor wat deze oefening betreft.)<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='usercode12' id='usercode12'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory12' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput12\">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='submit12' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch12\" value=\"Input Switch\" onclick=\"pbInputSwitch(12,'N')\" ><\/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><select id='pbSelect12' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(12,'7a.piglatin')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(12);\" >Help<\/option>\n<\/select><\/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=\"909b14669022b7fa934e01dacbb7c049\"\/>\n<div id='pbresults12' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(12);});pbInputSwitch(12,\"N\");<\/script>\n<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform13\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox13'>\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'>The Name Game<\/span><\/div><strong>The Name Game<\/strong> (het namenspel) laat je een liedje maken bij een naam van iemand. Luister naar het liedje en probeer een idee te krijgen hoe het werkt: <div style='text-align: center;'>\n<iframe width='560' height='315' src='https:\/\/www.youtube.com\/embed\/NeF7jqf0GU4?rel=0' frameborder='0' allowfullscreen>\n<\/iframe>\n<\/div> Je programma moet de naam van een persoon als invoer krijgen, \"pearl\" bijvoorbeeld, en drukt het liedje af, bv. <\/p>\n<pre>pearl, pearl, bo-bearl<br\/>banana-fana fo-fearl<br\/>fee-fi-mo-mearl<br\/>pearl!<\/pre> Merk op dat de naam drie keer terugkomt; en de naam komt verder nog drie keer voor waarbij de eerste letter vervangen wordt door b, f, of m. (In werkelijkheid heeft het liedje complexere regels, maar die laten we achterwege in verband met het doel van deze oefening.)<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='usercode13' id='usercode13'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory13' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput13\">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='submit13' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch13\" value=\"Input Switch\" onclick=\"pbInputSwitch(13,'N')\" ><\/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><select id='pbSelect13' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(13,'7a.namegame')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(13);\" >Help<\/option>\n<\/select><\/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=\"79db51379b935112cdd529a487fb0d4b\"\/>\n<div id='pbresults13' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(13);});pbInputSwitch(13,\"N\");<\/script>\n<\/p>\n<p><em>Ga verder met de volgende les!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les 7 kent drie delen A, B, C die in een willekeurige volgorde kunnen worden doorgenomen. Tot nu toe hebben we strings (waarden van het type str) alleen nog maar op eenvoudige wijze gebruikt. In deze les zullen we laten &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/7a-strings-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-6147","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6147","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=6147"}],"version-history":[{"count":48,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6147\/revisions"}],"predecessor-version":[{"id":15963,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6147\/revisions\/15963"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=6147"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}