5,876 pregleda

Serijal tekstova: Zajedno naučimo Python (2. dio)

39

Pozdrav, ovo je drugi tutorial za Python! Evo nekoliko stvari koje trebate znati. Program u kojem radimo Python zove se Geany, a prva naučena funkcija je print() koja služi za ispis.

Prije početka novog tutoriala, napravit ćemo samo jednu malu stvar. Naime, prošli put bavili smo se instalacijama, a danas trebamo samo napraviti jednu modifikaciju, odnosno podesiti Python koji ćemo upotrebljavati unutar Geanyja. Radi se o tome da u svim distribucijama koje nemaju predinstalirani Python verzije 3.x, defaultni je upravo Python verzije 2.x. Zato moramo podesiti da Geany rabi Python verzije 3.x. Naravno, ovo radimo samo jedanput i kada se jednom podesi kasnije više neće biti potrebno to ponovno raditi.

Za početak, pokrenite Geany. Nakon toga spremite datoteku pod imenom python-02.py pomoću kombinacije tipki CTRL + S jer ćemo danas tu datoteku upotrijebiti za učenje novih stvari. E, a sad slijedi jedno kratko podešavanje. Kliknite na “Build” u glavnom izborniku, a zatim na “Set Build Commands”. Nakon što nam se otvorio novi prozor, pod “Python commands”, u prvoj kućici izbrišite trenutačni tekst i upišite sljedeće:

python3 -c “import py_compile; py_compile.compile(‘%f’)”

Isto tako, pod “Execute commands”, zamijenite postojeći tekst s:

python3 “%f”

i kliknite OK. Na ovaj način smo kompilator verzije 2.x zamijenili s 3.x i sada napokon možemo početi s radom.

Uvod u Python - slika 1

Današnja tema su varijable i tipovi podataka. Pa, prije nego krenemo govoriti o tome, bolje bi bilo da napišemo što smo dosad radili. Ne mnogo, ali smo ispisivali nekakav tekst pomoću funkcije print(). E sad, kada radimo program, ispisivanjem teksta dajemo korisniku do znanja što program radi i što se očekuje od korisnika da radi. Međutim, u ovom slučaju, sve što znamo je korisniku ispisati neku poruku. A kako da se on uključi, primjerice unese broj ili svoju rečenicu? Upravo tu dolaze varijable i tipovi podataka.

Što je uopće varijabla? Varijabla je dio memorije u koji spremamo podatak, a dajemo joj određeno ime kako bismo se kroz program lakše snalazili koristeći se njome. Za primjer, napišimo u Pythonu:

a = 5

Što smo zapravo napravili? Napravili smo varijablu kojoj smo dali ime “a” i pridružili joj broj 5, odnosno spremili ga u varijablu. Iz toga možemo zaključiti da je znak “=” znak pridruživanja.

Sada pritisnemo CTRL + S i spremimo datoteku. Pritiskom tipke F5, pokrenut ćemo program, ali se neće ništa ispisati. Zašto? Jer ništa nismo ispisali naredbom za ispis, već samo pridružili broj 5 varijabli a. Ako želimo vidjeti, odnosno ispisati što se nalazi u varijabli a, napišemo u Geany sljedeće:

print(a)

Dosad smo naredbu print rabili za ispis rečenica, njome ćemo se koristiti i sad, ali kad želimo ispisati vrijednost varijable ne trebaju nam navodnici.

Uvod u Python - slika 2

E sad, ima tu jedna škakljiva stvar, pogotovo za one koji se prvi put susreću s programiranjem. Radi se o tome da u varijablu možemo beskonačno mnogo puta zapisati nešto, dok se ona stara vrijednost gubi. Kako bismo to vidjeli, napišimo u sljedeći red ovaj kod i pokrenimo program:

a = 10
print(a)

Što se sada dogodilo? U varijabli a stari se sadržaj, tj. broj 5 izbrisao i spremio se novi broj, u ovom slučaju 10.

Uvod u Python - slika 3

Dakle, radi se o tome da je varijabla upravo ono što njeno ime govori, varijabilna, odnosno promjenjiva. Zapravo, varijablu možemo gledati kao praznu šalicu. U šalicu možemo natočiti čaj i u njoj će se nalaziti čaj tako dugo dok ne želimo staviti u nju primjerice mlijeko. Izlit ćemo čaj i natočiti mlijeko. Isto tako funkcioniraju varijable. U nju možemo zapisivati vrijednosti, a svakim novim upisom gubimo staru vrijednost.

