Python - da krenemo!

Vaš prvi Python program

Startujte IDLE pa otvorite novi prozor (korišćenjem New File opcije u File Menu). Unesite sledeći program:

temp = eval(input('Unesite temperaturu u Celzijusima: '))
print('U Farenghajtima to je', 9/5*temp+32)

Iz meni-ja izaberire Run → Run module (ili kliknite dugme F5). IDLE će tražiti da sačuvate program u fajlu koji treba da ima ekstenziju .py.

Kada je program sačuvan, on će biti odmah i izvršen u shell prozoru. Program će vas pitati da unesete temperaturu. Ukucajte 20 i pritisnite enter. Na ekranu shell prozora će se prikazati sledeći tekst:

Unesite temperaturu u Celzijusima: 20
U Farenghajtima to je 68.0

Analizirajmo sada kako gornji program radi. U prvoj liniji programa se traži od korisnika da unsese temperaturu. Svrha funkcija input je da traži da korisnik ukuca nešto i da se to preuzme. Onaj deo koji je pod znacima navoda će biti prikazan korisniku kao uputstvo šta se od njega očekuje. U ovoj liniji se koristi i eval funkcija o kojoj će biti više reči kasnije. Za sada, upamtite samo da se ona koristi kako bi ono što korisnik ukuca bilo protumačeno kao numerička vrednost (broj).

Potrebno je da damo neko ime ovoj numeričkoj vrednosti koju je korisnik uneo tako da je program zapamti, pre nego što je bude koristio u drugoj liniji. Ime koje smo upotrebili je temp a znak jednakosti služi da to ime poveže sa unetom numeričkom vrednošću.

Druga linija koristi print funkciju kojom se na ekranu prikazuje rezultat konverzije. Deo unutar navodnika je takozvani string koji će se kao takav pojaviti na ekranu. Drugi argument u print funkciji je kalkulacija koju treba izvršiti da se dobije rezultat konverzije. Python će izvršiti tu kalkulaciju i rezultat prikazati na ekranu.

Ovaj program vam može izgledati suviše kratak i jednostavan, ali setite se da na internetu ima puno sajtova koji nude sličnu konverziju temperatura, a njihovi programi nisu ništa složeniji od našeg.

Vaš drugi program

Evo programa koji izračunava srednju ( prosečnu ) vrednost dva broja koja korisnik unese:

broj1 = eval(input('Unesite prvi broj: '))
broj2 = eval(input('Unesite drugi broj: '))
print('Srednja vrednost unetih brojeva je', (broj1+broj2)/2)

Za ovaj program potrebno je da korsinik unese dva broja. Postoje načini kako da se to uradi u jednoj liniji, ali zbog jednostavnosti mi ćemo za to korsititi dve linije. Preuzimamo brojeve jedan po jedani i svakom od njih dajemo posebno ime. Još jedino treba da uočimo korišćenje zagrada u kalkulaciji srednje vrednosti u trećoj liniji. Zagrade su potrebne zbog redosleda operacija. Sva množenja i deljenja se obavljaju pre sabiranja i oduzimanja pa zato moramo koristiti zagrade kako bi Python prvo obavio sabiranje.

Unos programa i podataka

Velika i mala slova

U Python-u print, Print, i PRINT su različite stvari. Znači velika i mala slova su važna. Za sada, držaćemo se malih slova, pošto većina Python naredbi koristi takva slova.

Razmaci (Spaces)

Razmaci su značajni na početku linije, ali ne posle toga. Na primer, sledeći program neće raditi (zbog razmaka na početku druge linije):

temp = eval(input('Unesite temperaturu u Celzijusima: '))
  print('U Farenhajtima to je', 9/5*temp+32)

Python koristi razmak na početku linije programa u posebne svrhe o kojima ćemo govoriti uskoro. S druge strane razmaci na drugim mestima nisu važni. Na primer sledeće naredbe imaju isti efekat iako se malo međusobno razlikuju.:

print('Hello world!')
print ('Hello world!')
print( 'Hello world!' )

