Informatika

Programovanie

Chytanie hada pre deti - Výuka programovania s Pythonom

obálka knihy

Preklad knihy Snake Wrangling for Kids, Learning to Program with Python od Jason R. Briggsa.

Verzia 0.7.7, Copyright 2007.

Toto dielo spadá pod licenciu Creative Commons (by-nc-sa).

 

 

 

Predslov

Poznámka pre rodičov ...


Vážení rodičia a učitelia,

  k tomu, aby vaše dieťa mohlo začať s programovaním, bude potrebné, aby ste do počítača nainštalovali Python (verzie 2.4 alebo vyššej). Je to pomerne jednoduchá úloha, ale existuje niekoľko zádrheľov v závislosti na tom, aký druh operačného systému vlastníte. Ak ste si práve kúpili nový počítač a nemáte potuchy, čo s ním máte robiť, a po prečítaní predchádzajúcej vety vám behajú zimomriavky po chrbte, budete potrebovať niekoho, kto vám s tým pomôže. V závislosti od stavu vášho počítača a rýchlosti vášho internetového pripojenia by to mohlo trvať od 15 minút po niekoľko hodín.

Najskôr je potrebné stiahnuť a nainštalovať najnovšiu verziu Python určenú pre váš operačný systém. Pre operačný systém Windows si ho môžete stiahnuť na stránke 

http://www.python.org/download/

V operačnom systéme Linux je to rôzne pri každej distribúcií. Určite však nájdete návod pomocou vyhľadávača zadaním mena vašej distribúcie a slova Python napríklad zadaním výrazu "how to install python in ubuntu". Takýmto spôsobom v skutočnosti nainštalujeme čokoľvek.

Po dokončení inštalácie. . .

. . . Možno si budete musieť sadnúť vedľa vášho dieťaťa a niekoľko prvých kapitol prejsť s ním, ale dúfajme, že po pár príkladoch, ktoré by ste mali zvládnuť tak, že si zviažete ruky za chrbtom a nebudete dieťaťu siahať na klávesnicu, by to už malo zvládnuť samé. Pred začatím by malo vedieť aspoň trochu robiť s niekoľkými textovými editormi (nie textovým procesorom, ako je Microsoft Word, ale starým-nemoderným textovým editorom). Malo by v ňom vedieť otvoriť súbor, vytvoriť nový súbor a uložiť to, čo do neho napíše. Okrem tohto ho táto kniha všetko potrebné naučí.

Ďakujem za váš čas.

  S pozdravom

KNIHA

Kapitola 1

Všetky hady nehryzú

Gratulujem ti, že si dostal túto knihu k narodeninám alebo pod stromček. Teta Margit z Veľkého Medera ti pôvodne chcela doniesť dve rôzne ponožky rôznych veľkostí a farieb (a ty by si ich aj tak nenosil, aj keby si do nich dorástol). Našťastie počula niekoho hovoriť o tejto vytlačiteľnej knihe, kto sa ju minulé Vianoce snažil naučiť robiť na počítači (vzdal to, keď začali hovoriť o myši), tak ho poprosila, či by jej nevytlačil jeden výtlačok pre teba. Buď rád, že si nedostal staré plesnivé ponožky.

Dúfam, že nie si príliš sklamaný, že som iba na recyklovanom papieri a že ťa neodradí môj nie celkom pekný názov (no dobre, vôbec nie je pekný), hovoriaci o “Výuke. . .”. Počkaj ale chvíľku a porozmýšľaj, ako sa teraz asi cítim. Keby som bola čarodejníkom z tých knižiek, ktoré máš na poličke v spálni, už by som mala asi pričarované zuby... alebo možno oči. Možno by som mala v sebe pohyblivé obrázky alebo by som vydávala plačlivé zvuky pri otváraní mojich stránok. Miesto toho som vytlačená na listoch formátu A4 so somárskymi ušami a ak som mala šťastie, som zviazaná v zložke alebo hrebeňovou väzbou. Ja viem, nemám oči.

Dala by som čokoľvek za sadu pekných ostrých zubov...

Nie je to však až tak zlé, ako to vyzerá. Aj keď nemôžem hovoriť... alebo dať ti po prstoch, ak ma nebudeš čítať... Môžem ti povedať niečo o tom, ako fungujú počítače. Nie o súčiastkách s drôtmi a čipmi a zariadeniach, ktorých sa nesmieš chytať, lebo by ťa pokopal elektrický prúd (to nie!!)— ale o veciach skrytých za drôtmi, čipmi a bitmi, ktoré robia z počítača užitočnú vec.