Sada kada smo naučili što su varijable i kako varijabli pridružiti vrijednost, treba reći nešto o tipovima podataka. Što je tip podatka? Mislim da definicije iz knjige nisu previše poželjne i još k tomu dodatno zbune čitatelja. Ukratko, postoji više tipova podataka, a to su: brojevi, stringovi, liste, n-torke (tuple) i rječnici. E sada, u ovom dijelu mi ćemo obraditi samo brojeve i stringove, dok će ostali tipovi podataka biti kasnije obrađeni. Osobno mislim da nam za početak i ne treba više, dok s druge strane mislim da je teško apsorbirati toliko različitih pojmova i mogućnosti manipulacije nad njima.

Krenut ćemo s brojevima. Kao što i sami znamo iz matematike, nekima više, nekima manje drage, postoji više vrsta brojeva, od prirodnih, cijelih, realnih, pa sve do kompleksnih. Ipak, Python ima samo tri tipa brojeva, pa možete odahnuti.
To su int, float i complex. Tip int su cijeli brojevi, float se upotrebljava za decimalne brojeve, dok je complex za kompleksne brojeve. U prijašnjim verzijama Pythona postojao je i tip long, koji je bio nešto slično što i int, ali u verzijama 3.x su ta dva tipa spojena u jedan (int).

Tip int već smo upoznali, odnosno koristili smo se njime kod varijable a. Ako želimo provjeriti kojeg je tipa varijabla, upotrebljavamo funkciju type(). Da bismo dobili to ispisano, moramo funkciju type() staviti unutar funkcije print():

print(type(a))

I kada pokrenemo program, dobit ćemo ispisani tip. Da to malo objasnim, pogotovo ovaj dio gdje se funkcija nalazi unutar funkcije. Ovdje se radi o tome da prvo funkcija type(a) vrati rezultat, odnosno kojeg je tipa varijabla a, a onda se to sve ispiše jer se to nalazi unutar funkcije print(). Ako samo napišemo funkciju type(a), opet će ona vratiti rezultat kojeg je tipa varijabla a, međutim to nama neće biti ispisano.

Uvod u Python - slika 4

Ono što treba zaključiti jest to da Python sam prepoznaje koji tip podataka spremamo u varijablu. Upravo iz tog razloga je Python dinamičan programski jezik, odnosno ima dinamične varijable i automatsku alokaciju memorijskog prostora (zato što za svaki tip podataka treba različita veličina memorije). To je veoma važno jer za većinu programskih jezika to nije slučaj, već korisnik mora definirati tip varijable. Ovo je prednost, ali i mana ovog jezika, te moramo biti pažljivi oko toga.

Sljedeći tip je float. Taj tip koristimo kod decimalnih brojeva. Primjerice, napravimo novu varijablu b u koju ćemo upisati decimalni broj:

b = 15.2
print(b)
print(type(b))

Eto, napisali smo decimalan broj te nakon toga napisali funkciju za ispis varijable i njezina tipa. Vidimo da je ispisana vrijednost te njezin tip float.

I naravno, treća vrsta je tip complex, koji nećemo mnogo upotrebljavati, ali ga ipak treba predstaviti. Treba napomenuti da je sve unutar jedne varijable jedan broj, pa ćemo u sljedećem primjeru vidjeti da se funkcijom print ispisuje kompleksni broj u zagradi da se naglasi da je to zapravo jedan kompleksni broj, a ne da je, u ovom slučaju, 5 jedan broj, a 9 je drugi.

c = 5 + 9j
print(c)
print(type(c))

Također, na prikazanoj slici vidite gornji dio koda narančasto obojen. To je zato što je postao komentar, odnosno upotrebom tri apostrofa ”’ za početak i kraj možemo označiti više redova koje želimo staviti u komentar i na taj se način taj dio koda ne izvršava. Ako želite samo da jedan red postane komentar, i tako onemogućiti njegovo izvršavanje, dovoljno je na početak reda staviti znak “#”. Pomoću komentara možete pisati i podsjetnike u kodu ili označavati gdje vam se što nalazi. Sve što je pod navodnicima se ne izvršava u programu, već se taj dio preskače.

Uvod u Python - slika 5

