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 :-)