ZAŠTO JE PROGRAMSKI JEZIK PAJTON DOBAR ZA UČENJE PROGRAMIRANJA 
Nebojša Vasiljević, nebojsa.vasiljevic@mtt.gov.rs, Republika Srbija, Ministarstvo spoljne i unutrašnje trgovine i telekomunikacija 
Izbor programskog jezika za učenje programiranja značajno zavisi od okolnosti, pa se ne može dati univerzalan odgovor koji jezik je najbolji, ali postoje programski jezici koji se po svojim karakteristikama izdvajaju kao pogodni za učenje programiranja. 
Često se programiranje uči u funkciji nekog konkretnijeg cilja, što onda uslovljava izbor programskog jezika. 
Na primer, ako je glavni motiv za učenje programiranje pravljenje Android aplikacija, programiranje će se učiti na Javi, a ako vam je naglo iskrsla potreba da se snalazite sa makroima za Microsoft Word ili Excel, onda ćete prve korake u programiranju napraviti kroz Visual Basic. 
U ovakvim slučajevima se pitanje izbora programskog jezika očito ni ne postavlja.  
Prvi koraci u programiranju mogu se steći i sa alatima koji se zasnivaju na slaganju grafičkih elemenata ili koji koriste posebno dizajniran programski jezik. 
U takvim slučajevima mi zapravo ne biramo programski jezik, već alat u celini i neki alati ovog tipa, kao što je Skreč (engl. Scratch) mogu biti zaista dobar izbor za prve korake u programiranju, posebno kod mlađih uzrasta. 
Međutim, pre ili kasnije u učenju programiranja moramo doći do klasičnog programskog jezika i tu se vraćamo na pitanje koje nam je ovde tema. 
Ako želite da se posvetite upoznavanju ideja i sticanju veština programiranja više nego savladavanju samog programskog jezika, i pri tome želite da izaberete programski jezik koji je solidno zastupljen u praksi, teško da možete da napravite bolji izbor od Pajtona (engl. Python). 
Ukoliko želite da se upoznate sa programskim jezikom Pajton pre nego što nastavite da čitate ili u nekom trenutku kasnije, preporučujemo vam da pogledajte interaktivne tutorijale za Pajton na Codeacademy. 
U nastavku su posebno istaknute i obrazložene pojedine karateristike programskog jezika Pajton koje ga čine dobrim izborom za učenje programiranja. 
1. Svrstava se u 10 najviše korišćenih programskih jezika 
Za učenje programiranja treba izabrati jezik koji živi u praksi i široko je zastupljen. 
Podrška alata i biblioteka, prisustvo na raznim platformama, iskustva kolega, raspoloživa literatura i realno očekivanje da jezik neće pasti u zaborav u narednih pet ili deset godina su važne pretpostavke kod izbora programskog jeziika. 
Naravno, ne tvrdimo da prag za izbor programskog jezika treba bude baš prvih 10, ali je činjenica da Pajton ulazi u prvih 10 u gotovo svim metodologijama merenja. 
Ovde namerno nismo istakli argument da treba učiti programski jezik koji će se najverovatnije koristiti kasnije u profesionalnom radu. 
Fokus učenja programiranja ne treba da bude na majstorstvu korišćenja programskog jezika, već na konceptima koji se mogu izražavati u raznim programskim jezicima, a jedan treba izabrati za učenje. 
Čak i onaj ko nikada ne bude profesionalan programer ima koristi od razumevanja osnovnih koncepata programiranja. 
2.Skript jezik sa dinamičkim tipovima i automatskim upravljanjem memorijom 
Činjenicu da je Pajton skript jezik sa dinamičkim tipovima neko će videti kao prednost, a neko kao manu, ali za uvod u programiranje preovlađuju prednosti.  
Pre svega, najjednostavniji primeri su zaista jednostavni, bez „viška koda“ za koji u prvim lekcijama moramo da kažemo „ovo mora tako da stoji, kasnije ćemo naučiti čemu služi“. 
Primer za prvi program u Pajtonu bi mogao da bude: 
print(‘Zdravo svima!’) 
Za razliku od ekvivalentnog programa u, na primer, programskom jeziku C++: 
#include  < iostream.h >  
int main() 
[ 
cout  <  <  «Zdravo svima!»; 
] 
Pajton može da se izvršava u interaktivnoj konzoli (poznatoj i kao Python Shell), tako da jednostavne primere odmah izvršavate i vidite rezultat. 
Ovo je izuzetno praktično za prve korake, ali i kasnije kada nešto želite da probate ili proverite. 
Programi u Pajtonu su tekstualne datoteke sa ekstenzijom „.py“. 
Nema kompilacije ni dodatnih datoteka koje se pri kompilaciji formiraju niti obaveznog kreiranja projekta za svaki primer i slično. 
Pajton kao interpretator ne dostiže efikasnost jezika koji se kompiliraju poput C++, niti jezika poput Jave ili C# koji imaju dinamičko prevođenje (engl. just in time compilation), ali je dovoljno efikasan za mnoge primene, uključujući učenje programiranja5.  
Činjenica da promenljive ne moraju da se deklarišu i da nemaju statički određen tip početnicima olakšava programiranje i rasterećuje ih potrebe za razumevanjem često složenih sintaksnih konstrukcija za specificiranje tipova. 
Uzmimo primer Pajton programa: 
def sum(x, y): 
return x + y 
a = sum(42, 47) 
b = sum(‘Maja’, ‘Marina’) 
print(a, b)  
Relativno je lako i razumeti i objasniti da će ovaj program da ispiše:  
89 MajaMarina 
Primetite da nismo morali da kažemo ništa o polimorfizmu, generičkim tipovima, šablonima i slično. 
Takođe primetimo da svaka vrednost sa sobom nosi svoj tip, tako da je operacija „+“ na odgovarajući način primenjena na celobrojne vrednosti i na niske. 
Pajton ne pravi razliku između primitivnih tipova i objekata i nema mnogo varijacija sličnih tipova. 
Ne razmišljamo o tome da li da koristimo float ili double (za programski jezik C na ovu temu može cela lekcija da se ispriča) ili pak int, long, Integer, Long ili BigInteger (u programskom jeziku Java). 
Pajton ima automatsko upravljanje memorijom, bez eksplicitne alokacije i dealokacije memorije i potrebe za eksplicitnim korišćenjem pokazivača. 
3. Jednostavna i razumljiva sintaksa 
Sintaksa programskog jezika Pajton je pregledna i razumljiva, što ćemo ilustrovati na primeru programa koji određuje broj pojavljivanja zadatog karaktera u nisci:  
def prebroj(karakter, niska): 
brojac = 0 
for k in niska: 
if karakter == k: 
brojac = brojac +1  
return brojac 
print(prebroj(’a’, ’aparat’)) 
Prethodni program će ispisati broj 3, jer se karakter ‘a’ tri puta pojavljuje u nisci ‘aparat’. 
Pajton koristi karakteristično grupisanje nazubljivanjem, što je pregledno za čitanje, nema dodatnih zagrada niti ključnih reči, ali je potrebno da se korisnik navikne na ovakav način zapisivanja.  
4. Niske, liste, n-torke, rečnici i skupovi su ugrađeni tipovi sa jednostavnom sintaksom za korišćenje 
Niske i osnovni tipovi kolekcija, kao što su liste promenljive dužine, n-torke, rečnici (asocijativni nizovi) i skupovi predstavljaju ugrađene tipove dobro uklopljene u sistem tipova i sintaksu jezika, sa svim potrebnim operatorima i predefinisanim funcijama. 
Ovim je omogućeno da se osnovni tipovi kolekcija od početka koriste u rešavanju problema kada je to pogodno, umesto da se uvode tek u naprednim lekcijama, nakon što se nauči kako se implementiraju ili zato što se nalaze u posebnim bibliotekama koje treba na poseban način koristiti. 
Danas je primereno učiti kako se koristi sortiranje za rešavanje problema pre nego što se uče algoritmi za sortiranje, kako se koriste rečnici pre nego što se uči implementacija heš tabela, i tako dalxe 
To je isto kao što su u nekom trenutku ljudi počeli da uče više programske jezike, a da nisu morali prethodno da nauče asembler i implementaciju jezičkih procesora.  
Za učenje programiranja je potrebno da se osnovni tipovi kolekcija tretiraju kao elementarne gradivne jedinice koje se koriste u rešavanju problema i programski jezik treba da omogući njihovo korišćenje bez ikakve pretpostavke razumevanja dodatnih naprednih koncepata (šablona, generičkih tipova i slično). 
Ovo je primer gde se u promenljivoj ocene imenu svakog učenika dodeljuje lista ocena: 
ocene = [] 
ocene[‘Ivan’] = [3, 5, 4] 
ocene[‘Ana’] = [5, 4, 5, 5] 
što može i kraće da se napiše ovako: 
ocene = [‘Ivan’: [3, 5, 4], ‘Ana’: [5, 4, 5, 5]] 
Sličan kôd u Javi bi izgledao ovako: 
Map < String, List < Integer >  >  ocene =  
new HashMap < String, List < Integer >  > (); 
ocene.put(”Ivan”, Arrays.asList(3, 5, 4)); 
ocene.put(”Ana”, Arrays.asList(5, 4, 5, 5)); 
Pri tome Arrays.asList(3,5,4) daje listu fiksne dužine, a ako hoćemo listu promenljive dužine, onda bismo morali da kažemo new ArrayList < Integer > (Arrays.asList(3,5,4)). 
Java ima dobru podršku za osnovne tipove kolekcija, ali je neophodno prethodno savladati oređene naprednije koncepte programskog jezika da bi se ta podrška koristila sa razumevanjem. 
Prirodna podrška za osnovne tipove kolekcija omogućava da se strukture podataka koje se pojavljuju u elementarnim algoritmima jednostavno konstruišu od osnovnih tipova kolekcija i drugih ugrađenih tipova, bez definisanja novih tipova. 
Na primer, drvo aritmetičkog izraza 5 * (2 + 3) bi moglo da se konstruiše ovako:  
izraz = [‘*’, 5, [‘+’, 2, 3]] 
Naravno, Pajton omogućava definisanje novih tipova, odnosno klasa, što ćemo kasnije i ilustrovati. 
5. Uspešno zamenjuje kalkulator 
Ako Pajton koristimo u interaktivnom režimu (Python shell), on može da nam zameni kalkulator. 
Na primer: 
>>> 2+2 
4 
„>>>“ je odzivni znak (engl. prompt) i on stoji ispred onoga što smo mi otkucali, a u sledećoj liniji je rezultat.  
Kalkulator često koristimo u rešavanju zadataka poput: 
„Ako je čovek tokom vremena t=3.5s prešao put od s=4.5m, kolika mu je prosečna brzina?“ 
Formula za brzinu je v=s/t, pa kad zamenimo brojeve i to unesemo u „kalkulator“ dobijamo: 
>>> 4.5/3.5 
1.2857142857142858 
Pajton je „pametniji“ od običnog kalkulatora, pa možemo pisati i: 
>>> t=3.5 
>>> s=4.5 
>>> s/t 
1.2857142857142858 
Ako imamo rezultate pet merenja vremena za koje je čovek pretrčao 100 metara, ovako bismo mogli da izračunamo brzine: 
>>> merenja = [15.3, 11.7, 21.9, 13.2, 14.6] 
>>> s = 100 
>>> [s/t for t in merenja] 
[6.5359477124183005, 8.547008547008547, 4.566210045662101, 7.575757575757576, 6.8493150684931505] 
Uvođenje pojedinih elemenata programiranja kao proširenih mogućnosti kalkulatora, polazeći od problema za čije rešavanje je učenik navikao da koristi kalkulator, predstavlja efikasan metod da se učenik dovede do prvih linija koda uz minimalno opterećivanje novim konceptima. 
6. Omogućava višestruku dodelu 
Da bi promenljive a i b zamenile vrednosti, u Pajtonu je dovoljno napisati: 
a, b = b, a 
Bez višestruke dodele, morali bismo uz pomoćnu promenljivu da koristimo tri dodele. 
I funkcija može da vrati višestruku vrednost (u stvari vraća n-torku), kao na primer divmod koja računa i celobrojni količnik i ostatak pri deljenju: 
d, m = divmod(p, q) 
Euklidov algoritam za najveći zajednički delilac bi u Pajtonu mogao da se kodira ovako: 
def nzd(a,b): 
while b!=0: 
a, b = b, a % b 
return a 
Višestruka dodela je jedan detalj koji olakšava izražavanje i pomaže da se više koncentrišemo na suštinu algoritma. 
7. Matematički je dosledan 
Od petog razreda osnovne škole učenicima je poznat pojam ostatka pri deljenju koji je jednak nuli u slučaju da je deljenik deljiv sa deliocem, a inače je veći od nule i manji od delioca. 
U mnogim programskim jezicima, uključujući Pajton, za operaciju ostatka pri deljenju se koristi znak „%“. 
Tako je 5 % 3 = 2. Pajton daje matematički korektan rezultat i kada je deljenik negativan, što u mnogim drugim programskim jezicima nije slučaj (kao što su C, C++, C# ili Java). 
Na primer, u Pajtonu je -1 % 3 jednako 2, za razliku od nekih drugih programskih jezika gde je rezultat -1. Dakle, možete slobodno da napišete: 
pozicija = (pozicija + pomeraj) % sirina 
umesto da se na sledeći način štitite od negativnih vrednosti za slučaj kada je pomeraj negativan: 
pozicija = (pozicija + pomeraj + sirina) % sirina 
Možda izgleda kao detalj, ali modularna aritmetika (računanje sa ostacima pri deljenju) je deo matematike koji se intenzivno koristi već od početnih nivoa programiranja i nije zgodno kada učeniku morate da objašnjavate zašto nešto nije onako kako se učilo iz matematike i kako to treba da prevaziđu.  
Pajton takođe uvodi poseban operator za celobrojno deljenje „//“7. 
Modularna aritmetika u Pajtonu je proširena i na brojeve u pokretnom zarezu, tako da zadatak „Koliko dasaka dužine X može da se iseče iz drveta dužine Y i koliki je deo koji ostaje, gde dužine ne moraju da budu celi brojevi“ može da se reši na sledeći način: 
print(X // Y, X % Y) 
U matematici se često pojavljuju nejednakosti poput a  <  b  <  c, 
što se na drugi način može napisati kao a  <  b i b  <  c. 
Većina programskih jezika ne podržava prvi način zapisivanja višestrukih relacija, već omogućava samo zapis koji je baziran na drugom načinu gde su razdvojene dve relacije. 
U Pajtonu slobodno možete napisati: 
if a  <  b  <  c: 
levi, srednji, desni = a, b, c 
Pajton podržava velike brojeve u celobrojnoj aritmetici, što znači da će matematički korektno izračunati vrednost poput: 
>>> print(2013**1000//2013**999) 
Pajton interno razlikuje obične i velike celobrojne vrednosti, ali nije neophodno da programer o tome vodi računa.  
Matematička doslednost Pajtona vam pomaže da se lakše nadovežete na ono što je učenik već naučio iz matematike i da se manje bavite trikovima programskog jezika, što vam daje više prostora da posvetite pažnju problemu koji rešavate i konceptima programiranja.  
8. Podržava ugnježdene funkcije 
Programski jezik Paskal (engl. Pascal) podržava ugnježdene funkcija (definisanje funkcije unutar druge funkcije), ali i pored toga što je Paskal uticao na gotovo sve kasnije programske jezike kada su u pitanju elementi strukturiranog i proceduralnog programiranja, mnogi programski jezici nemaju podršku za ugnježdene funkcije. 
Ugnježdene funkcije mogu biti korisne kod rekurzivnih algoritama, jer daju elegantnu mogućnost izdvajanja rekurzivne funkcije unutar glavne funkcije, kao što vidimo u primeru binarnog pretraživanja: 
def trazi(lista, trazeno): 
def traziRek(levi, desni): 
if desni  <  levi: 
return -1 
srednji = (levi + desni) // 2 
if trazeno  >  lista[srednji]: 
return traziRek(srednji + 1, desni) 
elif trazeno  <  lista[srednji]: 
return traziRek(levi, srednji - 1) 
else: 
return srednji 
return traziRek(0, len(lista) - 1) 
Da funkcija traziRek nije ugnježdena u funkciju trazi, bilo bi potrebno da se funkciji traziRek dodaju parametri lista i trazeno, što bi smanjilo preglednost koda. 
Treba imati u vidu da može biti i više od dve vrednosti kojima treba stalno pristupati iz rekurzivne funkcije. 
Uz pomoć objektno-orijentisanog programiranja možemo definisati klasu sa rekurzivnom metodom, gde se ovakve vrednosti čuvaju u objektu, ali je to manje elegantno i tera nas da učenika upoznajemo sa konceptima objektno-orijentisanog programiranja samo da bismo iskazali rekurzivan algoritam. 
9. Pajton podržava i proceduralno i objektno-orijentisano i funckijsko programiranje 
Pajton omogućava da u program uključite koncepte koji su vam potrebni, a da vas ostali ne opterećuju. 
Lako možete programirati čisto proceduralno, bez definisanja klasa i metoda, što se moglo videti u prethodnim primerima. 
U programskim jezicima Java i C# morate definisati barem jednu klasu u programu i ne možete definisati funkciju osim kao statičku metodu. 
To ne znači da Pajton ne podržava objektno orijentisano programiranje; šta više, svaka vrednost je objekat. 
Na primer, operator a+b se uvek svodi na poziv metode a.__add__(b), uključujući i ugrađene tipove, što znači da sledeće dve linije koda računaju zbir brojeva 7 i 9: 
>>> a, b = 7, 9 
>>> a.__add__(b) 
U Pajtonu se metode definišu kao funkcije unutar klase, pri čemu je prvi parametar rezervisan za objekat (instancu klase) nad kojim se metod poziva, a promenljive instance se dinamički formiraju pri izvršavalju metoda, najčešće u okviru konstruktora: 
Prethodni program ispisuje 4.47213595499958.  
Pajton podržava i osnovne elemente funkcijskog programiranja, kao što su funkcije prvog reda, lambda izrazi i leksička zatvaranja (engl. closures, ugnježdene funkcije imaju svojstva leksičkih zatvaranja). 
Pajton je pogodan da se ilustruju elementi funkcijskog programiranja i iskoriste u reševanju problema, mada nije u celini dizajniran kao funkcijski jezik. 
Klasičan primer funkcijskog programiranja, gde se primenjuje funkcija na sve elemente liste i tako dobija nova lista, izgleda ovako: 
>>> list(map(lambda x: 
2*x, [1,2,3])) 
[2, 4, 6] 
Za izraz poput prethodnog Pajton ima posebnu sintaksu 
koja je slična matematičkoj notaciji za konstruisanje skupova, kao na primer [2x | x ∈ [1, 2, 3]], pa je razumljiva i u slučaju da prethodno niste ništa čuli o funkcijskom programiranju: 
>>> [2*x for x in [1,2,3]] 
[2, 4, 6] 
Koncepti objektno-orijentisanog programiranja nisu neophodni na prvim koracima u programiranju i mogu se ostaviti za kasnije faze učenja programiranja. 
Pajton omogućava da prve korake u programiranju započnete sa proceduralnim programiranjem uz mogućnost da uključite po nešto od funkcijskog programiranja što neće opteretiti učenika, već će samo učiniti primere jasnijim. 
Objektno-orijentisano programiranje možete uključiti u trenutku kada smatrate da je pogodno.  
10. Podržava klasičan tekstualni ulaz i izlaz i elementarnu dvodimenzionalnu grafiku  
Primeri i zadaci koji se rade prilikom učenja programiranja često imaju jednostavnu komunikaciju sa korisnikom: treba da se učitaju neke ulazne vrednosti i da se ispišu neki rezultati. 
Za to je najjednostavnije koristiti klasičan tekstualni ulaz i izlaz. 
Pajton u standardnoj biblioteci ima dobro pokrivenu podršku za tekstualni ulaz i izlaz, što možemo ilustrovati primerom: 
a = float(input(”Unesi dužinu komada drveta: ”)) 
b = float(input(”Unesi dužinu daske: ”)) 
print(”[0:. 
0f] dasaka i komad od [1:. 
2f]”.format(a//b, a%b)) 
Izvršavanje prethodnog programa bi na konzoli izgledalo ovako: 
Unesi dužinu komada drveta: 
4 
Unesi dužinu daske: 
0.7 
5 dasaka i komad od 0.50 
Pored tekstualne komunikacije sa korisnikom, za učenje programiranja je zgodno koristiti i primere sa crtanjem. 
Pajton u standardnoj biblioteci ima podršku za takozvanu „kornjača grafiku“ (engl. turtle graphics) poznatu iz programskog jezika LOGO. 
Ovaj metod programiranja grafike zasniva se na metafori kretanja objekta koji ostavlja trag, 
za šta je prvobitno korišćen lik kornjače, od čega potiče naziv. 
Suština je da se bez poznavanja pravouglog koordinatnog sistema i trigonometrijskih funkcija, a sa jednostavnim programskim konstrukcijama, mogu nacrtati zanimljivi geometrijski oblici. 
Na primer: 
import turtle 
koja = turtle. 
Turtle() 
koja.pensize(4) 
for boja1,boja2 in [(„red”,”darkblue”), („green”,”darkred”), 
(„blue”, „darkgreen”)]: 
koja.color(boja1)  
koja.forward(100) 
koja.right(120) 
koja.color(boja2) 
koja.circle(20) 
koja.left(240) 
daje rezultat: 
Za učenje programiranja se često koristi i biblioteka PyGame koja ima dodatnu podršku za dvodimenzionalno (2D) crtanje i 2D igre. 
Napominjemo i da program u programskom jeziku Pajton ne mora da se opredeli da li će biti konzolski ili grafički, već prosto može nešto da učita sa konzole, a posle nešto da nacrta. 
Za crtanje preko modula turtleturtle će se automatski otvoriti poseban prozor. 
11. Bogata standardna biblioteka, velika podrška dodatnih biblioteka i alata 
Bogate biblioteke šire spektar problema koji se mogu rešavati uz relativno jednostavno programiranje. 
Učenici mogu lako da crtaju grafikone, trodimenzionalne (3D) scene, obrađuju fotografije ili upravljaju robotima. 
Uz osnovnu instalaciju Pajtona dolazi integrisano razvojno okruženje IDLE koje je dovoljno za uvod u programiranje, a možete se opredeliti i za neko naprednije razvojno okruženje. 
Podršku za Pajton imaju praktično sva ozbiljnija razvojna okruženja koja podržavaju više protramskih jezika, uključujući dva generalno najpoznatija razvojna okruženja: 
Microsoft Visual Studio kroz dodatak Python Tools for Visual Studio11 i Eclipse kroz dodatak PyDev. 
Ukoliko želite da koristite neko kompaktnije razvojno okruženje koje je pravljeno samo za Pajton, možete probati PyScripter13 ili Spyder. 
U ponudi su i komercijalna razvojna okruženja specijalizovana za Pajton poput JetBrains PyCharm. 
Ukoliko vam je potreban unapređen interaktivan rad, uz integraciju sa bibliotekom za crtanje grafikona, na raspolaganju vam je IPython. 
Na slici 1 sa leve strane je prikazana IPython Qt Console17, a ono što se nalazi na slici je primer iz poglavlja Uspešno zamenjuje kalkulator, pri čemu je dodata još jedna linija koda za iscrtavanje grafikona. 
Za programiranje grafičke korisničke sumeđe (GUI) uz osnovnu instalaciju Pajtona dolazi biblioteka Tkinter, a može se koristiti i podrška za nekoliko višeplatformskih GUI biblioteka, kao što su wxWidgets18 i Qt19.  
Za osnovno 3D crtanje pogodna je biblioteka VPython koja je vrlo jednostavna za korišćenje. 
Pajton je integrisan i u mnoge aplikacije, kao što je odličan softver za 3D modelovanje Blender koji je besplatan i otvorenog je koda. 
Za veb programiranje je na raspolaganju više platformi zasnovanih na programskom jeziku Pajton, a najpoznatija je Django. 
Dodatne biblioteke se obično moraju instalirati preko osnovne instalacije Pajtona da biste bili u mogućnosti da ih koristite. 
Procedura instalacije je najčešće jednostavna, a ako ipak ne želite da instalirate jednu po jednu dodatnu biblioteku, možete se opredeliti i za neku od nezavisnih distribucija Pajtona poput WinPython ili Python(x,y), a ako koristite Linux proverite koje biblioteke vaša distribucija Linix-a već obuhvata.  
12. Široko se koristi za uvod u programiranje 
Pajton je čest izbor prvog programskog jezika i za vrlo mlade uzraste i za početne kurseve na univerzitetima. 
Kao primer ćemo navesti kurs Introduction to Computer Science and Programming sa Massachusetts Institute of Technology (MIT) 
za koji su slobodno dostupni snimci svih predavanja i svi prateći materijali. 
Listu univerziteta na kojima se koristi Pajton možete naći na veb strani The Python Wiki - Schools using Python. 
Autori mnogih uvodnih knjiga za učenje programiranja namenjenih deci opredeljuju se za Pajton, a primer su knjige Python for Kids ili Hello World! 
Computer Programming for Kids and Other Beginners, kao i besplatne knjige u elektronskom izdanju poput Invent Your Own Computer Games with Python. 
Za učenje programiranja kroz programiranje igara treba pomenuti i knjigu Program Arcade Games with Python and Pygame sa slobodno dostupnom HTML verzijom.  
Na kraju ćemo pomenuti i knjigu Think Python: 
How to Think Like a Computer Scientist koja je objavljena pod licencom Creative Commons Attribution-NonCommercial, što znači da možete da je prepravljate i prilagođavate, dokle god navodite originalnog autora i prepravljeni proizvod ne koristite za komercijalne svrhe.  
13. Uspešno se integriše u interaktivne onlajn sadržaje  
Pored toga što osnovna implementacija Pajtona podržava razne operativne sisteme, postoji i implementacija koja se izvršava unutar veb pregledača. 
Na sajtu CodeSculptor možete u veb pregledaču izvršavati Pajton programe. 
Rice univerzitet koristi CodeSculptor u svom kursu An Introduction to Interactive Programming in Python koji je dostupan i online na Coursera platformi. 
Zahvaljujući ovoj i drugim tehnologijama koje omogućavaju integraciju programskog jezika Pajton u onlajn sisteme, Pajton je postao jedan od najbolje podržanih programskih jezika u interaktivnim online edukativnim sadržajima. 
Ukoliko do sada to niste uradili, pogledajte lekcije Pajtona na Codeacademy. 
Ovaj onlajn tutorijal vam omogućava da kucate odgovore na pitanja i primere i da izvršavate kôd direktno u veb pregledaču (Slika 2). 
Dovoljno je da odete na sajt, ništa ne morate da instalirate niti da kopirate ili prekucavate kôd iz primera, već samo treba da pratite instrukcije, dopunjujete primere koji se pojavljuju direktno u editoru i dajete odgovore, a sistem će vas ispravljati ako nešto niste dobro uradili. 
Treba istaći i izdanje How to Think Like a Computer Scientist: 
Interactive Edition36. Pored toga što imamo uvodne video klipove za određene teme, primeri u Pajtonu se mogu izvršavati direktno na veb strani, menjati i snimati promene. 
To uključuje i primere sa grafikom, a u pojedinim slučajevima je data animacija sa izvršavanjem korak po korak i prikazivanjem međurezultata. 
Ovo je kombinacija kvalitetnog udžbenika za uvod u računarstvo i najmodernije interaktivne tehnologije, 
a uz to je sadržaj potpuno otvoren - osim teksta udžbenika i cela tehnološka platforma je otvorenog koda - tako da možete ako želite napraviti svoju verziju lekcija ili potpuno nove lekcije na istoj platformi. 
Ovo interaktivno izdanje možete koristiti preko svog personalog računara ili tableta, a u krajnjoj liniji i sa mobilnog telefona, mada je za kucanje programa ipak praktičnija tastatura. 
Interaktivni onlajn sadržaji se mogu koristiti i za samostalno učenje i za rad na času, gde pod nadzorom nastavnika učenici prolaze sadržaj, ali i za usavršavanje i pripremu nastavnika. 
14. Pajton pomaže da se usresredite na učenje programiranja, a ne programskog jezika 
Kada se sumiraju svi izneti argumenti, najkraće što se može reći je: 
Pajton vas ne opterećuje. 
U učenju programiranja manje ćete se baviti programskim jezikom, a više algoritmima i konceptima koje treba razumeti. 
U prethodnim decenijama su se kao najčešći izbor za uvod u programiranje isticali razni programski jezici u raznim periodima, a među njima možemo posebno izdvojiti Paskal, Basic i Logo. 
Možemo reći da Pajton obuhvata glavne dobre osobine svakog od ova tri programska jezika, kada je u pitanju učenje programiranja:  
–– Pajton omogućava elegantno iskazivanje algoritma u samom programskog kodu, čime se ponosi i Paskal; 
–– jednostavna sintaksa i iskorišćene prednosti jezika koji se interpretira su razlozi zbog kojih je Basic svojevremeno postao popularan za učenje programiranja; 
–– učenje programiranja u programskom jeziku Logo se zasniva na primerima i zadacima crtanja geometrijskih oblika pomoću „kornjače“ uz jednostavne sintaksne konstrukcije, što je jednako izvodljivo i u Pajtonu. 
Pored navedenog Pajton podiže nivo apstrakcije uvođenjem osnovnih tipova kolekcija kao ugrađenih tipova i mnogim drugim detaljima, tako da se u uvodu u programiranje može otići korak bliže rešavanju interesantnih problema. 
Razumevanje osnovnih koncepata programiranja je korisno i za one koji neće biti programeri, a ta vrsta opšteobrazovnog znanja ulazi u okvir nečega što se naziva informatičko razmišljanje (engl. computational thinking) (Wing 2006) i može se definisati: 
„Informatičko razmišljanje je misaoni proces koji se koristi u formulisanju problema i njihovih rešenja tako da je rešenje predstavljeno u obliku u kome se može efektivno sprovesti sredstvom obrade podataka.“  
Opšteobrazovni pristup učenju programiranja vodi nas ka tome da se sa što manje programiranja rešavaju što zanimljiviji problemi, a Pajton se sa svojom razumljivom sintaksom, logičnošću, bogatom standardnom bibliotekom i dodatnim alatima odlično uklapa u ovakav pristup.  