Pošto smo predstavili brojeve, na red dolaze stringovi. Što reći, što je string? Zapravo, i s tim smo se već upoznali. Možemo reći da je string znakovni niz. A znakovni niz, odnosno niz znakova smo već upotrebljavali kod ispisa. To su slova, interpunkcija i brojevi (u ovom slučaju brojevi imaju status znaka, a ne broja kao broja nad kojim se izvršavaju aritmetičke operacije), a možemo rabiti jedno slovo, kao riječ, rečenicu pa i kao tekst.
Slobodno možete izbrisati do sada napisani kod, napravite novu varijablu imena “recenica” te joj pridružite tekst:

recenica = “Pozdrav svima!”

Kao što vidite, važna stvar kod pridruživanja stringova je da morate napisati navodnike kako bi Python shvatio o da se radi o stringu, jer inače će doći do pogreške u programu. (Napomena: ako kopirate kod iz ovih tutoriala, izbrišite navodnike i ponovo ih napišite u Geanyju, jer su oni drugačiji u uređivačima koda i procesorima teksta. Pa ako ne promijenite navodnike, program neće raditi.) Da bismo vidjeli tip, opet se koristimo naredbom type().

Što se stringova tiče, moram još reći jednu stvar. NEMOJTE miješati brojeve i znakove (stringove)! Probat ću objasniti dio u ovom tutorialu, ali kada ćemo obrađivati operatore, shvatit ćete u potpunosti o čemu se radi.

Naime, ako u jednu varijablu spremite 10 kao int (broj), a u drugu “10″ kao str (znak), to je jako velika razlika. Radi se o tome da svaki tip podataka ima mogućnosti manipulacije. Primjerice, brojeve možemo zbrajati, oduzimati, dijeliti itd., dok te operacije sa stringovima ne možemo. Zato je važno znati kakav tip podataka vam treba. Čisto iz razloga kako biste poslije vrijednost te varijable koristili. Kažem, to ćemo kod operatora detaljnije objasniti i vidjet ćete o čemu se točno radi.

Uvod u Python - slika 6

Eto, kao što vidite, obradili smo osnovne tipove podataka, tj. one kojima ćemo se za sada koristiti. Ali, treba reći još jednu stvar! U Pythonu ne trebamo pisati tip varijable, već Python to sam shvaća za nas. Zato je moguće, primjerice, u varijablu recenica, u kojoj imamo zapisanu rečenicu “Pozdrav svima!” tipa string, zapisati broj, tipa int, pa će Python varijablu recenica pretvoriti iz tipa str u int (broj). To je jako važno, i vodite brigu o tome!

recenica = 150
print(recenica)
print(type(recenica))

Kada pokrenemo program, vidimo da se ona stara vrijednost “Pozdrav svima!” prebrisala i došla je nova vrijednost, a isto tako se tip promijenio iz str u int.
Uvod u Python - slika 7

Da je to sve vezano uz varijable, nije. Ima još jedna stvar, a radi se o sljedećem. Mi smo do sada jednu varijablu mogli pretvoriti u drugi tip samo ako smo upisali novi sadržaj drugog tipa i tako prebrisali stari sadržaj. Međutim, da to ne bismo radili, moguće je iskoristiti funkcije koje pretvaraju varijablu iz jednog tipa u drugi.

int() – pretvara varijablu u tip int
float() – pretvara varijablu u tip float
str() – pretvara varijablu u tip str

Ovo su jako korisne funkcije, pogotovo ako tijekom programa trebate raditi različite stvari s istim podatkom. Također, vidjet ćemo kasnije da to možemo upotrebljavati i kod upisa od strane korisnika.

Uvod u Python - slika 8

Sad bih trebao reći da je došao članku kraj, međutim, još nije :D Ono što smo do sada napravili je mnogo, međutim nedovoljno za našeg korisnika kojem pišemo program. On još ne može ništa unijeti u program. Da bismo mu to omogućili, koristimo se funkcijom input(). Do sada napisani kod možete izbrisati i napišite u program sljedeći kod:

unos = input(“Unesite broj: “)

U ovom dijelu smo napravili varijablu unos, u koju će se spremiti ono što korisnik upiše. Što se tiče teksta unutar zagrada, to je poruka korisniku da zna što treba napraviti. Naravno, možete to ostaviti prazno, ali takvim načinom korisnika ostavljate zbunjenog je ne zna što se od njega očekuje da upiše.
Budući da smo danas radili tipove podataka, vjerojatno vas zanima kojeg je tipa korisnikov unos. E tu ima jedna zanimljivost. Ja ću prikazati na slici program gdje se rade tri upisa: s cijelim i decimalnim brojem te rečenicom. Ono što vidimo je da su sve varijable tipa string. Malo začuđujuće!

