{"id":304,"date":"2020-03-31T17:47:12","date_gmt":"2020-03-31T16:47:12","guid":{"rendered":"https:\/\/stachura-terlecka.pl\/?page_id=304"},"modified":"2020-03-31T17:47:12","modified_gmt":"2020-03-31T16:47:12","slug":"funkcje-cz-2","status":"publish","type":"page","link":"https:\/\/stachura-terlecka.pl\/?page_id=304","title":{"rendered":"Funkcje cz. 2"},"content":{"rendered":"<h2> Funkcje cz 2<\/h2>\n<h4> Do przygotowania przed zaj\u0119ciami<\/h4>\n<p>* Python dla ka\u017cdego. Podstawy programowania. &#8211; Michael Dawson &#8211; Helion **R** &#8211; Rozdzia\u0142 6. Wprowadzenie. Koniec gry.<\/p>\n<h4> Cel i tematyka zaj\u0119\u0107<\/h4>\n<p>Drugie laboratorium ma na celu utrwalenie wiadomo\u015bci z trzeciego laboratorium oraz wprowadzenie nast\u0119puj\u0105cych element\u00f3w:<br \/>\n* funkcje cz 2,<br \/>\n* zasi\u0119g zmiennych,<br \/>\n* projekt,<\/p>\n<h3> &#8211; Zadanie przypominaj\u0105ce<\/h3>\n<p>* Napisz funkcj\u0119  R\u00d3\u017bNICA wyznaczaj\u0105c\u0105 r\u00f3\u017cnic\u0119 dw\u00f3ch zadanych liczb ca\u0142kowitych. Dzia\u0142anie funkcji sprawd\u017a pisz\u0105c odpowiedni program.<br \/>\n* Napisz funkcj\u0119, kt\u00f3ra stwierdza, czy zadana jako parametr liczba ca\u0142kowita ko\u0144czy si\u0119 swoim pierwiastkiem. Liczby ko\u0144cz\u0105ce si\u0119 swoim pierwiastkiem to np. 25, 625. Warto\u015bci\u0105 funkcji ma by\u0107 jeden, je\u015bli liczba spe\u0142nia warunek oraz zero w przeciwnym wypadku. Funkcja przyjmuje jako parametr liczby od 0 do 1000.<br \/>\n* **Podpowied\u017a 1**: Mo\u017cna u\u017cy\u0107 funkcji obliczaj\u0105cej pierwiastek &#8221;sqrt&#8221; z modu\u0142u &#8221;math&#8221;.<br \/>\n* **Podpowied\u017a 2**: Aby dokona\u0107 sprawdzenia mo\u017cna u\u017cy\u0107 operatora modulo &#8221;%&#8221; albo operacji na \u0142a\u0144cuchach znak\u00f3w &#8221;str.endswith(suffix)&#8221;.<br \/>\n* Napisz funkcj\u0119, kt\u00f3ra dla podanego s\u0142owa w j\u0119zyku polskim zwraca jego odpowiednik w j\u0119zyku angielskim. Odpowiednie pary s\u0142\u00f3w przechowaj w zdefiniowanym wcze\u015bniej s\u0142owniku np.  &#8221;dictionary = {&#8216;pies&#8217;: &#8216;dog&#8217;, &#8216;kot&#8217;: &#8216;cat&#8217;, &#8216;chomik&#8217;: &#8216;hamster&#8217;}&#8221;.<\/p>\n<h4> Funkcje<\/h4>\n<h3> Zasi\u0119g zmiennych<\/h3>\n<h4> Zmienne globalne<\/h4>\n<p>Zmienna globalna to ka\u017cda zmienna, kt\u00f3r\u0105 tworzymy w zakresie globalnym &#8211; czyli poza funkcjami.<\/p>\n<p><code python=\"\"><br \/>\ndef read_global():<br \/>\nprint(\"Warto\u015b\u0107 zmiennej value odczytana wewn\u0105trz zakresu lokalnego\",<br \/>\n\"\\nfunkcji read_global() wynosi:\", value)<\/code><\/p>\n<p><code python=\"\"># g\u0142\u00f3wna cz\u0119\u015b\u0107 programu<br \/>\n# value jest zmienn\u0105 globaln\u0105, poniewa\u017c jeste\u015bmy teraz w zakresie globalnym<br \/>\nvalue = 10<\/code><\/p>\n<p><code python=\"\"><br \/>\n<\/code><code python=\"\"><\/code><code python=\"\">read_global()<br \/>\n<\/code><\/p>\n<h4> Zmienne lokalne<\/h4>\n<p>Ka\u017cda zmienna stworzona wewn\u0105trz funkcji to zmienna lokalna.<\/p>\n<p><code python=\"\"><br \/>\ndef local_value():<br \/>\nfive = 5<br \/>\nprint (five)<br \/>\n<\/code><\/p>\n<h3> Przys\u0142anianie zmiennych globalnych<\/h3>\n<p>Zmienne globalne mo\u017cemy przys\u0142ania\u0107, realizujemy to w nast\u0119puj\u0105cy spos\u00f3b.<\/p>\n<p><code python=\"\"><br \/>\ndef shadow_global():<br \/>\nvalue = -10<br \/>\nprint(\"Warto\u015b\u0107 zmiennej value odczytana wewn\u0105trz zakresu lokalnego\",<br \/>\n\"\\nfunkcji shadow_global() wynosi:\", value)<br \/>\n# g\u0142\u00f3wna cz\u0119\u015b\u0107 programu<br \/>\n# value jest zmienn\u0105 globaln\u0105, poniewa\u017c jeste\u015bmy teraz w zakresie globalnym<br \/>\nvalue = 10<br \/>\nprint(\"W zakresie globalnym warto\u015b\u0107 zmiennej value zosta\u0142a ustawiona na:\", value, \"\\n\")<br \/>\n<\/code><\/p>\n<h3> Zmiana warto\u015bci zmiennych globalnych przez funkcj\u0119<\/h3>\n<p>Zmienne globalne mo\u017cna modyfikowa\u0107 z poziomu funkcji, takie dzia\u0142anie realizujemy w nast\u0119puj\u0105cy spos\u00f3b:<\/p>\n<p><code python=\"\"><br \/>\ndef change_global():<br \/>\nglobal value<br \/>\nvalue = -10<br \/>\nprint(\"Warto\u015b\u0107 zmiennej value odczytana wewn\u0105trz zakresu lokalnego\",<br \/>\n\"\\nfunkcji change_global() wynosi:\", value)<\/code><\/p>\n<p><code python=\"\"><br \/>\n<\/code><code python=\"\"># g\u0142\u00f3wna cz\u0119\u015b\u0107 programu<br \/>\n# value jest zmienn\u0105 globaln\u0105, poniewa\u017c jeste\u015bmy teraz w zakresie globalnym<br \/>\nvalue = 10<br \/>\nprint(\"W zakresie globalnym warto\u015b\u0107 zmiennej value zosta\u0142a ustawiona na:\", value, \"\\n\")<br \/>\n<\/code><\/p>\n<h4> Podzia\u0142 na funkcje<\/h4>\n<p>Zapoznaj si\u0119 z poni\u017cszym kodem implementuj\u0105cym poruszanie si\u0119 w grze po mapie.<\/p>\n<p><code python=\"\"><br \/>\nrooms = {<br \/>\n1 : {  \"name\"  : \"Hall\",<br \/>\n\"east\"  : 2,<br \/>\n\"south\" : 3 },<br \/>\n2 : {  \"name\"  : \"Bedroom\",<br \/>\n\"west\"  : 1,<br \/>\n\"south\" : 4 },<br \/>\n3 : {  \"name\"  : \"Kitchen\",<br \/>\n\"north\" : 1 },<br \/>\n4 : {  \"name\"  : \"Bathroom\",<br \/>\n\"north\" : 2 }<br \/>\n}<\/code><\/p>\n<p><code python=\"\">currentRoom = 1<br \/>\nprint(\"Use command:\")<br \/>\nprint(\"&gt; go [direction]\")<br \/>\nprint(\"&gt; exit\")<br \/>\nprint(\"Command:\")<\/code><\/p>\n<p><code python=\"\"><br \/>\n<\/code><code python=\"\"><\/code><code python=\"\">while True:<br \/>\nprint(\"You are in \" + rooms[currentRoom][\"name\"])<br \/>\nmove = input(\"&gt; \").lower().split()<br \/>\nif move[0] == \"go\":<br \/>\nif move[1] in rooms[currentRoom]:<br \/>\ncurrentRoom = rooms[currentRoom][move[1]]<br \/>\nelse:<br \/>\nprint(\"You can't go that way!\")<br \/>\nif move[0] == \"exit\":<br \/>\nprint(\"You exit the game!\")<br \/>\nbreak<br \/>\n<\/code><\/p>\n<p>* Jakiego typu jest warto\u015b\u0107 zmiennej &#8221;move&#8221;?<\/p>\n<h4> Projekt<\/h4>\n<p>Projekt ma polega\u0107 na stworzeniu tekstowej gry konsolowej RPG (przyk\u0142adem gry tekstowej, konsolowej RPG jest [[http:\/\/www.otchlan.pl\/|Otch\u0142a\u0144]]). Gra musi zawiera\u0107 nast\u0119puj\u0105ce elementy:<br \/>\n* menu,<br \/>\n* pomoc,<br \/>\n* co najmniej 3 poziomy,<br \/>\n* na ka\u017cdym z poziom\u00f3w ma by\u0107 co najmniej 5 lokacji po co najmniej 2-3 zadania (przyk\u0142adowe lokacje: rynek, las itp., przyk\u0142adowe zadania w lokacji: p\u00f3j\u015b\u0107 do lasu pokona\u0107 potwora i uwolni\u0107 porwan\u0105 osob\u0119, wygra\u0107 parti\u0119 w k\u00f3\u0142ko i krzy\u017cyk lub inn\u0105 gr\u0119 z przeciwnikiem, kt\u00f3ry b\u0119dzie komputerem itp.)<br \/>\n* gra ma umo\u017cliwia\u0107 stworzenie postaci, wylosowanie warto\u015bci cech, zapis stanu gry.<\/p>\n<p>Strona techniczna. W grze nale\u017cy wykorzysta\u0107 nast\u0119puj\u0105ce elementy:<br \/>\n* struktury:<br \/>\n* listy,<br \/>\n* krotki,<br \/>\n* s\u0142owniki,<br \/>\n* zapis i odczyt z\/do pliku,<br \/>\n* funkcje,<br \/>\n* p\u0119tle,<br \/>\n* obiekty,<br \/>\n* instrukcje warunkowe.<\/p>\n<p>Nale\u017cy zaimplementowa\u0107 [[http:\/\/usingpython.com\/wp-content\/uploads\/roomPlan.png|map\u0119 przej\u015b\u0107]] np. w formie zagnie\u017cd\u017conych struktur:<br \/>\n<code python=\"\"><br \/>\nrooms = {<br \/>\n1 : {  \"name\"  : \"Hall\",<br \/>\n\"east\"  : 2,<br \/>\n\"south\" : 3 },<br \/>\n2 : {  \"name\"  : \"Bedroom\",<br \/>\n\"west\"  : 1,<br \/>\n\"south\" : 4 },<br \/>\n3 : {  \"name\"  : \"Kitchen\",<br \/>\n\"north\" : 1 },<br \/>\n4 : {  \"name\"  : \"Bathroom\",<br \/>\n\"north\" : 2 }<br \/>\n}<br \/>\n<\/code><\/p>\n<h4> &#8211; Zadania do samodzielnego wykonania na laboratorium<\/h4>\n<p>* Napisz funkcj\u0119 modyfikuj\u0105c\u0105 zmienn\u0105 globaln\u0105 poprzez przypisanie jej warto\u015bci o po\u0142ow\u0119 mniejszej.<br \/>\n* Czy dobr\u0105 praktyk\u0105 jest wykorzystywanie zmiennych globalnych, swoj\u0105 odpowied\u017a uzasadnij.<br \/>\n* Zmodyfikuj program poruszania si\u0119 po mapie dziel\u0105c go na funkcje. Dodaj dodatkowe pomieszczenie ganek (Porch) i stw\u00f3rz do niego odpowiednie przej\u015bcia. Spraw, aby wyj\u015bcie &#8221;exit&#8221; z programu by\u0142o mo\u017cliwe tylko b\u0119d\u0105c na ganku.<\/p>\n<h3> &#8211; Przyk\u0142ady u\u017cywane na laboratoriach<\/h3>\n<p>Przyk\u0142ady pochodz\u0105 z ksi\u0105\u017cki<br \/>\n* Podstawow\u0105 ksi\u0105\u017ck\u0105 wykorzystywan\u0105 na laboratorium b\u0119dzie: \u201ePython dla ka\u017cdego. Podstawy programowania Wydanie III\u201d, autor Michael Dawson, Wydawnictwo Helion **(R)**<\/p>\n<h4> Zadanie domowe<\/h4>\n<p>**Wszystkie zadania domowe nale\u017cy archiwizowa\u0107 poniewa\u017c w dalszej cz\u0119\u015bci laboratori\u00f3w b\u0119dziecie je Pa\u0144stwo rozbudowywa\u0107**<br \/>\n*  Napisz funkcj\u0119 realizuj\u0105c\u0105 system walki. Do funkcji prze\u015blij informacje odno\u015bnie liczby punkt\u00f3w \u017cycia gracza i typie przeciwnika (funkcja ze s\u0142ownika z przeciwnikami powinna pobra\u0107 informacj\u0119 o liczbie punkt\u00f3w \u017cycia przeciwnika). W funkcji naprzemian losowana jest warto\u015b\u0107 ciosu (0-20), kt\u00f3re zadaj\u0105 sobie gracz i przeciwnik. Wylosowane warto\u015bci s\u0105 odpowiednio odejmowane od liczby punkt\u00f3w \u017cycia gracza albo przeciwnika. Przegran\u0105 jest osoba, kt\u00f3ra straci swoje punkty \u017cycia. Funkcja powinna zwr\u00f3ci\u0107 informacj\u0119, kto wygra\u0142 i liczb\u0119 punkt\u00f3w \u017cycia pozosta\u0142\u0105 zwyci\u0119zcy. Funkcja jako efekt uboczny powinna relacjonowa\u0107 stan walki.<br \/>\n* Python dla ka\u017cdego. Podstawy programowania. &#8211; Michael Dawson &#8211; Helion **R** &#8211; Rozdzia\u0142 7.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Funkcje cz 2 Do przygotowania przed zaj\u0119ciami * Python dla ka\u017cdego. Podstawy programowania. &#8211; Michael Dawson &#8211; Helion **R** &#8211; Rozdzia\u0142 6. Wprowadzenie. Koniec gry. Cel i tematyka zaj\u0119\u0107 Drugie laboratorium ma na celu utrwalenie wiadomo\u015bci z trzeciego laboratorium oraz wprowadzenie nast\u0119puj\u0105cych element\u00f3w: * funkcje cz 2, * zasi\u0119g zmiennych, * projekt, &#8211; Zadanie przypominaj\u0105ce [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/stachura-terlecka.pl\/index.php?rest_route=\/wp\/v2\/pages\/304"}],"collection":[{"href":"https:\/\/stachura-terlecka.pl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/stachura-terlecka.pl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/stachura-terlecka.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stachura-terlecka.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=304"}],"version-history":[{"count":2,"href":"https:\/\/stachura-terlecka.pl\/index.php?rest_route=\/wp\/v2\/pages\/304\/revisions"}],"predecessor-version":[{"id":306,"href":"https:\/\/stachura-terlecka.pl\/index.php?rest_route=\/wp\/v2\/pages\/304\/revisions\/306"}],"wp:attachment":[{"href":"https:\/\/stachura-terlecka.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=304"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}