elektrinaJe to trochu podobné myšlienkam, ktoré lietajú niekde vo vnútri tvojej hlavy. Keby sme nemali myšlienky, sedeli by sme na podlahe svojej izby, pozerali do prázdna a slintali si na tričko. Bez programov by boli počítače dobré možno len na podopieranie dverí a ani potom by neboli veľmi užitočné, pretože by sme o ne v noci zakopávali. Nie je nič horšie ako palec narazený v tme.

Som len kniha a napriek tomu to viem.

U vás doma môže niekde posedávať Playstation, Xbox alebo Wii—ten sa nezaobíde bez programov (Hier). Váš DVD prehrávač, chladnička a aj auto majú v sebe počítačové programy, aby nám dokázali lepšie pomôcť. DVD prehrávač má program, ktorý nám umožňuje nastaviť, čo chceme z DVD prehrať; chladnička môže mať jednoduchý program, ktorý dáva pozor, aby nežrala veľa elektriny, ale popritom udržala naše jedlo v chlade; vaše auto môže mať počítačový program, ktorý upozorňuje vodiča, že ide do niečoho naraziť.

Ten, kto vie napísať počítačové programy, môže urobiť rôzne užitočné veci. Vytvoriť vlastné hry. Upraviť webové stránky tak, aby boli farebnejšie a zaujímavejšie. Zostaviť si program, ktorý nám pomôže s domácou úlohou.

Dosť bolo rečí, poďme na niečo zaujímavejšie.

Niekoľko slov o jazyku

Rovnako ako ľudia, niektoré veľryby, delfíny, a možno aj rodičia (aj keď to je diskutabilné), aj počítače majú vlastný jazyk. Vlastne rovnako ako ľudia dokonca viacero jazykov. Existuje toľko jazykov, že pokryjú takmer všetky písmená abecedy. A, B, C, D a E nie sú len písmená, sú to tiež programovacie jazyky (čo dokazuje, že dospelí nemajú fantáziu, a mali by si pred pomenovaním jazyka prečítať slovník alebo synonymický slovník).