Uvod u Python - slika 9

Ovakav način rada je normalan u Pythonu. Ako mi unutar programa napravimo varijablu i unesemo vrijednost, Python sam shvati o kojem se tipu radi. Ipak, kod unosa od strane korisnika je priča drugačija, a to je dobro iz razloga jer mi kao programeri imamo kontrolu nad tipom podataka. Kako bismo imali unesen onakav tip koji nama treba radimo sljedeće:

input() – za unos stringova
int(input()) – za unos cijelih brojeva
float(input()) – za unos decimalnih brojeva

Možda sada to izgleda zbunjujuće, međutim ovakav način rada je veoma koristan, jer znamo da ako koristimo input() funkciju bez ikakve pretvorbe, dobivamo string, a ako želimo neki drugi tip podatka, samo funkciju input() stavimo unutar zagrada funkcije za pretvorbu tipa. Zato smo i prikazali funkcije za pretvorbu tipa. Naravno, kao napomenu moram reći da ovakav način nije jedini i univerzalni. Programirati se može na razne načine, a meni se ovo čini ko najjednostavniji način čisto iz razloga jer kod funkcije input() si zapravo sami napišemo kakav tip želimo i kakav će nam on biti.

Uvod u Python - slika 10

Također, jedan od načina unosa je da se sve unosi samo input() funkcijom, a kasnije se varijabla pretvara u željeni tip. Ovakav način je koristan ako želimo provjeriti korisnikov unos, što ćemo prikazati u sljedećim tutorialima jer se program neće prekinuti i javiti pogrešku ako, primjerice, unesemo rečenicu umjesto broja, kao u prethodnom slučaju, već se određenim mehanizmom od korisnika traži da ponovno unese vrijednost.

Uvod u Python - slika 11

I eto, došli smo do kraja današnjeg tutoriala. Iako je u ovom tekstu dosta stvari koje morate pohvatati, mislim da će se s vremenom kod svakog od vas razviti drugačiji način programiranja. Vidjeli ste u ova posljednja dva primjera, dva različita načina unosa. Takva stvar je u programiranju normalna. Sve se može napraviti na tisuću različitih načina, da li bilo s pet, deset ili sto linija koda. Svatko od nas je jedinstven, a takav će biti i kod od svakoga od nas. Zato sam odlučio na kraju svakog tutoriala napisat po tri zadatka. Ne iz razloga da vas mučim, već iz razloga da izvježbate ono što se dosad radilo i pokušate iskoristiti svoju kreativnost i napisati program na svoj način.

  1. Napravite varijablu i njoj pridružite rečenicu “Ajmo na more!”, te to ispišite (pomoću naredbe za ispis).
  2. Napišite program koji traži unos od korisnika. Ispišite što je korisnik unio i tip varijable.
  3. Napišite program koji traži da korisnik unose decimalni broj. Ispišite uneseni broj te napravite novu varijablu u kojoj će se nalaziti taj isti broj pretvoren u cjelobrojni tip podatka i također ga ispišite. Kao uvod u sljedeći tutorial, za one hrabrije, neka na kraju ispišu zbroj tih dviju varijabli (operator za zbrajanje je znak +, a primjer zbrajanja izgleda ovako: a+b).

Do sljedećeg puta,

Nikola

VN:F [1.9.22_1171]
Rating: 4.6/5 (19 votes cast)
Serijal tekstova: Zajedno naučimo Python (2. dio), 4.6 out of 5 based on 19 ratings

Povezani članci:

Upoznajte Naoa - robota p...
SOK organizira Malu školu...
Upoznajte CLI program top
E-knjiga: Pet zlatnih pra...
Serijal tekstova: Zajedno...

