{"id":9952,"date":"2017-05-18T02:05:35","date_gmt":"2017-05-18T06:05:35","guid":{"rendered":"https:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=9952"},"modified":"2017-05-29T13:06:11","modified_gmt":"2017-05-29T17:06:11","slug":"pl-6","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/pl-6\/","title":{"rendered":"6: If"},"content":{"rendered":"<!-- Please retain this notice and add more notes if you create a new version.<br \/>\nOriginal lesson author: David Pritchard, daveagp@gmail.com, http:\/\/cscircles.ca<br \/>\nLicense: http:\/\/creativecommons.org\/licenses\/by-nc-sa\/3.0\/-->\n<p>Do tej pory wszystkie nasze programy wykona\u0142y instrukcje po kolei bez pomijania \u017cadnej z linii. Oto przyk\u0142ad;  za pomoc\u0105 przycisk\u00f3w lub klawiszy sterowania kursorem mo\u017cesz krok po kroku przej\u015b\u0107 przez ca\u0142y kod.<\/p>\n<p><iframe width='100%' height='480' frameborder='0' scrolling='no' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/OnlinePythonTutor3-cemc\/iframe-embed.html#code=birthYear+%3D+1982%0AcurrentYear+%3D+2013%0Aage+%3D+currentYear+-+birthYear%0Aprint%28%27You+are%27%2C+age%2C+%27years+old%27%29&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&curInstr=0&resizeContainer=true&highlightLines&width=400&rightStdout=1'><\/iframe><\/p>\n<p>Now\u0105 umiej\u0119tno\u015bci\u0105 na tej lekcji b\u0119dzie stosowanie <strong>instrukcji if<\/strong>, kt\u00f3ra pozwala nam wykonywa\u0107 akcje tylko wtedy, gdy spe\u0142nione s\u0105 okre\u015blone warunki, w przeciwnym wypadku pomijane s\u0105 okre\u015blone linie. Na przyk\u0142ad, zmie\u0144my nasz program: gdy wiek osoby jest wystarczaj\u0105co du\u017cy, niech wy\u015bwietla dodatkow\u0105 wiadomo\u015b\u0107. W tym celu dodamy dwie linie: <code>if age &gt; 65:<\/code> (czyli \"je\u015bli wiek jest wi\u0119kszy ni\u017c 65\") i <code>print('Ciesz si\u0119 emerytur\u0105!')<\/code> (\"Ciesz si\u0119 emerytur\u0105!\"). Teraz przejd\u017a ponownie do kodu:<\/p>\n<p><iframe width='100%' height='480' frameborder='0' scrolling='no' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/OnlinePythonTutor3-cemc\/iframe-embed.html#code=birthYear+%3D+1982%0AcurrentYear+%3D+2013%0Aage+%3D+currentYear+-+birthYear%0Aif+age+%3E+65%3A%0A+++print%28%27Ciesz+si%C4%99+emerytur%C4%85%21%27%29%0Aprint%28%27You+are%27%2C+age%2C+%27years+old%27%29&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&curInstr=0&resizeContainer=true&highlightLines&width=400&rightStdout=1'><\/iframe><\/p>\n<p>Zauwa\u017c, \u017ce nowa instrukcja drukowania zosta\u0142a <strong>pomini\u0119ta<\/strong>, poniewa\u017c <code>wiek<\/code> wynosi zaledwie 31! Co si\u0119 b\u0119dzie  dzia\u0142o <strong>w tym programie<\/strong>, gdy <code>birthYear<\/code> zmienimy na rok 1928?<\/p>\n<p><iframe width='100%' height='480' frameborder='0' scrolling='no' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/OnlinePythonTutor3-cemc\/iframe-embed.html#code=birthYear+%3D+1928%0AcurrentYear+%3D+2013%0Aage+%3D+currentYear+-+birthYear%0Aif+age+%3E+65%3A%0A+++print%28%27Enjoy+retirement%21%27%29%0Aprint%28%27You+are%27%2C+age%2C+%27years+old%27%29&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&curInstr=0&resizeContainer=true&highlightLines&width=400&rightStdout=1'><\/iframe><\/p>\n<p>Widzisz r\u00f3\u017cnic\u0119? Wersja dolna (z <code>age<\/code> <code><\/code>85) drukowa\u0142a dwie linie i nie pomija\u0142a \u017cadnej. To jest w\u0142a\u015bnie celem <strong>instrukcji if<\/strong>: sprawdzi\u0107 co\u015b (czy <code>age<\/code> jest powy\u017cej 65) i gdy tylko to jest prawd\u0105, wykona\u0107 okre\u015blone czynno\u015bci (printing <code>Enjoy retirement!<\/code>).<\/p>\n<p>Te instrukcje, kt\u00f3re s\u0105 realizowane tylko dla prawdziwego <strong>warunku<\/strong>, nazywamy <strong>cia\u0142em<\/strong>.  Cia\u0142o musi by\u0107 <strong>wci\u0119te<\/strong>, oznacza to, \u017ce na pocz\u0105tku linii jest dodatkowa przestrze\u0144.  Cia\u0142o mo\u017ce zawiera\u0107 wi\u0119cej ni\u017c jedn\u0105 instrukcj\u0119: w tym celu dla ka\u017cdej kolejnej linii robimy takie samo wci\u0119cie. Oto przyk\u0142ad:<\/p>\n<p><iframe width='100%' height='480' frameborder='0' scrolling='no' src='https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-content\/plugins\/pybox\/OnlinePythonTutor3-cemc\/iframe-embed.html#code=birthYear+%3D+1928%0AcurrentYear+%3D+2013%0Aage+%3D+currentYear+-+birthYear%0Aif+age+%3E+65%3A%0A++++print%28%27Enjoy+retirement%21%27%29%0A++++print%28%27You+turn+100+in%27%2C+100%2BbirthYear%29%0Aprint%28%27You+are%27%2C+age%2C+%27years+old%27%29&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=3&curInstr=0&resizeContainer=true&highlightLines&width=480&rightStdout=1'><\/iframe><\/p>\n<ul>\n<li>Spr\u00f3buj uruchomi\u0107 ten kod w <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=birthYear%20%3D%201928%0AcurrentYear%20%3D%202013%0Aage%20%3D%20currentYear%20-%20birthYear%0Aif%20age%20%3E%2065%3A%0A%20%20%20%20print%28%27Enjoy%20retirement%21%27%29%0A%20%20%20%20print%28%27You%20turn%20100%20in%27%2C%20100%2BbirthYear%29%0Aprint%28%27You%20are%27%2C%20age%2C%20%27years%20old%27%29%0A\" target=\"_blank\">konsoli<\/a> lub wizualizerze z dat\u0105 urodzenia 1982. Obie linie s\u0105 wci\u0119te.<\/li>\n<\/ul>\n<p>W nast\u0119pnym \u0107wiczeniu prosimy o napisanie kr\u00f3tkiego programu z zastosowaniem por\u00f3wna\u0144 boolowskich. W powy\u017cszych przyk\u0142adach zapis \"<code>if x &gt; y:<\/code>\" oznacza \"je\u015bli <code>x<\/code> jest wi\u0119ksze od <code>y<\/code>\". Mo\u017cliwe jest r\u00f3wnie\u017c skorzystanie z nast\u0119puj\u0105cych operacji:<\/p>\n<ul>\n<li><code>if x &lt; y:<\/code> means \"je\u015bli x jest mniejsze od y\"<\/li>\n<li><code>if x &gt;= y:<\/code> means \"je\u015bli x jest wi\u0119ksze lub r\u00f3wne y\"<\/li>\n<li><code>if x &lt;= y:<\/code> means \"je\u015bli x jest mniejsze lub r\u00f3wne y\"<\/li>\n<\/ul>\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'>IHOPython<\/span><\/div>Napisz program, kt\u00f3ry odczytuje na wej\u015bciu liczb\u0119 ca\u0142kowit\u0105 przy u\u017cyciu <code>pancakes = int(input())<\/code>. Je\u015bli <code>pancakes<\/code> jest wi\u0119kszy od 3, wydrukuj <code>Yum!<\/code> i je\u015bli <code>pancakes<\/code> nie jest wi\u0119kszy od 3, wydrukuj <code>Still hungry!<\/code>. <a class=\"hintlink\"  id=\"hintlink1\">Wskaz\u00f3ka<\/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='usercode0' id='usercode0'  cols=10 rows=20   class='pyboxCode RW'>\n<\/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<td><input type='button' name='history' value=\"History\" onclick=\"historyClick(0,'6.ihop')\" ><\/td>\n<\/tr><\/table><select id='pbSelect0' class='selectmore'><option name='more'>More actions...<\/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=\"41127aa9bb8f0bf880f03ca38bb86efd\"\/>\n<div id='pbresults0' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(0);});document.getElementById(\"submit0\").value = \"Run program\";document.getElementById(\"inputInUse0\").value = \"N\";<\/script>\n<\/p>\n<h2>Struktura If<\/h2>\n<ul>\n<li>Pierwsza linia,\n<pre>if \u00abwarunek\u00bb:<\/pre>ma trzy cz\u0119\u015bci: s\u0142owo <code>if<\/code>, <code>\u00ab<span style=\"line-height: 22px;\">warunek<\/span>\u00bb<\/code>, kt\u00f3ry musi by\u0107 wyra\u017ceniem True\/False (wi\u0119cej o tym poni\u017cej) oraz dwukropek <code>:<\/code><\/li>\n<li>Nast\u0119pnie cia\u0142o sk\u0142adaj\u0105ce si\u0119 z jednej lub wi\u0119cej wci\u0119tych linii. Liczba spacji (wielko\u015b\u0107 wci\u0119cia) nie ma znaczenia, ale niekonsekwencja <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=birthYear%20%3D%201928%0AcurrentYear%20%3D%202013%0Aage%20%3D%20currentYear%20-%20birthYear%0Aif%20age%20%3E%2065%3A%0A%20%20print%28%27Enjoy%20retirement%21%27%29%0A%20%20%20%20print%28%27You%20turn%20100%20in%27%2C%20100%2BbirthYear%29%0Aprint%28%27You%20are%27%2C%20age%2C%20%27years%20old%27%29%0A\" target=\"_blank\">spowoduje b\u0142\u0105d<\/a>, poniewa\u017c Python za pomoc\u0105 wielko\u015bci wci\u0119cia okre\u015blenia miejsce, w kt\u00f3rym chcesz rozpocz\u0105\u0107 lub zako\u0144czy\u0107 cia\u0142o. (Powszechnie stosuje si\u0119 cztery spacje dla ka\u017cdego wci\u0119cia. Dobr\u0105 zasad\u0105 jest nie mieszanie tabulator\u00f3w ze spacjami, bo prowadzi to do tzw. niewidzialnych b\u0142\u0119d\u00f3w.)<\/li>\n<\/ul>\n<p>Cia\u0142o instrukcji if jest przyk\u0142adem \"bloku\" kodu. Bloki b\u0119d\u0105 u\u017cywane p\u00f3\u017aniej w wielu innych miejscach, na przyk\u0142ad w p\u0119tli i w definiowanych w\u0142asnych funkcjach. (Niekt\u00f3re inne j\u0119zyki programowania identyfikuj\u0105 bloki za pomoc\u0105 nawias\u00f3w klamrowych <code><code>{}<\/code><\/code>).<\/p>\n<p>Nast\u0119pne \u0107wiczenie to w sumie 4 \u0107wiczenia w jednym. Twoim zadaniem jest uporz\u0105dkowa\u0107 linie programu, aby uzyska\u0107 kilka r\u00f3\u017cnych wynik\u00f3w. <em>Klikaj na poziome belki, aby otworzy\u0107 ka\u017cd\u0105 z cz\u0119\u015bci; zadania mo\u017cesz wykona\u0107 w dowolnej kolejno\u015bci. Aby uporz\u0105dkowa\u0107 linie kodu, przeci\u0105gaj je i upuszczaj.<\/em><\/p>\n<div class=\"accordion\"><br \/>\n<div class='collapseContain hiding'>\n<div class='collapseHead'><span class='icon'><\/span>\nPart 1: Nieoczekiwane wci\u0119cie\n<\/div>\n<div class='collapseBody'><form class=\"pbform\" action=\"#\" id=\"pbform2\" method=\"POST\">\n<div class='pybox modeNeutral scramble' 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'>Scramble Exercise: <\/span><span class='title'>Nieoczekiwane wci\u0119cie<\/span><\/div>Musisz spowodowa\u0107 nast\u0119puj\u0105cy b\u0142\u0105d: <\/br> (B\u0142\u0105d wci\u0119cia: nieoczekiwane wci\u0119cie) <\/p>\n<pre>IndentationError: unexpected indent<\/pre> <ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble2\">\n <li class=\"pyscramble\">if 1000 &lt; 10:<\/li>\n <li class=\"pyscramble\">   print(&quot;message 1&quot;)<\/li>\n <li class=\"pyscramble\">  print(&quot;message 2&quot;)<\/li>\n <li class=\"pyscramble\">if 2 &gt; 1:<\/li>\n <li class=\"pyscramble\">  print(&quot;message 3&quot;)<\/li>\n<\/ul>\n<input type='hidden' id='usercode2' name='usercode2'\/>\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<\/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=\"a4184bd34d5dae3fad6a7b6b4473255e\"\/>\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<\/div><\/div><div class='collapseContain hiding'>\n<div class='collapseHead'><span class='icon'><\/span>\nPart 2: Nieoczekiwane usuni\u0119cie wci\u0119cia\n<\/div>\n<div class='collapseBody'><form class=\"pbform\" action=\"#\" id=\"pbform3\" method=\"POST\">\n<div class='pybox modeNeutral scramble' 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'>Scramble Exercise: <\/span><span class='title'>Nieoczekiwane usuni\u0119cie wci\u0119cia<\/span><\/div>Musisz spowodowa\u0107 nast\u0119puj\u0105cy b\u0142\u0105d:<\/br> (B\u0142\u0105d wci\u0119cia: usuni\u0119te wci\u0119cie nie pasuje do \u017cadnego poziomu) <\/p>\n<pre>IndentationError: unindent does not match any outer indentation level<\/pre> <ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble3\">\n <li class=\"pyscramble\">if 1000 &lt; 10:<\/li>\n <li class=\"pyscramble\">  print(&quot;message 2&quot;)<\/li>\n <li class=\"pyscramble\">if 2 &gt; 1:<\/li>\n <li class=\"pyscramble\">  print(&quot;message 3&quot;)<\/li>\n <li class=\"pyscramble\">   print(&quot;message 1&quot;)<\/li>\n<\/ul>\n<input type='hidden' id='usercode3' name='usercode3'\/>\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<\/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=\"acc4c4ff4e4594ebad4524653c9c68fd\"\/>\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<\/div><\/div><div class='collapseContain hiding'>\n<div class='collapseHead'><span class='icon'><\/span>\nPart 3: Nie znaleziono spodziewanego wci\u0119cia\n<\/div>\n<div class='collapseBody'><form class=\"pbform\" action=\"#\" id=\"pbform4\" method=\"POST\">\n<div class='pybox modeNeutral scramble' id='pybox4'>\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'>Oczekiwane wci\u0119cie<\/span><\/div>Musisz spowodowa\u0107 nast\u0119puj\u0105cy b\u0142\u0105d: <\/br> (B\u0142\u0105d wci\u0119cia: oczekiwano wci\u0119tego bloku) <\/p>\n<pre>IndentationError: expected an indented block<\/pre> <ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble4\">\n <li class=\"pyscramble\">if 1000 &lt; 10:<\/li>\n <li class=\"pyscramble\">   print(&quot;message 1&quot;)<\/li>\n <li class=\"pyscramble\">  print(&quot;message 2&quot;)<\/li>\n <li class=\"pyscramble\">if 2 &gt; 1:<\/li>\n <li class=\"pyscramble\">  print(&quot;message 3&quot;)<\/li>\n<\/ul>\n<input type='hidden' id='usercode4' name='usercode4'\/>\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<\/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=\"78fcd9842d2d7ba314ff70e636b92d72\"\/>\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<\/div><\/div><div class='collapseContain hiding'>\n<div class='collapseHead'><span class='icon'><\/span>\nPart 4: W\u0142a\u015bciwe wci\u0119cie\n<\/div>\n<div class='collapseBody'><form class=\"pbform\" action=\"#\" id=\"pbform5\" method=\"POST\">\n<div class='pybox modeNeutral scramble' 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'>Scramble Exercise: <\/span><span class='title'>W\u0142a\u015bciwe wci\u0119cie<\/span><\/div>Nie powoduj \u017cadnych b\u0142\u0119d\u00f3w!<ul class=\"pyscramble\" name=\"pyscramble\" id=\"pyscramble5\">\n <li class=\"pyscramble\">if 1000 &lt; 10:<\/li>\n <li class=\"pyscramble\">   print(&quot;message 1&quot;)<\/li>\n <li class=\"pyscramble\">  print(&quot;message 2&quot;)<\/li>\n <li class=\"pyscramble\">if 2 &gt; 1:<\/li>\n <li class=\"pyscramble\">  print(&quot;message 3&quot;)<\/li>\n<\/ul>\n<input type='hidden' id='usercode5' name='usercode5'\/>\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=\"713631b8bc41d95737e6fff054d86c0b\"\/>\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<\/div><\/div><\/div>\n<h3>True, False i dane typu <code>bool<\/code><\/h3>\n<p>Do tej pory w <code>\u00abwarunku\u00bb<\/code> instrukcji <code>if<\/code> stosowali\u015bmy proste por\u00f3wnania numeryczne <code>x &gt; y<\/code>, co jest prawdziwe, gdy <code>x<\/code> jest wi\u0119ksze od <code>y<\/code> i fa\u0142szywe, gdy <code>x<\/code> jest mniejsze lub r\u00f3wne <code>y<\/code>. Uog\u00f3lniaj\u0105c, ka\u017cd\u0105 z warto\u015bci prawda\/fa\u0142sz nazywamy warto\u015bci\u0105 <strong>boolowsk\u0105<\/strong> (patrz <a href=\"http:\/\/en.wikipedia.org\/wiki\/George_Boole\">George Boole<\/a>). W Pythonie typ <code>bool<\/code> jest u\u017cywany do reprezentowania warto\u015bci typu boolowskiego; istniej\u0105 tylko dwie warto\u015bci typu <code>bool<\/code>: <code>True<\/code> i <code>False<\/code>.<\/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>Wyra\u017cenia boolowskie<div class='pyboxTextwrap pyboxCodewrap RO '  style='height: 110px;'><textarea wrap='off' name='usercode6' id='usercode6'  cols=10 rows=4 readonly='readonly'  style = 'height : 110px;'  class='pyboxCode RO'>\nprint(2&gt;1)\nb = False\nprint(b)\nprint(type(b), type(2&gt;1), type(True))<\/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=\"b696c04c9860d8276e0ff89ec3161af2\"\/>\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>Zauwa\u017c, \u017ce w Pythonie, gdy u\u017cywasz bezpo\u015brednio w programie warto\u015bci typu <code>bool<\/code>, True i False musz\u0105 by\u0107 <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=print%28true%29\" target=\"_blank\">pisane z du\u017cej litery, w przeciwnym wypadku otrzymasz b\u0142\u0105d<\/a>.<\/p>\n<h3>Por\u00f3wnania boolowskie<\/h3>\n<p>Operatory <code>&gt;<\/code>, <code>&lt;<\/code>, <code>&lt;=<\/code> i <code>&gt;=<\/code> por\u00f3wnuj\u0105 dwie liczby i jako wynik podaj\u0105 warto\u015b\u0107 boolowsk\u0105. Istniej\u0105 dwa inne sposoby por\u00f3wnywania liczb:<\/p>\n<ul>\n<li><code>x == y<\/code> jest <strong>operatorem r\u00f3wno\u015bci<\/strong>, zwraca <code>True<\/code> je\u015bli <code>x<\/code> i <code>y<\/code> s\u0105 r\u00f3wne<\/li>\n<li><code>x != y<\/code> jest <strong>operatorem r\u00f3\u017cno\u015bci<\/strong>, zwraca <code>True<\/code> je\u015bli <code>x<\/code> i <code>y<\/code> nie s\u0105 r\u00f3wne<\/li>\n<li><code>==<\/code> i <code>!=<\/code> dzia\u0142aj\u0105 na \u0142a\u0144cuchach i innych typach danych<\/li>\n<\/ul>\n<p>(Tu stosujemy dwa znaki r\u00f3wno\u015bci <code>==<\/code>, pojedynczy znak r\u00f3wno\u015bci stosujemy ju\u017c w wyra\u017ceniu typu <code>x = \u00abwyra\u017cenie\u00bb<\/code>  dla \"przypisania zmiennej x warto\u015bci \u00abwyra\u017cenie\u00bb . Mylenie zapisu code>=<\/code> z <code>==<\/code>  jest <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=x%20%3D%201%2B1%0Aif%20x%20%3D%202%3A%20%23should%20be%20%3D%3D%0A%20print%28%22Monkey%22%29\" target=\"_blank\">\u017ar\u00f3d\u0142em<\/a> wielu <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/console\/?consolecode=n%20%3D%2010%0As%20%3D%3D%20n%2An%20%23should%20be%20%3D\" target=\"_blank\">b\u0142\u0119d\u00f3w<\/a>.)<\/p>\n<p>Oto \u0107wiczenie, kt\u00f3re b\u0119dzie dotyczy\u0142o jednego z nowych por\u00f3wna\u0144.<\/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'>Jaki jest tw\u00f3j znak?<\/span><\/div>Napisz program, kt\u00f3ry za pomoc\u0105 input odczytuje liczb\u0119 ca\u0142kowit\u0105, a nast\u0119pnie, w zale\u017cno\u015bci od tego, czy liczba jest dodatnia, ujemna czy zerem, wyprowadza jedno z ze s\u0142\u00f3w pisane z du\u017cej litery <code>Positive<\/code>, <code>Negative<\/code> lub  <code>Zero<\/code>.<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'>\nx=int(input())\n<\/textarea><\/div>\n<div id='pbhistory7' class='flexcontain' style='display:none;'><\/div>\n<div name=\"pyinput\" id=\"pyinput7\">You may enter input for the program in the box below.<div class=\"pyboxTextwrap resizy\" style=\"height: 102px;\" ><textarea wrap=\"off\" name=\"userinput\" class=\"pyboxInput\" cols=10 rows=4><\/textarea><\/div><\/div>\n<input type='hidden' id='defaultCode7' value='x=int(input())\\n'><\/input>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit7' value=' '\/><\/td>\n<td><input type='button' name='switch' id=\"switch7\" value=\"Input Switch\" onclick=\"pbInputSwitch(7,'N')\" ><\/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><select id='pbSelect7' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='history' data-pbonclick=\"historyClick(7,'6.sign')\" >History<\/option>\n<option name='default' data-pbonclick=\"pbSetText(7,descape($('#defaultCode7').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(7);\" >Help<\/option>\n<\/select><\/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=\"72839c5341bad6644e691b87c68670eb\"\/>\n<div id='pbresults7' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(7);});pbInputSwitch(7,\"N\");<\/script>\n<\/p>\n<p>Niedawno wprowadzili\u015bmy poj\u0119cie <strong>bloku <\/strong>(kilka linii zgrupowanych na tym samym poziomie wci\u0119cia). Mo\u017cesz mie\u0107 blok wewn\u0105trz innego bloku:<\/p>\n<pre>if password=='openSesame':\r\n  print('User logged on.')\r\n  if hour&gt;17:\r\n    print('Good evening!')\r\n  print('Enter a command:')<\/pre>Tutaj zewn\u0119trzny blok sk\u0142ada si\u0119 z 4 linii a wewn\u0119trzny z 1 linii: <pre>\nif password=='openSesame':  <div style=\"margin:0px 20px; margin:0ch 1.9ch; background: #CCF; border: solid blue 1px; border: solid blue 0.1ch;\">print('User logged on.')<br\/>if hour&gt;17:\n<div style=\"margin:0px 20px; margin: 0ch 1.9ch; background: #FCC; border: solid red 1px; border: solid red 0.1ch;\">print('Good evening!')<\/div>print('Enter a command:')<\/div><\/pre><\/p>\n<p><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'>Multiple Choice Exercise: <\/span><span class='title'>Zagnie\u017cd\u017cone <code>if<\/code>y<\/span><\/div><div>Kt\u00f3re z nast\u0119puj\u0105cych wyj\u015b\u0107 <strong>nie<\/strong> jest mo\u017cliwym dla tego programu?<\/div><label>Your choice: <\/label><select id=\"pyselect8\"><option value=\"d\" selected>Select one<\/option><option value=\"w\">dwie linie: 'User logged on.' and 'Enter a command:'<\/option><option value=\"w\">trzy linie: 'User logged on.', 'Good evening!', and 'Enter a command:'<\/option><option value=\"r\">jedna linia: 'User logged on.'<\/option><option value=\"w\">nie podaje \u017cadnego wyniku<\/option><\/select><div class='pyboxbuttons'><input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" name=\"slug\" value=\"6.nested\"\/><input type='submit' style='margin:5px;' value='Check answer' onClick='pbMultiCheck(8)'\/><\/div><div class=\"pbresults\" id=\"pyMultiResults8\"><\/div><div class=\"epilogue\">Correct! If any messages are shown, it must be the case that the outer (blue) block was executed, or in other words the password was correct. In this case, even if <code>hour&gt;17<\/code> is false (and the inner block is skipped), the line <code>print('Enter a command:')<\/code> of the outer block will still be executed.<\/div><\/div>\n<p>Teraz, musisz u\u017cy\u0107 zagnie\u017cd\u017conych blok\u00f3w do napisania nieco bardziej z\u0142o\u017conego kalkulatora wieku.<\/p>\n<p><form class=\"pbform\" action=\"#\" id=\"pbform9\" method=\"POST\">\n<div class='pybox modeNeutral ' id='pybox9'>\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'>Kontroler wieku<\/span><\/div>Napisz program, kt\u00f3ry odczytuje wprowadzon\u0105 za pomoc\u0105 input liczb\u0119 ca\u0142kowit\u0105 reprezentuj\u0105c\u0105 czyj\u015b wiek. Je\u015bli wiek wynosi 18 lub wi\u0119cej, wydrukuj <code>You can vote<\/code> (Mo\u017cesz g\u0142osowa\u0107). Je\u015bli wiek wynosi od 0 do 17 w\u0142\u0105cznie, wydrukuj <code>Too young to vote<\/code> (zbyt m\u0142ody na g\u0142osowanie). Je\u015bli wiek jest mniejszy ni\u017c 0, wydrukuj <code>You are a time traveller<\/code> (Jeste\u015b podr\u00f3\u017cnikiem w czasie).<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='usercode9' id='usercode9'  cols=10 rows=20   class='pyboxCode RW'>\nage = int(input())\n<\/textarea><\/div>\n<div id='pbhistory9' class='flexcontain' style='display:none;'><\/div>\n<input type='hidden' id='defaultCode9' value='age = int(input())\\n'><\/input>\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<td><input type='button' name='history' value=\"History\" onclick=\"historyClick(9,'6.agecheck')\" ><\/td>\n<\/tr><\/table><select id='pbSelect9' class='selectmore'><option name='more'>More actions...<\/option>\n<option name='default' data-pbonclick=\"pbSetText(9,descape($('#defaultCode9').val()))\" >Reset code to default<\/option>\n<option name='help' data-pbonclick=\"helpClick(9);\" >Help<\/option>\n<\/select><\/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=\"077c66ab7ee0d8ff8a30240ee125cdb1\"\/>\n<div id='pbresults9' class='pbresults avoidline'><\/div>\n<\/div>\n<\/form>\n<script type='text\/javascript'>jQuery(function(){pbToggleCodeMirror(9);});document.getElementById(\"submit9\").value = \"Run program\";document.getElementById(\"inputInUse9\").value = \"N\";<\/script>\n<\/p>\n<p>P\u00f3\u017aniej, w lekcji 9 zobaczymy, \u017ce sytuacje obejmuj\u0105ce wiele kontroli logicznych mo\u017cna upro\u015bci\u0107 za pomoc\u0105 funkcji <code>else<\/code> i <code>elif<\/code> (else if), jak r\u00f3wnie\u017c operator\u00f3w boolowkich \"and\", \"or\", i \"not\". Teaz jeste\u015b gotowy, aby przej\u015b\u0107 do nast\u0119pnej lekcji.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Do tej pory wszystkie nasze programy wykona\u0142y instrukcje po kolei bez pomijania \u017cadnej z linii. Oto przyk\u0142ad; za pomoc\u0105 przycisk\u00f3w lub klawiszy sterowania kursorem mo\u017cesz krok po kroku przej\u015b\u0107 przez ca\u0142y kod. Now\u0105 umiej\u0119tno\u015bci\u0105 na tej lekcji b\u0119dzie stosowanie instrukcji &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/pl-6\/\">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-9952","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/9952","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=9952"}],"version-history":[{"count":19,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/9952\/revisions"}],"predecessor-version":[{"id":10060,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/9952\/revisions\/10060"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=9952"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}