Existuje tiež mnoho programovacích jazykov, ktoré sa volajú podľa ľudí, alebo sú skratkami slovných spojení (začiatočné písmená niekoľkých slov) a niektoré sa dokonca volajú po televíznych reláciách. Oh, a skoro som zabudla na pluská a krížiky (+, #) za niektorými písmenami, ktoré som pred chvíľou vymenovala — aj takýchto programovacích jazykov je niekoľko. Aby bola situácia ešte komplikovanejšia, niektoré jazyky sú takmer rovnaké a líšia sa len mierne, podobne ako nárečia u ľudí.

Čo som ti hovorila? Nemajú predstavivosť!

Našťastie mnoho týchto jazykov upadlo do zabudnutia alebo bolo úplne zrušených; no zoznam rôznych spôsobov, akým sa môžeme ‘rozprávať’ s počítačom je stále hrozivo veľký. Ja ti budem hovoriť iba o jednom z nich — inak by sme nevedeli ani začať.

Bude to produktívnejšie ako sedieť v spálni a slintať si na tričko. . .

Príkazy nejedovatého škrtiaceho hada...

. . .alebo skrátene Pythona.

Okrem toho, že Python je had, je to tiež názov programovacieho jazyka. Avšak nebol pomenovaný podľa beznohého plaza, ale podľa postavy z televízneho seriálu. Monty Python bola anglická komédia, ktorá bola populárna v sedemdesiatych rokoch (a je populárna aj v súčasnosti), ktorá sa od určitého veku stane zábavná. Ktokoľvek kto má menej rokov ako. . . povedzme 12. . . sa bude čudovať, čo je na tom hadovi smiešne.

V Pythone je veľa vecí (v programovacom jazyku, nie v hadovi ani televíznom seriále), ktoré sú veľmi užitočné, ak sa učíš programovať. Teraz v tomto momente je najdôležitejšie, že sa dá veľmi rýchlo spustiť a niečo v ňom urobiť.

Teraz je čas overiť si, či si mamina, ocino (alebo niekto, kto má na starosti počítač) prečítali moju úvodnú časť nazvanú  “Poznámka pre rodičov”.

Overíš si to takto:

Ak sa nachádzaš v systéme Windows, v ľavom dolnom rohu obrazovky je tlačidlo Štart. Klikni naň a potom na "Všetky programy" (ktoré majú vedľa seba taký zelený trojuholník) a pozorne prejdi zoznam programov, v ktorom by si mal uvidieť ‘Python 3.0’ (alebo niečo podobné). Na obrázku 1.1 si môžeš pozrieť, ako by malo vyzerať to, čo hľadáš. Klikni na ‘Python (command line)’ a uvidíš niečo podobné ako na obrázku 1.2.

Python v ponuke windows

Obrázok 1.1: Python v ponuke Windows.

Ak tlačidlo Štart nevidíš, v takom prípade asi máte na počítači Linux. Spýtaj sa maminy alebo ocina, ktorý terminál by si mal použiť (malo by sa to volať ‘Terminál’, ‘rxvt’, ‘xterm’ alebo nejakým iným názvom — čo je dôvod, prečo sa budeš musieť spýtať). Spusti terminál, napíš ‘python’ (bez úvodzoviek) a stlač kláves Enter. Mal by si vidieť niečo podobné ako je na obrázku 1.2.

Konzola python windows Konzola python linux

Obrázok 1.2: Vľavo konzola jazyka Python pre Windows, vpravo konzola jazyka Python spustená v Linuxe (Ubuntu).

Ak si práve zistil, že rodičia si moju úvodnú časť neprečítali. . .

. . .pretože ti niečo chýbalo pri postupe podľa mojich inštrukcií — zober ma a strč ma svojim rodičom pod nos, keď čítajú noviny a majú dobrú náladu. Hovor “prosim prosim prosim”, až pokým nezačneš byť otravný, čo ich prinúti vstať z gauča. Samozrejme, druhá možnosť je, že si úvodnú časť prečítaš ty a podľa inštrukcií si nainštaluješ Python sám.

Prvý program v Pythone

Ak sa ti s trochou šťastia podarilo spustiť konzolu,ktorá slúži na zadávanie príkazov a spúšťanie programov Pythonu, môžeme pokračovať ďalej. Po spustení konzoly (alebo po zadaní príkazu), uvidíš ‘výzvu’ príkazového riadka. V konzole Pythonu tvoria výzvu tri lomené zátvorky alebo znamienka väčší než (>):

>>>

Ak dáš vedľa seba viac príkazov Pythonu, dostaneš program, ktorý môže vedieť viac ako len niečo vypísať v konzole. . ., ale začať treba od jednoduchých vecí, preto zatiaľ budeme príkazy zadávať do konzoly za výzvu príkazového riadka (>>>). Tak skúsme pre začiatok napísať tento príkaz:

print("Ahoj Svet")

Nezabudni napísať úvodzovky (to je toto: ” ”) a stlačiť na konci riadka kláves Enter. Mal by si uvidieť niečo takéto:

>>> print("Ahoj Svet")
Ahoj Svet

Výzva sa objaví znova, čo znamená, že konzola Pythonu je pripravená spracovať ďalšie príkazy.

Gratulujem ti! Práve si vytvoril prvý program v Pythone. Príkaz print je funkcia, ktorá vypíše čokoľvek, čo je vo vnútri zátvorky, späť do konzoly– budeme ju neskôr často používať.

Druhý program v Pythone... zase ten istý?

Programy v Pythone by vôbec neboli užitočné, keby sme museli zadávať príkazy v tom momente, keď chceme niečo urobiť—alebo keby sme pre niekoho vytvorili program, a on by ho pred použitím musel celý znova napísať.

Textový procesor, ktorý používaš na napísanie školského projektu má niečo medzi 10 a 100 miliónom riadkov príkazov. Keby sme to vytlačili na papier, bolo by to asi 400,000 strán. . . čo by vytvorilo vežu z papiera vysokú okolo 40 metrov. Len si predstav, že by si si kúpil v obchode takýto program, koľkokrát by si musel prejsť z obchodu k autu, kým by si ho celý do auta naložil. . .
. . .a ako by ste to vôbec odviezli, keby fúkal vietor, ľahko by takú vysokú vežu z papiera rozfúkalo. Našťastie existuje riešenie, aby sme nič takéto nemuseli robiť.

 

rozfúkané papiere

Ak máš Windows otvor si Poznámkový blok (Klikni na Štart, Všetky programy, Príslušenstvo), ak máš Linux, tak sa spýtaj ocina alebo maminy, ktorý editor máš použiť a napíš do neho príkaz print rovnakým spôsobom, ako keď si ho zapisoval do príkazového riadka:

print("Ahoj Svet")

Klikneme na menu Súbor, potom na Uložiť, zadáme názov súboru ahoj.py a ak sme vo Windows uložíme súbor na plochu. V Linuxe súbor uložíme do domovského priečinka (v oboch prípadoch priečinky uvidíme ako ikonu niekde v dialógovom okne). V systéme windows stačí dvakrát kliknúť na uložený súbor. V systéme Linux otvoríme terminál a zadáme:

python ahoj.py

Po spustení uvidíš výpis Ahoj Svet, presne tak, ako keby si ho napísal do konzoly Pythonu (pozri obrázok 1.2).

Teraz môžeš vidieť, že tí múdri ľudia, čo vymysleli Python, ťa zachránili pred potrebou písať ten istý program znova a znova. Nie je to ako pred rokom 1980. Choď a opýtaj sa otca, či mal počítač ZX81 alebo Didaktik, keď bol mladší.

Počítače Didaktik, ktoré sa začali vyrábať v roku 1980 a boli jedny z prvých cenovo dostupných domácich počítačov. Veľa mladých chlapcov a dievčat boli úplne zbláznený do prepisovania kódu hier, ktoré vychádzali v časopisoch, po dlhých hodinách písania však zistili, že program nepracuje tak ako má.

Koniec začiatku

Vitaj v nádhernom svete programovania. Začali sme sa naozaj jednoducho, "Ahoj Svet". Keď sa budeš učiť niekedy iný programovací jazyk, zistíš, že vo väčšine prípadov sa začína rovnako.

V ďalšej kapitole budeme robiť ďalšie užitočné veci s konzolou Pythonu, a potom sa pozrieme na to, ako sa vytvára program.

Kapitola 2

8 krát 3,57 rovná sa...

Koľko je 8 krát 3,57? Potrebuješ použiť kalkulačku? Možno si veľmi šikovný a dokážeš to vypočítať z hlavy — ale o to nám teraz nejde. Rovnakú vec môžeme urobiť aj v konzole Pythonu. Spusti znova konzolu (ak si preskočil kapitolu 1, tak v nej nájdeš informácie ako to urobiť) a keď sa zjaví výzva príkazového riadka napíš 8∗3.57 a stlač kláves Enter (miesto desatinnej čiarky sa v Pythone píše bodka):

Python 3.0 (r30:67503, Dec 6 2008, 23:22:48)
Type "help", "copyright", "credits" or "license" for more information.
>>> 8 * 3.57
28.559999999999999

Znak hviezdička (*) sa používa ako násobenie, miesto znaku (X) alebo (.), ktoré používate v škole (hviezdička sa používa preto, aby si počítač neplietol násobenie s písmenom x).

Python je chybný!?!?

Ak zadáš do kalkulačky 8 x 3,57 výsledok, ktorý sa zobrazí na displeji bude:

28.56

Prečo Python zobrazuje inú hodnotu? Je chybný?

Samozrejme, že nie. Na vine je spôsob s akým počítač pracuje s desatinnou čiarkou (s číslom, ktoré má celú a desatinú časť). Je to komplikované a pre začiatočníkov trochu nezrozumiteľné, Preto bude najjednoduchšie ak si zapamätáš, že ak robíš s desatinými číslami (s desatinnými miestami v čísle), výsledok nebude vždy presne taký, ako očakávaš. Platí to najmä pri operáciách násobenia, delenia, sčítania a odčítania.

Čo takto skúsiť niekoľko príkladov? Predstav si, že dostávaš vreckové 5€ za týždeň a za roznášanie letákov si zarobíš 30€ za týždeň — koľko peňazí budeš mať za rok? Ak to zapíšeme na papier, dostaneme takýto príklad:

(5 + 30) x 52

Čo je 5€ + 30€ krát 52 týždňov v roku. Samozrejme, my sme múdri, preto vieme, že 5 + 30 je 35, preto príklad trochu upravíme:

35 x 52

Čo vieme rýchlejšie zapísať do kalkulačky alebo na papier. Ale rovnako dobre vieme tieto výpočty urobiť aj v konzole:

>>> (5 + 30) * 52
1820
>>> 35 * 52
1820

Čo ak každý deň minieš 10€? Koľko ti zostane na konci roka? Príklad môžeme zapísať rôznymi spôsobmi na papier, ale poďme ho zapísať rovno do konzoly:

>>> (5 + 30 - 10) * 52
1300

To je 5€ a 30€ mínus 10€ krát 52 týždňov v roku. Na konci roka by ti teda zostalo 1300€. Dobre, zatiaľ to nevyzerá byť nič užitočné, pretože to isté vieš urobiť aj na kalkulačke. Ale ak chvíľu vydržíš, neskôr to využijeme na niečo oveľa užitočnejšie.

V konzole Pythonu sa dá násobiť, sčítať, odčítať a vykonávať ďalšie matematické operácie, ktoré nebudeme rozoberať. Zatiaľ nám budú stačiť základné matematické symboly Pythonu (ktoré voláme aj operátory):

+ sčítanie
- odčítanie
* násobenie
/ delenie


Dôvod prečo sa používa lomítko (/) na delenie je ten, že v počítači sa nedá zapísať zlomková čiara (a to, že na niektorých klávesniciach sa nenachádza symbol delenia ÷ (na Slovensku sa kvôli tomu začala používať dvojbodka ":")). Napríklad ak máme 100 vajec a 20 krabíc a chceme vedieť, koľko vajec máme dať do jednej krabice, aby bol v každej krabici rovnaký počet vajec, urobíme 100 deleno 20, a zapíšeme to takto:

100
20

Alebo možno takto:

100 ÷ 20

V Pythone sa to ale zapisuje “100 / 20”. Čo je myslím oveľa jednoduchšie.

Ale ja som len kniha — čo ja o tom môžem vedieť?

Hráme sa s Pythonom

Malo by to byť to, čo hovorí obsah. Až na rôzne predstavy, týkajúce sa pojmu "Python" :-)

