{"id":5551,"date":"2012-09-13T16:24:50","date_gmt":"2012-09-13T20:24:50","guid":{"rendered":"http:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=5551"},"modified":"2020-04-08T08:41:44","modified_gmt":"2020-04-08T12:41:44","slug":"2-de","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/2-de\/","title":{"rendered":"2: Funktionen"},"content":{"rendered":"<p>Wir haben bereits eine Funktion gesehen: <code>print()<\/code>, die eine Zeile ausgibt. Um eine Funktion zu nutzen, schreibt man immer ihren Namen, gefolgt von einigen <em>Argumenten<\/em> in Klammern <code>()<\/code>. Das Wort <em>Argument<\/em> meint hier die Eingabedaten f\u00fcr eine Funktion. Dann wird die Funktion etwas tun - abh\u00e4ngig von den Argumenten. Wenn eine Funktion mehrere Argumente annimmt, werden sie mit Kommas (<code>,<\/code>) getrennt. Zum Beispiel kann auch <code>print()<\/code> mehrere Argumente annehmen; sie werden in einer bestimmten Reihenfolge ausgegeben, getrennt durch ein Leerzeichen. Das demonstrieren wir hier einmal:<br \/>\n<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>Drei Zahlen ausgeben<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'>\nx = 3\nprint(x, x +   x  , x * x)<\/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<\/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=\"51b3011fc5915e78e76a5018d2450e45\"\/>\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<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> Die zus\u00e4tzlichen Leerzeichen in dem Beispielprogramm haben keine Auswirkung auf die Ausgabe. Zus\u00e4tzliche Leerzeichen haben h\u00e4ufig keine Auswirkungen. Eine Ausnahme besteht bei <em>zus\u00e4tzlichen Leerzeichen am <strong>Anfang<\/strong> einer Zeile<\/em>, auch <em>Einr\u00fcckung<\/em> genannt; diese haben eine spezielle Bedeutung und k\u00f6nnen <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=print%28%22This%20line%20is%20ok%22%29%0A%20print%28%22This%20one%20starts%20with%20a%20space%22%29\" target=\"_blank\">Fehler verursachen (klicke hier f\u00fcr ein Beispiel)<\/a>, wenn sie falsch genutzt werden. Du wirst sp\u00e4ter sehen, wie man Einr\u00fcckungen richtig nutzt. <\/span><\/td><\/table><\/p>\n<p>Eine Funktion kann auch Werte liefern (wie eine Ausgabe). Zum Beispiel gibt die Funktion <code>max()<\/code> (Abk\u00fcrzung f\u00fcr <em>Maximum<\/em>) das gr\u00f6\u00dfte aller ihrer Argumente zur\u00fcck, die allesamt Zahlen sein m\u00fcssen.<br \/>\n<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><em>Versuche die Ausgabe des Programms zu erraten, bevor du es ausf\u00fchrst<\/em><div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode1' id='usercode1'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nprint(max(42, 17))\nprint(max(128,281,812))<\/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<\/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=\"63d7a889992170aa6cb0a32d6c940050\"\/>\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 Man nennt diesen Wert auch <em>R\u00fcckgabewert<\/em>. F\u00fcr den Befehl <code>max(42, 17)<\/code> sagt man \"Die Funktion <code>max<\/code> gibt den Wert <code>42<\/code> zur\u00fcck.\"<\/p>\n<p>Der beste Freund der <code>max()<\/code>-Funktion verh\u00e4lt sich ganz \u00e4hnlich: die <code>min()<\/code>-Funktion gibt das <em>Minimum<\/em> der Argumente zur\u00fcck.<\/p>\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'>Multiple Choice Exercise: <\/span><span class='title'>Min and Max I<\/span><\/div><div>Wie lautet die Ausgabe des folgenden Programms?<\/p>\n<pre>x = 13\r\ny = 7\r\na = max(x+y, x*2)\r\nb = min(x, y)\r\nprint(a,b)<\/pre><\/div><label>Your choice: <\/label><select id=\"pyselect2\"><option value=\"d\" selected>Select one<\/option><option value=\"w\">7 26<\/option><option value=\"w\">20 13<\/option><option value=\"w\">13 20<\/option><option value=\"r\">26 7<\/option><\/select><div class='pyboxbuttons'><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"2.intro\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick='pbMultiCheck(2)'\/><\/div><div class=\"pbresults\" id=\"pyMultiResults2\"><\/div><div class=\"epilogue\">Correct!<\/div><\/div>\n<p>Funktionen k\u00f6nnen zu komplexen Ausdr\u00fccken kombiniert werden.<br \/>\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'>Short Answer Exercise: <\/span><span class='title'>Min and Max II<\/span><\/div> Wie lautet die Ausgabe des folgenden Programms? <a class=\"hintlink\"  id=\"hintlink4\">Hinweis<\/a><\/p>\n<pre>x = min(max(13, 7), 9)\r\nprint(x)<\/pre><label for=\"pyShortAnswer3\">Your answer (enter a number): <\/label><input type=\"text\" onkeypress=\"{if (event.keyCode==13) pbShortCheck(3)}\" id=\"pyShortAnswer3\"><div class=\"pyboxbuttons\"><input type=\"hidden\" name=\"type\" value=\"number\"\/><input type=\"hidden\" name=\"correct\" value=\"9\"\/><input type=\"hidden\" name=\"slug\" value=\"2.compose\"\/><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick = 'pbShortCheck(3)'\/><\/div><div class=\"pbresults\" id=\"pyShortResults3\"><\/div><div class=\"epilogue\">Correct!<\/div><\/div>\n<p>Du bist dabei nicht auf von Python vordefinierte Funktionen eingeschr\u00e4nkt. Du wirst auch noch lernen, selber Funktionen zu definieren.<\/p>\n<h2>H\u00e4ufige Fehler<\/h2>\n<p>Wenn du eine Funktion mit zu wenigen oder zu vielen Argumenten aufrufst, wird ein Fehler erzeugt. Zum Beispiel ben\u00f6tigt <code>max()<\/code> mindestens eine Eingabe:<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform5\" method=\"POST\">\n<div class='pybox modeNeutral  facultative' id='pybox5'>\n<div class=\"heading\"><span class=\"title\">Example<\/span><\/div><code>max<\/code>-Aufruf mit zu wenigen Argumenten.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 32px;'><textarea wrap='off' name='usercode5' id='usercode5'  cols=10 rows=1 readonly='readonly'  style = 'height : 32px;'  class='pyboxCode RO'>\nmax()<\/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<\/tr><\/table><\/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=\"533d15721b982f77f37080b7877c5b1d\"\/>\n<div id='pbresults5' class='pbresults'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>document.getElementById(\"submit5\").value = \"Run program\";document.getElementById(\"inputInUse5\").value = \"N\";<\/script>\n<\/p>\n<p>Es ist wichtig, sich die Fehlermeldungen genau durchzulesen, wenn das Programm nicht funktioniert. Python gibt meistens sinnvolle Hinweise darauf, was schief ging. Manchmal musst du dich aber auch ein wenig umschauen, um den Fehler zu finden - hier ist ein Beispiel,<\/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>Klick <strong>Run program<\/strong> und schaue dir den Fehler an.<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 58px;'><textarea wrap='off' name='usercode6' id='usercode6'  cols=10 rows=2 readonly='readonly'  style = 'height : 58px;'  class='pyboxCode RO'>\nsmaller = min(14, 99\nbigger = max(3, 4)<\/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<\/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=\"167beb08629b6fed87e7d3a0f4c7393e\"\/>\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>Python gibt hier aus, einen Syntaxfehler gefunden zu haben:<\/p>\n<pre> Traceback (most recent call last):\r\n   In line 2 of the code you submitted:\r\n     bigger = max(3, 4)\r\n          ^\r\n SyntaxError: invalid syntax<\/pre>Jedoch ist die Zeile <code>bigger = max(3, 4)<\/code> v\u00f6llig korrekt. Das Problem ist quasi von der vorherigen Zeile r\u00fcbergerutscht: Wir haben die schlie\u00dfende Klammer <code>)<\/code> nach <code>smaller = min(14, 99<\/code> vergessen und Python hat in der n\u00e4chsten Zeile nach einem <code>)<\/code> gesucht. Also: schaue auch die Zeilen dar\u00fcber und darunter an, wenn du Probleme beim Debuggen deines Programms hast.<\/p>\n<h2>\u00dcbungen<\/h2>\n<p>Dies ist eine zweigeteilte \u00dcbung zur Benutzung der <code>min()<\/code>- und <code>max()<\/code>-Funktionen. Es gibt Verbindungen zwischen den St\u00e4dten Maxime und Miniac mit verschiedenen Br\u00fccken. Jede Br\u00fccke hat ein gewisses Gewicht, das sie tragen kann.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform7\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox7'>\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'>Eine Stra\u00dfe<\/span><\/div>Im ersten Teil gibt es nur eine einzelne Stra\u00dfe zwischen den beiden St\u00e4dten. Die Stra\u00dfe hat drei Br\u00fccken mit den Gewichtsgrenzen (Engl. \"weight limits\") <code>a<\/code>, <code>b<\/code> und <code>c<\/code>, wie in folgendem Bild gezeigt:<\/p>\n<div><img loading=\"lazy\" decoding=\"async\" src=\"..\/wp-content\/lesson_files\/img\/2\/one-road.png\" alt=\"\" width=\"802\" height=\"296\" \/><\/div>\n<p>Damit du mit deinem Truck diese Stra\u00dfe entlang fahren kannst, musst du zun\u00e4chst \u00fcber die Br\u00fccke mit der Gewichtsgrenze <code>a<\/code>, dann jene mit <code>b<\/code> und schlie\u00dflich \u00fcber die Br\u00fccke mit Gewichtsgrenze <code>c<\/code>. Dein Truck w\u00fcrde einen Unfall bauen, wenn du auf <em>einer<\/em> Br\u00fccke \u00fcberladen f\u00e4hrst. <em>Schreibe ein Programm, das das maximale Gewicht ausgibt, das auf dieser Stra\u00dfe transportiert werden kann.<\/em> Du kannst dabei annehmen, dass die Variablen <code>a<\/code>, <code>b<\/code> und <code>c<\/code> bereits die Gewichtsgrenzen enthalten.<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='usercode7' id='usercode7'  cols=10 rows=20   class='pyboxCode RW'>\n<\/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='history' value=\"History\" onclick=\"historyClick(7,'2.bridges1')\" ><\/td>\n<td><input type='button' name='help' value=\"Help\" onclick=\"helpClick(7);\" ><\/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=\"a1d9c0afc893b2ac761aa87899297df0\"\/>\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><form class=\"pbform\" action=\"#\" id=\"pbform8\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox8'>\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'>Zwei Stra\u00dfen<\/span><\/div>Teil 2: Jetzt das volle Programm. Es gibt auch eine <strong>zweite Stra\u00dfe<\/strong> mit zwei Br\u00fccken mit den Gewichtsgrenzen <code>d<\/code> und <code>e<\/code>, wie unten gezeigt.<\/p>\n<div style=\"text-align: center;\"><img loading=\"lazy\" decoding=\"async\" src=\"..\/wp-content\/lesson_files\/img\/2\/two-roads.png\" alt=\"\" width=\"737\" height=\"428\" \/><\/div>\n<p>Dein Truck kann eine der beiden Stra\u00dfen nehmen. Schreibe ein Programm, das das Maximalgewicht ausgibt, das zwischen den beiden St\u00e4dten transportiert werden kann. Auch hier kannst du wieder annehmen, dass die Variablen <code>a<\/code>, <code>b<\/code>, <code>c<\/code>, <code>d<\/code> und <code>e<\/code> bereits bekannt sind und die richtigen Werte enthalten.<br \/>\n<a class=\"hintlink\"  id=\"hintlink9\">Hinweis<\/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='usercode8' id='usercode8'  cols=10 rows=20   class='pyboxCode RW'>\n<\/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='history' value=\"History\" onclick=\"historyClick(8,'2.bridges2')\" ><\/td>\n<td><input type='button' name='help' value=\"Help\" onclick=\"helpClick(8);\" ><\/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=\"88b2d8da268ea6ff83d9d37ca837f5f4\"\/>\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>\u00dcbung: Code-Durcheinander<\/h2>\n<p>Hier ist eine weitere \u00dcbung, in der du per Drag'n'Drop den Code in die richtige Reihenfolge bringen musst.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform10\" method=\"POST\">\n<div class='pybox modeNeutral scramble' 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'>Scramble Exercise: <\/span><span class='title'>Sortieren nach Gr\u00f6\u00dfe<\/span><\/div>Ordne den Code so an, dass er <code>x<\/code>, <code>y<\/code> und <code>z<\/code> <strong>sortiert<\/strong> in aufsteigender Reihenfolge (also erst die Kleinste, dann die in der Mitte und dann die Gr\u00f6\u00dfte) ausgibt.<br\/><em>Nutze Drag'n'Drop zum sortieren.<\/em><ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble10\">\n <li class=\"pyscramble\">print(max(x, y, z))<\/li>\n <li class=\"pyscramble\">print(min(x, y, z))<\/li>\n <li class=\"pyscramble\">print(x+y+z-min(x, y, z)-max(x, y, z))<\/li>\n<\/ul>\n<input type='hidden' id='usercode10' name='usercode10'\/>\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<\/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=\"a1d0c54df24cb43e593fc9a5c790021b\"\/>\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>\n<\/p>\n<p>Wenn du die obigen \u00dcbungen gel\u00f6st hast, hast du zwei M\u00f6glichkeiten:<\/p>\n<ul>\n<li>Du kannst direkt mit <a class=\"open-same-window\" href=\"\/3-de\/\">Lektion 3<\/a> weitermachen oder<\/li>\n<li>weitere \u00dcbungen zu Funktionen in <a class=\"open-same-window\" href=\"\/2x-de\/\">Lektion 2X<\/a> ausprobieren.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Wir haben bereits eine Funktion gesehen: print(), die eine Zeile ausgibt. Um eine Funktion zu nutzen, schreibt man immer ihren Namen, gefolgt von einigen Argumenten in Klammern (). Das Wort Argument meint hier die Eingabedaten f\u00fcr eine Funktion. Dann wird &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/2-de\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2653,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5551","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/5551","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\/2653"}],"replies":[{"embeddable":true,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/comments?post=5551"}],"version-history":[{"count":22,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/5551\/revisions"}],"predecessor-version":[{"id":11167,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/5551\/revisions\/11167"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=5551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}