39 Responses

  1. Sasa kaže:

    Svaka cast na uputstvu, veoma korisno, odlicno napisano, prilagodjeno pocetnicima … Samo napred !!! Jako dobro pises :)

  2. Yorkin kaže:

    Docekali smo i drugu epizodu, jeiiij… svidja mi se. Onako fino i jednostavno pisano, za mene tutleka :D

  3. bojan kaže:

    Sve sam radio kako pise, ali pravi mi problem sa input f-jom tj. sa stringom. Kod je ovakav:

    # Unos kao str
    unos = input(“Unos: “)

    # Pretvaranje u zeljeni tip (int)
    unos = int(unos)
    print(type(unos))

    Javlja gresku: SyntaxError: Unexpected EOF while parsing.

    Samo sa stringovima pravi problem tj. sa input metodom.

  4. calisto053 kaže:

    Odlicna stvar, Nikola, samo,naprijed!

  5. lol kaže:

    Ovo je sve previse pocetnicki :/

  6. sade kaže:

    http://cloverleaf-linux.org/

    Ljudi iz cloverleaf-a (ex-fuduntu) mole da im se pomogne sa artworkom posto su kako sami kazu svi cijepljeni od ikakvog dizajnerskog talenta.Pa ako netko zna i ima volje

    • wintermute kaže:

      sve je to krasno, ali ne vidim ali nikakvu, niti udaljenu vezu sa ovim tekstom ispod kojeg je “komentar”..
      ??

      • linuxzasve kaže:

        Pa čovjek je iskoristio mogućnost komentiranja da pozove na suradnju.
        Budući da je namjera dobra i da je Cloverleaf cijenjeni projekt, ostavili smo komentar iako je malkice offtopic.
        A i sam komentar nas je potaknuo za pisanje članka i malo većeg poziva svima koji žele sudjelovati. ;)

        • wintermute kaže:

          ma razumem ja sve to i, pozdravljam donekle, ali evo kad vec pravimo slepo crevo na threadu, jedna od mojih omiljenih izreki, u or’ginalu jer se prevodom dosta gubi..

          the road to hell is paved with good intentions..

          nu..
          malo spama ne ubi nikoga, tako??
          video sam i ja taj “poziv” na suradnju, ima nekoliko dana, ali je mene odbio iz vise razloga, nastavicemo ispod odgovarajuceg clanka..
          peace out..

      • sade kaže:

        Pa negdje sam morao objavit:)pa sam se odlucio normalno za najsvjezije clanke…

  7. Alexius kaže:

    Molio bih za pojašnjenje jednog fenomena u svezi Geany-ja. Na staroj verziji sam s F5 pokretao python program i s ponovnim F5 zatvarao shell. U novoj verziji ne mogu s F5 ubiti proces i zatvoriti terminal.

    Savjet? Hvala.

  8. marko kaže:

    Pozdrav,
    imam problem.
    Kada snimim program (provjerio sam sintaksu i navodnike), pritisnem F5.
    Tada mi izbaci crni ekran (Konsole) s znakom dolara.

    Ne izbacuje mi: Pozdra svijetu ili sto sam već zadao.
    Da li netko zna di je greška. :-(
    Puno hvala

    • Nikola kaže:

      Idi u Edit >> Preferences i zatim pod Tools. Provjeri da li ti pod Terminal piše x-terminal-emulator. Ako ne, napiši tako i radit će ;)

  9. wintermute kaže:

    pozdrav..
    ja nemam problem.. :)
    svaka cast autoru, samo tako, jasno i polako.. jako dobro..

  10. Bigfoot kaže:

    Svaka pohvala… poucno jako!
    Svakih kolko ces izbacivati ove clanke… vidim razmak je bio 10 dana…znaci li to da moramo sad cekati do 28.07.?(nestrpljiv):)

  11. Joe kaže:

    Sve pohvale! :)
    Ovaj serijal tekstova je sjajna ideja, konačno sam počela da učim. Dugo nisam bila ovoliko uzbuđena zbog toga. xD
    Hvala. ^^

  12. coolaid kaže:

    python3: can’t open file ‘“python-02.py”’: [Errno 2] No such file or directory

    ??

  13. iso57 kaže:

    Molim pomoć

    unos = int(input(“Unesite broj: 3″))

    javlja mi
    Valve Error: invalid literal for int() with base 10

    koristim Python3 i pocetnik sam

    Hvala

    • Dario kaže:

      @iso57, lijepo je što želiš naučiti iz ovog tutorijala no na naslovnici se ostavljaju komentari, pozitivni ili negativni, svejedno.
      Za pomoć je primjereniji naš forum ili eventualno IRC kanal ako je nešto jako hitno.. forum zato što je tamo preglednije i možda riješenje pomogne i nekom drugom tko se nađe u sličnoj situaciji, dok je IRC pogodniji za neke hitne i kratkoročne zahvate ;)

Ostavi komentar

© 2014 Linux Za Sve. | Impressum | Sadržaj je licenciran pod CC-SA-3.0 ako nije drugačije naznačeno.
Proudly designed by Theme Junkie.