{"id":6170,"date":"2012-11-05T20:34:31","date_gmt":"2012-11-06T01:34:31","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=6170"},"modified":"2014-11-24T10:28:26","modified_gmt":"2014-11-24T15:28:26","slug":"15b-python-pushups-nl","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/15b-python-pushups-nl\/","title":{"rendered":"15B: Python push ups"},"content":{"rendered":"<p><em>Oefeningen 15A, 15B, en 15C kunnen in elke willekeurige volgorde worden doorgewerkt.<\/em><\/p>\n<p>In deze les komen verschillende middelgrote programma's aan bod waarmee de tools in eerdere lessen gecombineerd aan de orde komen.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform0\" method=\"POST\">\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'>Coding Exercise: <\/span><span class='title'>Veertig graden onder nul<\/span><\/div>In deze oefening dien je een temperatuur-vertaalprogramma te schrijven dat graden Fahrenheit vertaalt in graden Celsius en omgekeerd. Je hebt de volgende twee formules nodig die de temperatuur <em>f<\/em> in Fahrenheit omzet in de temperatuur\u00a0<em>c<\/em> in Celsius:  <img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdisplaystyle%7Bf+%3D+c+%5Ctimes+%5Cfrac%7B9%7D%7B5%7D+%2B+32%7D&#038;bg=T&#038;fg=000000&#038;s=0' alt='\\displaystyle{f = c \\times \\frac{9}{5} + 32}' title='\\displaystyle{f = c \\times \\frac{9}{5} + 32}' class='latex' \/>  <img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdisplaystyle%7Bc+%3D+%28f+-+32%29%5Ctimes%5Cfrac%7B5%7D%7B9%7D.%7D&#038;bg=T&#038;fg=000000&#038;s=0' alt='\\displaystyle{c = (f - 32)\\times\\frac{5}{9}.}' title='\\displaystyle{c = (f - 32)\\times\\frac{5}{9}.}' class='latex' \/>  De input is een string met daarin een decimaal getal onmiddellijk gevolgd door de letter F of C, zoals bij \"<code>13.2C<\/code>\". Je moet de input vertalen in de andere temperatuurschaal en de omgezette temperatuur afdrukken in het zelfde format. Als bijvoorbeeld de invoer \"<code>8F<\/code>\" is dan moet de uitvoer (ongeveer) \"<code>-13.333C<\/code>\" zijn, en als de invoer \"<code>12.5C<\/code>\" is dan moet de uitvoer \"<code>54.5F<\/code>\" zijn.<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='usercode0' id='usercode0'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput0\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit0' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch0\" value=\"Input Switch\" onclick=\"pbInputSwitch(0,'N')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(0)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(0,'N')\" ><\/td>\n<\/tr><\/table><select id='pbSelect0' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(0,'15b.degrees')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(0);\" >Help<\/option>\n<\/select><\/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=\"660d3139d329413d77945537f4be2256\"\/>\n<div id='pbresults0' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(0);});pbInputSwitch(0,\"N\");<\/script>\n<\/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'>Credit Check<\/span><\/div>Je bent ingehuurd door MeisterCard om een functie te schrijven die checkt of een creditcardnummer geldig is. Jouw functie\u00a0 <code>check(S)<\/code> moet een string <code>S<\/code> als input accepteren. Als de string zich niet houdt aan het format <code>\"#### #### #### ####\"<\/code> (waar <code>#<\/code> een cijfer voorstelt) moet de uitkomst <code>False<\/code> zijn. Als de som van de getallen deelbaar is door 10 (een \"checksum\"), moet de functie <code>True<\/code> opleveren, en anders <code>False<\/code>. Voorbeeld: stel <code>S<\/code> is de string\u00a0\"<code>9384 3495 3297 0123<\/code>\". Ondanks dat het formaat klopt moet de functie toch\u00a0<code>False<\/code> opleveren, omdat de som van de getallen 72 is.<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'>\ndef check(S):\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory1' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput1\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode1' value='def check(S):\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit1' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch1\" value=\"Input Switch\" onclick=\"pbInputSwitch(1,'Y')\" ><\/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,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect1' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(1,'15b.creditcard')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(1,descape($('#defaultCode1').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(1);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse1\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"1\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"345ac84d9f6b2e9771ec9bbc0df12855\"\/>\n<div id='pbresults1' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(1);});pbInputSwitch(1,\"Y\");<\/script>\n<\/p>\n<p>In de volgende opdracht moet je de methode <code>string.split()<\/code> gebruiken. Deze methode verwijdert de spaties uit een string, en levert een lijst met de losse woorden op. Gebruik ook <code>string.lower()<\/code> om kleine letters te maken van alle letters in een string. Bijvoorbeeld:<\/p>\n<ul>\n<li><code>\"Splits deze woorden!\".split()<\/code> levert de lijst\u00a0<code>[\"Splits\", \"deze\", \"woorden!\"]<\/code> op\n<\/li>\n<li><code>\"KleIneLeTTeRs\".lower()<\/code> heeft als resultaat:\u00a0<code>\"kleineletters\"<\/code><\/li>\n<\/ul>\n<p>Let op: <code>split()<\/code> accepteert nog meer opties om strings op andere manieren te splitsen; zie de <a href=\"http:\/\/docs.python.org\/py3k\/library\/stdtypes.html#str.split\">documentatie<\/a>.<\/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'>Poetic Analysis<\/span><\/div>Een schrijver werkt aan z'n nieuwste gedicht, <em>Turing en z'n Machines<\/em>. Hij heeft jou ingehuurd om uit te zoeken welk woord het vaakst in z'n gedichten voorkomt. Je kunt de regels van het gedicht inlezen door <code>input()<\/code> herhaaldelijk aan te roepen, en de laatste regels bevat de tekens\u00a0<code>###<\/code>. Alle regels bevatten woorden die gescheiden worden door enkele spaties; er zijn geen cijfers of leestekens. Zet alle woorden om in kleine letters en <strong>print het woord dat het vaakst voorkomt<\/strong> (we garanderen dat er geen gelijkspel optreedt). Stel bijvoorbeeld dat de input is: <\/p>\n<pre>Here is a line like sparkling wine<br\/>Line up fast or be the last<br\/>###<\/pre> Dan zou de output moeten zijn: <\/p>\n<pre>line<\/pre> omdat het woord \"line\" twee keer voorkomt, en geen ander woord vaker voorkomt.  <div class=\"helpOuter\" style=\"display: none;\"><div class=\"helpInner\"><div style=\"text-align: center\">You need to create an account and log in to ask a question.<\/div><\/div><\/div><div class='pyboxTextwrap pyboxCodewrap RW resizy'  style='height: 526px;'><textarea wrap='off' name='usercode2' id='usercode2'  cols=10 rows=20   class='pyboxCode RW'>\n# delete this comment and enter your code here\n<\/textarea><\/div>\n<div id='pbhistory2' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput2\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit2' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch2\" value=\"Input Switch\" onclick=\"pbInputSwitch(2,'N')\" ><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(2)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(2,'N')\" ><\/td>\n<\/tr><\/table><select id='pbSelect2' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(2,'15b.poem')\" >History<\/option>\n<option name='help' data-pbonclick=\"helpClick(2);\" >Help<\/option>\n<\/select><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse2\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"2\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"dda6e122a655d4148248c53ec78a8492\"\/>\n<div id='pbresults2' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(2);});pbInputSwitch(2,\"N\");<\/script>\n<\/p>\n<p>Stel dat je <em>n<\/em>\u00a0smaken schepijs hebt, en je wil een sorbet maken met precies\u00a0<em>k<\/em>\u00a0verschillende smaken. Hoeveel combinaties zijn er dan mogelijk? Bijvoorbeeld, stel dat\u00a0<em>n<\/em>=4 en\u00a0<em>k<\/em>=2, dan zijn er 6 mogelijkheden:<\/p>\n<p>(1) A en B, (2) A en C, (3) A en D, (4) B en C, (5) B en D, (6) C en D.<\/p>\n<p>(de smaken zouden hier bijvoorbeeld <strong>A<\/strong>abrikoos,\u00a0<strong>B<\/strong>osbessen,\u00a0<strong>C<\/strong>hocolade, en <strong>D<\/strong>ruif kunnen zijn).<\/p>\n<p>Je kunt op een vergelijkbare manier 2 mensen kiezen uit een groep van 4 (<strong>A<\/strong>lbert,\u00a0<strong>B<\/strong>ob,\u00a0<strong>C<\/strong>arola,\u00a0<strong>D<\/strong>avid) om een commissie te vormen. Op hoeveel manieren kan de commissie worden samengesteld? Ook nu is het antwoord 6. De volgende opdracht gaat over het uitrekenen van dit aantal.<\/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'>Be Choosy<\/span><\/div>Het aantal combinaties van <em>k<\/em> dingen uit een totaal van\u00a0<em>n<\/em> dingen is gelijk aan  <img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdisplaystyle%7B%5Cfrac%7Bn%7D%7Bk%7D%5Ctimes%5Cfrac%7Bn-1%7D%7Bk-1%7D%5Ctimes%5Ccdots%5Ctimes%5Cfrac%7Bn-k%2B2%7D%7B2%7D%5Ctimes%5Cfrac%7Bn-k%2B1%7D%7B1%7D%7D&#038;bg=T&#038;fg=000000&#038;s=2' alt='\\displaystyle{\\frac{n}{k}\\times\\frac{n-1}{k-1}\\times\\cdots\\times\\frac{n-k+2}{2}\\times\\frac{n-k+1}{1}}' title='\\displaystyle{\\frac{n}{k}\\times\\frac{n-1}{k-1}\\times\\cdots\\times\\frac{n-k+2}{2}\\times\\frac{n-k+1}{1}}' class='latex' \/><br \/>  Schrijf een functie <code>choose(n, k)<\/code> die twee getallen <code>n<\/code> en <code>k<\/code> als invoer nodig heeft; we garanderen\u00a0<em>n<\/em>&gt;<em>k<\/em>&gt;0. De functie moet de waarde opleveren die de formule hierboven beschrijft.<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\">Enter testing statements like <code>print(myfunction(\"test argument\"))<\/code> 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,'Y')\" ><\/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,'Y')\" ><\/td>\n<\/tr><\/table><select id='pbSelect3' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(3,'15b.choose')\" >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=\"75807b6dca3fbcc436440f9ba1e2a9cf\"\/>\n<div id='pbresults3' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(3);});pbInputSwitch(3,\"Y\");<\/script>\n<\/p>\n<p>In de wiskunde wordt het getal dat je net hebt berekend meestal geschreven als <\/p>\n<img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdisplaystyle%7B%5Cbinom%7Bn%7D%7Bk%7D%7D&#038;bg=T&#038;fg=000000&#038;s=2' alt='\\displaystyle{\\binom{n}{k}}' title='\\displaystyle{\\binom{n}{k}}' class='latex' \/>\n<p>en uitgesproken als \"<em>n<\/em> boven <em>k<\/em>.\" Deze waarden hebben allerlei interessante eigenschappen, zoals<\/p>\n<p><img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdisplaystyle%7B%5Cbinom%7Bn%7D%7Bk%7D+%3D+%5Cbinom%7Bn%7D%7Bn-k%7D%7D&#038;bg=T&#038;fg=000000&#038;s=2' alt='\\displaystyle{\\binom{n}{k} = \\binom{n}{n-k}}' title='\\displaystyle{\\binom{n}{k} = \\binom{n}{n-k}}' class='latex' \/> en <img src='https:\/\/s0.wp.com\/latex.php?latex=%5Cdisplaystyle%7B%5Cbinom%7Bn%7D%7Bk%7D+%3D+%5Cbinom%7Bn%7D%7Bk-1%7D+%2B+%5Cbinom%7Bn-1%7D%7Bk-1%7D%7D&#038;bg=T&#038;fg=000000&#038;s=2' alt='\\displaystyle{\\binom{n}{k} = \\binom{n}{k-1} + \\binom{n-1}{k-1}}' title='\\displaystyle{\\binom{n}{k} = \\binom{n}{k-1} + \\binom{n-1}{k-1}}' class='latex' \/><\/p>\n<p>Dit is het einde van deze opgaveserie; je kunt nu door naar een andere les.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oefeningen 15A, 15B, en 15C kunnen in elke willekeurige volgorde worden doorgewerkt. In deze les komen verschillende middelgrote programma's aan bod waarmee de tools in eerdere lessen gecombineerd aan de orde komen. Coding Exercise: Veertig graden onder nulIn deze oefening &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/15b-python-pushups-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-6170","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6170","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=6170"}],"version-history":[{"count":11,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6170\/revisions"}],"predecessor-version":[{"id":8799,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/6170\/revisions\/8799"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=6170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}