{"id":10495,"date":"2017-08-16T01:44:44","date_gmt":"2017-08-16T05:44:44","guid":{"rendered":"https:\/\/cscircles.cemc.uwaterloo.ca\/?page_id=10495"},"modified":"2018-07-02T16:51:19","modified_gmt":"2018-07-02T20:51:19","slug":"pl-athome","status":"publish","type":"page","link":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/pl-athome\/","title":{"rendered":"Python w domu"},"content":{"rendered":"<p>Kod, kt\u00f3ry przesy\u0142asz poprzez stron\u0119 CS Circles, jest oceniany za pomoc\u0105 kopii <em>Pythona<\/em> uruchomionej na naszym serwerze internetowym, co pozwala nam zautomatyzowa\u0107 ocenianie. Jednak bardziej tradycyjnym sposobem programowania jest instalowanie interpretera j\u0119zyka Python na komputerze osobistym. Uruchamianie Pythona w domu ma kilka dodatkowych zalet: (i) jeste\u015b niezale\u017cny od ograniczonych zasob\u00f3w na naszym serwerze; (ii) mo\u017cesz pisa\u0107 programy interaktywne (patrz poni\u017cej); (iii) po zainstalowaniu oprogramowania nie potrzebujesz po\u0142\u0105czenia internetowego do uruchamiania program\u00f3w; (iv) mo\u017cesz uzyska\u0107 dost\u0119p do narz\u0119dzi debugowania, d\u017awi\u0119ku i grafiki.<\/p>\n<h2><span style=\"color: #000000;\"><strong>Darmowe narz\u0119dzia Pythona<\/strong><\/span><\/h2>\n<p>Jedno z miejsc do pobierania  Pythona uruchamianego na twoim komputerze z systemem Windows, Mac lub Linux to oficjalna strona Python.org website. <a href=\"https:\/\/www.python.org\/downloads\/\">Kliknij tutaj, aby odwiedzi\u0107 stron\u0119 the Download Python page<\/a>.\u00a0Wybierz najnowsz\u0105 wersj\u0119 3.x instalatora odpowiedni\u0105 dla twojego komputera (np., dla 32-bit Windows, \"Windows x86 MSI Installer\"), a nast\u0119pnie pobierz i uruchom instalator. Gdy wszystko zostanie ju\u017c zainstalowane, uruchomienie programu o nazwie <strong>IDLE<\/strong> spowoduje wy\u015bwietlenie interaktywnego okna j\u0119zyka Python.<\/p>\n<p>Uwaga: je\u015bli jeste\u015b w szkole, w zale\u017cno\u015bci od skonfigurowania uprawnie\u0144, mo\u017cesz nie by\u0107 w stanie zainstalowa\u0107  samodzielnie oprogramowania; mo\u017ce by\u0107 konieczne uzyskanie pozwolenia i pomocy administratora sieci. Mimo to, istnieje kilka instalacji Pythona, kt\u00f3re mo\u017cna zainstalowa\u0107 &amp; uruchomi\u0107 z dysku USB, na przyk\u0142ad\u00a0<a href=\"http:\/\/portablepython.com\">portablepython.com<\/a>.<\/p>\n<p>IDLE nie ma kilku przydatnych narz\u0119dzi do debugowania. <a href=\"http:\/\/wingide.com\/\">Wing IDE<\/a>\u00a0ma wiele funkcji do debugowania, w tym  <a href=\"http:\/\/wingide.com\/psupport\/wingide-1.1\/node7.html#SECTION00740000000000000000\">mo\u017cliwo\u015b\u0107 tworzenia punkt\u00f3w przerwania<\/a>, wykonywania <a href=\"http:\/\/wingide.com\/psupport\/wingide-1.1\/node7.html#SECTION00760000000000000000\">krok po kroku<\/a>, obserwowania zmiennych i stosu wywo\u0142a\u0144. Inne opcje, kt\u00f3re okaza\u0142ay si\u0119 trudniejsze do zainstalowania, s\u0105 w <a href=\"http:\/\/pydev.org\/\">PyDev<\/a> lub w <a href=\"http:\/\/www.jetbrains.com\/pycharm\/\">PyCharm<\/a>. <em>Do ko\u0144ca tej strony m\u00f3wimy ju\u017c tylko o <strong>IDLE<\/strong>.<\/em><\/p>\n<h2>Interaktywna sesja (Interactive Prompt)<\/h2>\n<p>Po otwarciu <strong>IDLE<\/strong>\u00a0pojawi si\u0119 <em>interactive prompt<\/em> (czasami nazywany <em>pow\u0142ok\u0105<\/em>). Tutaj mo\u017cesz bezpo\u015brednio wpisa\u0107 poszczeg\u00f3lne polecenia i natychmiast je wykona\u0107. Znak<\/p>\n<pre>&gt;&gt;&gt;<\/pre><code><\/code>wskazuje, \u017ce Python czeka na twoje dane wej\u015bciowe. Na przyk\u0142ad, je\u015bli wpiszesz <code>print(2+3)<\/code> a nast\u0119pnie wci\u015bniesz klawisz Enter, zobaczysz<\/p>\n<pre>&gt;&gt;&gt; print(2+3)\r\n5<\/pre>Pierwsza linia to to, o co porosi\u0142e\u015b Pythona, a druga to wynik w Pythonie: rezultatem wykonania instrukcji jest obliczenie w Pythonie liczby <code>5<\/code> i wydrukowanie jej. Je\u015bli chcesz , mo\u017cesz pomin\u0105\u0107 <code>print<\/code>:<\/p>\n<pre>&gt;&gt;&gt; 2+3\r\n5<\/pre>Innymi s\u0142owy, Python domy\u015blnie wy\u015bwietli warto\u015b\u0107 instrukcji, o kt\u00f3rej wykonanie poprosisz. Jedna rzecz, przydatne jest sprawdzenie wersji: zobaczysz dok\u0142adn\u0105 wersj\u0119 Pythona, kt\u00f3rej u\u017cywamy w CS Circles.<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>Sprawd\u017a, kt\u00f3rej wersji Pythona u\u017cywamy. Je\u015bli uruchomisz te dwa wiersze kodu w domu, zobaczysz, jakiej dok\u0142adnie wersji <em>ty<\/em> u\u017cywasz.<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'>\nimport sys\nprint(sys.version_info)<\/textarea><\/div>\n<div id='pbhistory0' class='flexcontain' style='display:none;'><\/div>\n<div class='pyboxbuttons'><table><tr>\n<td><input type='submit' name='submit' id='submit0' value=' '\/><\/td>\n<td><input type='button' name='consolecopy' value=\"Open in console\" onclick=\"pbConsoleCopy(0)\" ><\/td>\n<td><input type='button' name='visualize' value=\"Visualize\" onclick=\"pbVisualize(0,'N')\" ><\/td>\n<\/tr><\/table><\/div>\n<input type=\"hidden\" name=\"lang\" value=\"\"\/><input type=\"hidden\" id=\"inputInUse0\" name=\"inputInUse\" value=\"Y\"\/>\n<input type=\"hidden\" name=\"pyId\" value=\"0\"\/>\n<input type=\"hidden\" name=\"hash\" value=\"e58674cc16da28c4cea98460342f7446\"\/>\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(Uczymy g\u0142\u00f3wnej wersji 3, poniewa\u017c jest ona \u0142atwiejsza dla pocz\u0105tkuj\u0105cych.\u00a0G\u0142\u00f3wna wersja 2 jest u\u017cywana w wielu bran\u017cach, ale wersja 3 jest co raz bardziej wspierana.)<\/p>\n<h2>Przydatne fakty<\/h2>\n<ul>\n<li>W sesji interaktywnej mo\u017cna uzyska\u0107 dost\u0119p do dokumentacji wbudowanych funkcji u\u017cywaj\u0105c <code>pomocy<\/code> dla funkcji. Na przyk\u0142ad, wpisuj\u0105c  <code>help(print)<\/code> otrzymasz podstawowe informacje o dzia\u0142aniu funkcji <code>print()<\/code>.<\/li>\n<li>TAby zatrzyma\u0107 niesko\u0144czon\u0105 p\u0119tl\u0119 lub obliczenia trwaj\u0105ce zbyt d\u0142ugo, mo\u017cesz zatrzyma\u0107 <em>przerwa\u0107\/wstrzyma\u0107<\/em>\u00a0program naciskaj\u0105c Ctrl-C. Spr\u00f3buj uruchomi\u0107 nast\u0119puj\u0105ce polecenie:\n<pre>while (1 &gt; 0): purpose = \"Wasting Time\"<\/pre>i wstrzymaj u\u017cywaj\u0105c Ctrl-C.<\/li>\n<li>Je\u015bli u\u017cywasz Pythona jako kalkulatora lub robisz ma\u0142e eksperymenty, oto przydatny skr\u00f3t. Znak podkre\u015blenia <code>_<\/code> odnosi si\u0119 do warto\u015bci wyniku ostatniego wyra\u017cenia, kt\u00f3re zosta\u0142o wykonane. Oto przyk\u0142ad, je\u015bli w jednej linii wpiszesz <code>2+3<\/code>, wtedy wpisuj\u0105c w nat\u0119pnej linii <code>_*2<\/code>, zobaczysz:\n<pre>&gt;&gt;&gt; 2+3\r\n5\r\n&gt;&gt;&gt; _*2\r\n10<\/pre>\n<\/li>\n<\/ul>\n<h2>Edycja Plik\u00f3w\/Skrypt\u00f3w<\/h2>\n<p>Je\u015bli pracujesz nad z\u0142o\u017conym problemem, b\u0119dziesz musia\u0142 napisa\u0107 i edytowa\u0107 d\u0142ugi plik zawieraj\u0105cy wiele polece\u0144, podobnie do tego, co zrobili\u015bmy na stronie CS Circles website. Aby to zrobi\u0107 w <strong>IDLE<\/strong>, przejd\u017a do <span style=\"text-decoration: underline;\">F<\/span>ile menu i wybierz <span style=\"text-decoration: underline;\">N<\/span>ew Window (lub u\u017cyj skr\u00f3tu Ctrl-N). Otworzy si\u0119 nowe okno, kt\u00f3re jest podstawowym edytorem tekstu (nie interaktywn\u0105 sesj\u0105).Napisz kod w tym oknie (na przyk\u0142ad <code>print(\"Hello, World\")<\/code>); zauwa\u017c, \u017ce nie jest wykonywany po naci\u015bni\u0119ciu klawisza Enter. Zapisz ten plik na swoim komputerze (z menu File wybierz Save lub naci\u015bnij Ctrl-S). Nast\u0119pnie mo\u017cesz go uruchomi\u0107: przejd\u017a do menu Run i wybierz Run Module(lub u\u017cyj skr\u00f3tu F5). Zobaczysz wynik (wyj\u015bcie) dzia\u0142ania twojego progamu w interaktywnym oknie!<\/p>\n<h1>Interaktywne wej\u015bcie<\/h1>\n<p>G\u0142\u00f3wn\u0105 cech\u0105, kt\u00f3ra staje si\u0119 mo\u017cliwa po uruchomieniu Pythona w domu, a nie na stronie CS Circles, jest to, \u017ce mo\u017cesz teraz u\u017cywa\u0107  <em>interaktywnych danych wej\u015bciowych<\/em> w\u00a0tak zwanym oknie Interpretera. Polecenie <code>input()<\/code> spowoduje otrzymanie linii danych wej\u015bciowych od u\u017cytkownika z interaktywnego interpretera i ten ci\u0105g stanie si\u0119 warto\u015bci\u0105zwracan\u0105 przez funkcj\u0119  <code>input()<\/code>. Ponadto, kiedy wywo\u0142ujesz input, mo\u017cesz przekaza\u0107  <em>string<\/em>\u00a0jako argument, kt\u00f3ry pomaga zrozumie\u0107 u\u017cytkownikowi, co ma robi\u0107. Przytaczamy ma\u0142y przyk\u0142ad... skopiuj go do edytora IDLE, a nast\u0119pnie, aby go wypr\u00f3bowa\u0107, zapisz i uruchom.<\/p>\n<pre>print(\"Good day!\")\r\nusername = input(\"What is your name? \")\r\nprint(\"Nice to meet you,\", username)<\/pre>\n<h2>Przyk\u0142ad Interakcji: Gra w Odgadywanie<\/h2>\n<p>Podajemy przyk\u0142ad, w kt\u00f3rym interaktywne wprowadznie ma du\u017ce znaczenie: w grze na odgadywanie gra si\u0119 przeciwko komputerowi. U\u017cyjemy z biblioteki <code>random<\/code>: funkcji  <code>random.randint(A, B)<\/code> generuj\u0105cej losow\u0105 liczb\u0119 ca\u0142kowit\u0105 z przedzia\u0142u <code>A<\/code> i <code>B<\/code> (w\u0142\u0105cznie). Oto ma\u0142a gra z u\u017cyciem tych funkcji: skopiuj i wklej j\u0105 do swojego edytora, zapisz i uruchom!<\/p>\n<pre>import random\r\nsecretNumber = random.randint(1, 100)\r\nprint(\"I'm thinking of a secret number between 1 and 100...\")\r\nwhile True:\r\n    guess = int(input(\"What is your guess? \"))\r\n    if (guess == secretNumber):\r\n        break\r\n    if (guess &gt; secretNumber):\r\n        print(\"Sorry, your guess is too high.\")\r\n    if (guess &lt; secretNumber):\r\n        print(\"Sorry, your guess is too low.\")\r\nprint(\"Dang, you got it!\")<\/pre>Z modu\u0142em \u017c\u00f3\u0142wi Python mo\u017cesz tworzy\u0107 rysunki liniowe i animacje geometryczne!<br \/>\nMo\u017cesz pisa\u0107 programy w j\u0119zyku Python, kt\u00f3re mog\u0105 zapisywa\u0107 i odczytywa\u0107 pliki.<br \/>\nMo\u017cesz u\u017cywa\u0107 Pythona do generowania sygna\u0142\u00f3w muzycznych!<br \/>\nJe\u015bli szukasz czego\u015b, co powie Ci mn\u00f3stwo zabawnych i interesuj\u0105cych pomys\u0142\u00f3w opartych na interaktywnym Pythonie, polecamy darmow\u0105 ksi\u0105\u017ck\u0119 Invent Your Own Computer Games With Python.<\/p>\n<h2>A potem...<\/h2>\n<p>Je\u015bli korzystanie z tych program\u00f3w w domu jest dla ciebie ekscytuj\u0105ce, mo\u017cesz napisa\u0107 bardziej skomplikowane programy, takie jak interaktywny program, kt\u00f3ry konwertuje jednostki miary. Oto kilka rzeczy, kt\u00f3re mo\u017cesz zrobi\u0107 teraz, gdy korzystasz z Pythona w domu:<\/p>\n<ul>\n<li><a href=\"http:\/\/docs.python.org\/py3k\/library\/turtle.html#module-turtle\">biblioteka Pythona <strong>turtle<\/strong><\/a> umo\u017cliwi ci tworzenie geometrycznej grafiki i geometrycznych animacji<\/li>\n<li>mo\u017cesz w j\u0119zyku Python pisa\u0107 programy, kt\u00f3re <a href=\"http:\/\/docs.python.org\/tutorial\/inputoutput.html#reading-and-writing-files\">czytaj\u0105 i zapisuj\u0105 pliki<\/a>;<\/li>\n<li>mozesz uzywa\u0107 Pythona do <a href=\"http:\/\/stackoverflow.com\/questions\/1967040\/how-can-i-create-a-melody-is-there-any-sound-module\">d\u017awi\u0119k\u00f3w muzycznych<\/a>!<\/li>\n<\/ul>\n<p>je\u015bli szukasz \u017ar\u00f3d\u0142a, kt\u00f3re wyja\u015bnia z detalami, wiele zabawnych i ciekawych pomys\u0142\u00f3w z interaktywnym Pythonem, polecamy darmow\u0105 ksi\u0105\u017ck\u0119\u00a0<a href=\"http:\/\/inventwithpython.com\/\">Invent Your Own Computer Games With Python<\/a>.<\/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>  U\u017cycie Pygame w Pythonie 3 w \u015brodowisku Windows jest mo\u017cliwe z <a href=\"http:\/\/www.lfd.uci.edu\/~gohlke\/pythonlibs\/#pygame\">dodatkowymi bibliotekami dost\u0119pnymi tutaj<\/a>.  <\/span><\/td><\/table><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kod, kt\u00f3ry przesy\u0142asz poprzez stron\u0119 CS Circles, jest oceniany za pomoc\u0105 kopii Pythona uruchomionej na naszym serwerze internetowym, co pozwala nam zautomatyzowa\u0107 ocenianie. Jednak bardziej tradycyjnym sposobem programowania jest instalowanie interpretera j\u0119zyka Python na komputerze osobistym. Uruchamianie Pythona w domu &hellip; <a href=\"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/pl-athome\/\">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-10495","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10495","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=10495"}],"version-history":[{"count":7,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10495\/revisions"}],"predecessor-version":[{"id":10970,"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/pages\/10495\/revisions\/10970"}],"wp:attachment":[{"href":"https:\/\/cscircles.cemc.uwaterloo.ca\/dev\/wp-json\/wp\/v2\/media?parent=10495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}