U osnovi, računari će raditi ono što im se kaže a naredbe shvataju veoma bukvalno. Python se potpuno oslanja na stvari kao što su zarezi i zagrade da bi znao šta je šta. Python nije u stanju da pogodi šta ste vi mislili pa zato morate biti precizni. To za vas u početku može biti frustrirajuće pri pokušajima da stavite sve te zareze i zagrade na pravo mesto, ali će vam uz malo prakse to postati sasvim prirodno. Pa ipak, i posle duže prakse u programiranju, dešavaće se da nešto pogrešite. Srećom Python interpretator je veoma dobar u pronalaženju takvih grešaka i pomoći će vam da ih otkolonite.

Ulaz podataka (input)

Funkcija input pruža jednostavan način da vaš program preuzme ulazne podatke od korsinika. Evo jednog primera:

ime = input('Unesite vaše ime: ')
print('Dobar dan, ', ime)

Osnovna struktura neredbe za preuzimanje podataka je:

<naziv varijable> = input(<poruka za korisnika>)

Ovo je naredba za preuzimanje tekstualnih podataka. Za preuzimanje brojeva koje ćemo koristiti pri kalkulacijama potrebno mam je još nešto. Evo primera:

broj = eval(input('Unesite broj: '))
print('Vaš broj na kvadrat:', broj*broj)

Funkcija eval konvertuje tekstualni podatak koji korisinik unosi u broj. Jedna lepa osobina je da vi možete uneti čak i matematički izraz kao što je 3*12+5, a eval će ga za vas izračunati i pridružiti varijabli sa leve strane znaka jednakosti.

Izlaz podataka (print)

Evo najpre jedan prost primer:

print('Dobar dan')

Funkcija print zahteva zagrade oko svojih argumenata. U gornjem programu jedini argument je string ‘Dobar dan’. Tekst unutar navodnika biće štampan baš kako je napisan (osim nekih izuzetaka o kojima će biti reči kasnije). Kod sledećih naredbi, prva će štampati 3+4, dok će druga štampati 7:

print('3+4')
print(3+4)

Da bi štampali više stvari odjednom, odvojite ih zarezima u print naredbi. Python će automatski između njih dodati razmak (space) pri štampanju. Dole je primer sa izlazom koji proizvodi.

Program:

print('Vrednost izraza 3+4 je', 3+4)
print('A', 1, 'XYZ', 2)

Izlaz:

Vrednost izraza 3+4 je 7
A 1 XYZ 2

Opcioni argumenti print funkcije

Postoje dva opciona argumenta za print funkciju. Oni nisu od velike važnosti, ali su korisni ako želite da vaši izlazi izgledaju lepo.

sep

Python, kako smo već videli, ubacuje razmak između argumenata print funkcije. Opcioni argument sep, skraćeno od separator, može da posluži da umesto razmaka stavite nešto drugo između argumenata. Na primer korišćenjem sep=’:’ razmak će biti zamenjen sa dve tačke, a sep=’##’ će razmak zameniti sa dva heštag znaka.

Jedna posebno korisna mogućnost je da se između navodnika ne stavi ništa kao u sep=’’. Ovim se kaže da među argumentima neće biti umetnuto ništa. Evo primera gde korišćenje sep opcije čini da izlaz izgleda lepo:

print ('Vrednost izraza 3+4 je', 3+4, '.')
print ('Vrednost izraza 3+4 je ', 3+4, '.', sep='')

The value of 3+4 is 7 .
The value of 3+4 is 7.

end

Funkcija print automatski posle izvršavanja pomera kursor u sledeću liniju. Tako, sledeći program bi štampao izlaz u dve linije:

print('U prvoj liniji')
print('U drugoj liniji')

U prvoj liniji
U drugoj liniji

Opcioni argument end možete iskoristiti da sprečite print naredbu na automatski pređe na novu liniju. Evo primera:

print('Uprvo liniji', end='')
print('U dugoj liniji')

U prvoj linijiUdrugoj liniji

Naravno, ovo se moglo postići i sa jednom print naredbom, ali ćemo videti kasnije da postoje slučajevi kada je korisno upotrebiti end opciju.

Varijable

Ako pogledamo nazad naš prvi program videćemo da smo tamo koristili varijablu pod nazivom temp:

temp = eval(input('Unesite temperaturu u Celzijusima: '))
print('U Farenghajtima to je', 9/5*temp+32)

Jedna od glavnih uloga varijable je da pamti vrednost iz nekog dela programa tako da se ta vrednost može upotrebiti u nekom drugom delu programa. U gornjem slučaju varijabla temp je pamtila vrednost koju je korisnik uneo tako da je ona mogla da bude korišćena pri kalkulaciji u narednoj liniji.