Inšpirované Etkiho prekladom knihy, ktorá sa mi ako dieťaťu nepozdávala.

 

 

Na začiatok - koktanie :-)

Tak som vám konečne toho IPythoníka dostal na sieť, ale sa bráanil, koťuha. Hanblivý je akýsi. Aj tak sa dal prehovoriť, aby sa uskromnil tu. Ale cítil sa tu stiesnene (predsa len, Python :-) a tak sa vám objaví vo vedľajšom okienku, ak mu kliknete tu. Ale inak je s nim sranda :-)  Skúsime to spolu? Predstavíme sa mu? Ja som miso, ale vy asi budete iní :-)

Keď som mu to povedal, kto som a odentroval, chvíľku sa ponaťahoval, poblikal si, požmurkal a sa objavilo oknisko, kde nič nebolo, len:

In[1]:

Žeby som bol "in"? A ešte k tomu jeden? Alebo možno hovorí - poď dnu, ty jeden...

Píšem: Čau, nejdeš na Lietavu?  

To si môžete zobrať cez "kopy sa páste" do IPy okienka, tu poznačíte cez prehliadačovské Copy a v jeho okienku to pohodíte cez Paste  (kus mágie, ale keď sme leniví, nebudeme predsa písať ako českí žandári :-)

A on na to že 

SyntaxError: invalid syntax .
Alebo Python identifiers can only contain ascii characters.

Kedy ako? I bisťu, angličan, s charakterom. A hneď po nás ide s chybami :-) No veď počkaj...

Pozrime sa, napíšeme mu na to:  facina

a to ho tak vyviedlo z miery, že ukázal celý riadok čiarkovaných zubov a potom ešte že to Name mu nie je známe. Asi tak:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)

/home/ipy/<ipython console> in <module>()

NameError: name 'facina' is not defined

 

Aby ho... Ale je trpezlivý, čaká stále... Lebo nám dal druhý pokus :-)

In [2]:

No, vieš ty vôbec, koľko je dva a dva???   My: 2+2

On:

Out[2]: 4

Vyliezlo to z neho, nakoniec, koktavec akýsi, vie to.

Tak len tak zaťapáme po číselkách na klávesnici a uvidíme, či je aj tu frajer.

Čo sme dali a čo on na to:

In [3]: 1253237788978979899080898766 + 352134255-31444242545135453145535
Out[3]: 1253206344736434763979887486L

To mínusko nám asi ošmyklo a to jeho L na konci je ako vyplazený jazyk. Má dosť asi :-)

Keby som videl nejakého jednotkára nablízku a nudil by sa, dal by som mu to veru vyrátať ... O jeden vyplazený jazyk viac :-)))