U primeru koji sledi vršimo jednu kalkulaciju čiji rezultat ćemo koristiti na više mesta u programu. Kada rezltat neke kalkulacije sačuvamo korišćenjem varijable, onda tu kalkulaciju više ne moramo da ponavljamo. To naš program čini mnogo kraćim i čitljivijim.:

temp = eval(input('Unesite temperaturu u Celzijusima: '))
f_temp = 9/5*temp+32
print('U Farenghajtima to je', f_temp)
if f_temp > 212:
    print('Temperatura je iznad tačke ključanja.')
if f_temp < 32:
    print('Temperatura je ispod tačke zamrzavanja.')

Još nismo razmatrali if naredbu, ali ona radi upravo kako vi intuitivno pretpostavljate.

Drugi primer

Sledi još jedan primer sa varijablama. Pre nego što nastavite sa čitanjem probajte da odredite koju će vrednost varijable x, y i z imati nakon izvršavanja sledećeg koda:

x = 3
y = 4
z = x + y
z = z + 1
x = y
y = 5

Nakon izvršavanja ovih linija koda x je 4, y je 5 a z je 8. Jedan način da se shvati zašto je to tako, je da se kod posmatra linija po linija. To je posebno korisna tehnika za razumevanje i mnogo složenijih delova koda. Evo opisa šta se dešavalo pri izvršavanju gornjeg koda:

Linija 1. Varijabla x dobija vrednost 3
Linija 2. Varijabla y dobija vrednost 4.
Linija 3. Varijabla z dobija vrednost x+y, što iznosi 7.
Linija 4. Varijabla z se menja tako da dobija za 1 veću vrednost, koja od 7 postaje 8.
Linija 5. Varijabla x se menja tako da dobija onu vrednost koju u tom trenutku ima varijabla y, to jest 4.
Linija 6. Varijabla y se menja i dobija vrednost 5.

Tako na kraju , x je 4, y je 5, a z je 8.

Nazivi (imena) varijabli

Postoji nekoliko pravila koje treba poštovati pri davanju imena varijablama:

Nazivi varijabli mogu sadržati slova, brojeve i donju crtu (_).
Nazivi varijabli ne smeju sadržati razmake (space).
Nazivi varijabli ne smeju počinjati brojem.
Velika i mala slova čine razliku — tako temp i Temp su dve različite varijable.

Od pomoći je ako birate deskriptivne nazive varijabli tako da ti nazivi asociraju na vrednosti koje varijabla treba da pamti, ali pri tome vodite računa da nazivi ne budu predugački.

Vežbe

1.1 Štampajte pravougaonik kao ovaj prikazan dole.

*******************
*******************
*******************
*******************

1.2 Štampajte pravougaonik kao ovaj prikazan dole.

*******************
*                 *
*                 *
*******************

1.3 Štampajte trougao kao ovaj prikazan dole.

*
**
***
****

1.4 Napišite program koji izračunava i štampa sledeći matematički izraz. Treba da dobijete oko 0.1017.

512-282
_______

47·48+5

1.5 Tražite od korisnika da unsese broj. Štampajte kvadrat tog broja, ali koristite sep opciju tako da dobijete izlaz kao ovaj prikazan dole.

Unesite broj: 5
Kvadrat broja 5 je 25.

1.6 Tražite od korisnika da unsese broj x. Iskoristite sep opciju da štampate x, 2x, 3x, 4x, i 5x, razdvojene sa tri crtice kao što je prikazano dole.

Unesite broj: 7
7---14---21---28---35

1.7 Napišite program koji traži od korsinika da unese težinu u kilogramima i da je konvertuje u funte. Jedan kilogram ima 2.2 funte.

1.8 Napišite program koji traži od korisnika da unese tri broja (koristite tri posebne input naredbe). Kreirajte varijable sa nazivima total i prosek koje sadrže sumu i srednju vrednost od tri uneta broja, pa štampajte vrednost varijabli total i prosek.

1.9 Mnogi mobilni telefoni imaju kalkulator za napojnicu (bakšiš). Napišite jedan takav kalkulator u Python-u. Tražite od korisnika da unese iznos vašeg računa i procenat napojnice koju želite da ostavite. Zatim štampajte iznos napojnice i ukupan iznos vašeg računa uključujući napojnicu.