No čéče, hej, čísla ti idú, ale vieš ty rozprávať ? Aspoň ako papagáj :-) Opakuj po nás, ak môžeš...

Pozor naňho, aby sa zas nerozzúril... Pekne mu to dáme do úvodzoviek, ako sa sluší pri priamej reči.

Aj v knižkách to tak robia :-)

In [4]: "Sme múdri, Ty ja a my oba?"
Out[4]: 'Sme m\xc3\xbadri, Ty ja a my oba?'

Ouuuu - posmieva sa, potvora. Aj je mu ľúto úvodzoviek, aj sa nevie, alebo nechce ú naučiť .

Ale reaguje... ako zatiaľ papagáj nedokonalý :-)

Možnože radšej píše, ako hovorí. Povedzme mu, printuj (angličan je, vieme :-):

Tak, printujeme?

print "Sme múdri, Ty ja a my oba?"
Sme múdri, Ty ja a my oba?

Aha, aj na to svoje večné Out zabudol :-) A ani ho neubudlo - výslovnosť, teda tlač má ako miminko :-)

Čo tak mu to vtĺcť do hlavy, ako MUDROST? (pošahaná múdrosť ) :-)

In [6]: MUDROST="Sme múdri, Ty ja a my oba?"

 

Nepovedal nič :-) Len tichúčko prešiel na nový riadok a čaká s tým svojim In [7]:

Aha, čísla sa spočítať dajú, prečo neskúsiť spočítať dokopy zo tri múdrosti? :-) A nech to nezmrší,

dáme si to vyprintovať zasa:

print MUDROST + MUDROST+MUDROST
Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?

:-))) No to je teda.  A môžeme to opakovať, lebo som náhodou šípku hore stlačil a on si to koťuha, pamätá, čo sme mu predtým kázali robiť. Takže sa môžeme múdriť do aleluja...

In [9]: print MUDROST + MUDROST+MUDROST
Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?

In [10]: print MUDROST + MUDROST+MUDROST
Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?

In [11]: print MUDROST + MUDROST+MUDROST
Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?

In [12]: print MUDROST + MUDROST+MUDROST
Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?Sme múdri, Ty ja a my oba?

  A tak :-)  Len ma trápi to veľké S, že má za otázničkom tak málo miesta. Nedali by sme mu medzeru?

Ako? nepoviem, namôjveru :-)  A na to prídete sami.

Ukončíme to koktaniami:

In [13]: KO='Ko'; HU="hu"; TI='ti'

In [14]: 3*KO + 2*HU + 4* TI
Out[14]: 'KoKoKohuhutitititi'

Ej, či sú nepochopiteľné činy ipythona :-) Alebo žeby na tom niečo bolo? Žeby dokázal zakoktať, presne ako mu zapískame? Ba možno aj zamlčať, zamedziť, zamedzerovať :-)

Slovká sa nám násobia - snáď to nie je choroba?

Tritisíc medzier aby do toho... (nemaľuj medzery na ipythona :-)

In [16]: 3000*" "
Out[16]: '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        '

In [17]:

:-) No ľaď ho... Mezery nám to tu vynebeskovali  dočista. A tritisíc?  Kto ich chce, spočíta :-)

Tak a je čas, milé deti, poďme od okienka, pekne sa pozdravíme na rozlúčku Ctrl D a dovidenia zas niekedy u ipythona :-)

IPy povinne číta

Koktať sme si zakoktali, aj to bolo hádam pekné – ale nie je to o ničom? Aspoň dospeláci by možno oduli gamby, že to taká facina :-( No čo nás po kom, máme niekoho, kto nás počúva, občas aj poslúcha a to skoro ako bábiky, či psíky, či iné živé bytosti :-) Dá sa s nim hrať. Čary, máry, fik a zas je tu - IPythoník, stačí klik.

Keď sme sa tak minule zahrali, náš IPy bral od nás písmenká a čísla a čosi s nimi robil, asi tak, ako ho to naučili od narodenia. To množenie slovíčok bolo super, nie? No a možno ste si všimli, keď idete šípkou hore, či zas šípkou dole, že sa vám objavujú vaše predchádzajúce úlohy, čo ste IPythoníkovi dávali. Má to kdesi v pamäti a to pre každého z nás. Je to milé od neho, nie? A my ho, IPythoníka, volajme IPy, aspoň ja teda budem. Môže sa to hodiť, lebo: "IPy, IPy, čo si pipi???" a tak :-) Ale aj "IPysko", keď niečo vyvedie. :-(

A čo tak pomôcť nám, keby sme potrebovali stokrát napísať: "Nebudem strašiť deti IPythonom"? Lebo si to už pani učiteľka začína všímať, že tu čosi kujeme... No, povieme mu:

Trest="Nebudem strašiť deti IPythonom\n"

a teraz nech to tlačí - zatiaľ nemusí ani na papier :-) ale keď bude treba... máme myšku, či nie?

print 100*Trest

No, vidíte, čo vám vypísal, a v momente. Len mi nie je jasné, načo je tam to "\n". Čo, keď ho nedáme, ha? Aha, nebude to ono :-) Ale môžeme mu stokrát pohroziť:

print 100*"IPysko! "

a čo sa deje, vidíte sami, nebudem ja tu "kopy pásť" :-) Tak - čítať by IPy vedel, keď mu čosi predhodíme. Čo tak celú knižku? Povinné čítanie, IPy :-) Ja som z Oravy a tak Ti dáme čítať "Rysavú jalovicu" :-) od Maťa Bencúrovie. Kde ju nájsť? Ľahká pomoc v dobe Internetu. Aj my to dokážeme - po malom zagooglení našli sme, že kliknúť stačí tuto.

Ale čo IPy? Chudák klikať nedokáže, ktohovie, či aj videl v živote myšku, tú našu, plastovú :-) Takže som mu stiahol celú jalovicu tam, kde žije, aby ju mohol nájsť. Teraz ho vyskúšame. Jasne, že je to čosi, čo počitačovci nazývajú "súbor". Otvorí ho a prečíta???

T=open("jalovica.txt").read()

Čo myslíte, má to? :-) Na takého hadíka IPíka veru číta rýchlo - len či aj správne :-) Ale veď vieme, že stačí mu povedať, aby zaprintoval, čo má v T:

print T

No a asi sa nestačíte diviť - ako som sa veru aj ja. Vychrlil toho na nás požehnane. A napodiv, írečitou slovenčinou. Takže v T má celú poviedočku, zdá sa. Jej text, preto T som ju nazval, ale môžete ju volať, čojaviem Jalovica. Koľko asi je v poviedka čiarok? Koľkokrát sa tam spomína jalovica? A iné slová? Vedel by nám to IPy zrátať, keď už vlastní celý text? Počet je po anglicky count a tak skúsime:

T.count(",")

No - čo povedal vám? Mne, vraj je to 1597. Fíha, toľko čiarok. A ten, čo jalovičku kupoval bol Adam Krt, tak jeho meno je tam koľkokrát??

T.count('Adam')

Že vraj 42. Koľko je Krtov? To si zistite ľahko aj sami. :-) Viac, či menej, ako Adamov? No a koľkože to písmenok má celá poviedočka? Dĺžka, po anglicky length, tak skúsme (neberie to, vyskúšal som, ale berie skratku len :-)

len(T)

Ak je v dobrom rozmare, hádam aj vám IPy povie, čo mne - že 88409. Aleže sú to aj písmenká neviditeľné, ako napr. to "\n" čo sme už použili hore a ono je tam podľa IPy-ho 1190 krát. Takže koľko má riadkov tá poviedočka? :-) A ešte ako je to so slovami? Rozdeliť je split a teda skusme rozdeliť jalový text - hádam ho len nebude na písmenká, ale na slová deliť...

S=T.split()

A koľkože je slov? Či aj vám vyrátal 14370? A koľko by potom písmenok malo mať "priemerné" slovo? No, ako získame len prvých 10 slov? Čo tak

T[:10]

A koľko je slov, ktoré sa začínajú na "a"? Skúsime, nech ich najskôr vymenuje. Chceme zoznam všetkých slov, ktoré sa nachádzajú v S, ak ich prvé písmenko je "a":

[slovo for slovo in S if slovo[0]=='a']

Ufff, hlava nám ide kruhom :-) Ale "a" tu skutočne je vždy na začiatku... A koľko ich je, to je dĺžka toho ich zoznamu, teda:

len([slovo for slovo in S if slovo[0]=='a'])

Je to 826. A my si odpočinieme hádam. Nezabudnite, treba sa s IPym rozlúčiť cez jeho obľúbené Ctrl d :-)