IDLE
IDLE je integrisanorazvojno okruženje (Integrated Development Environment –
IDE) koje dolazi sa Python instalacijom. To je program koji vam omogućava da
editujete i izvršavate Python programe. Postoje i druga razvojna okruženja za
Python, ali preporučujemo IDLE-a zbog njegove jednostavnosti.
Kada startujete IDLE, otvoriće se poseban interaktivni prozor (shell) u kojem
možete da unostite Python naredbe, kao i da odmah vidite rezultat izvršavanja
tih naredbi. Ovaj prozor se najčešće koristi kao kalkulator ili za testiranje manjih
programa. Međutim, vi ćete najčešće želeti da iz IDLE-a otvorite još jedan
prozor u kojem ćete moći da unosite i editujete vaše programe.
3.
Ako ukucate Rezultat
CTRL+CKopiranje (copy) selektovanog teksta
CTRL+X Odsecanje (cut) selektovanog teksta
CTRL+V Lepljenje (paste) teksta
CTRL+Z Opozovi (undo) poslednju komadu ili grupu komandi
CTRL+SHIFT+Z Ponovi (redo) poslednju komandu ili grupu komandi
F5 Izvrši (run) program (modul)
Korišćenje skraćenih komandi na tastaturi
Vaš prvi Pythonprogram
Startujte IDLE pa otvorite novi prozor (korišćenjem New File opcije u File
Menu). Unesite sledeći program:
broj1 = eval(input('Unesite prvi broj: '))
broj2 = eval(input('Unesite drugi broj: '))
print('Srednja vrednost unetih brojeva je', (broj1+broj2)/2)
6.
Unos programa ipodataka
• 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)
7.
• Python koristirazmak 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!' )
8.
Ulaz podataka (input)
Funkcijainput pruža jednostavan način da vaš program preuzme ulazne
podatke od korisnika. 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>)
9.
Ovo je naredbaza 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.
10.
x = input()
x= int(input())
x = float(input())
x = input("Unesi ime: ")
11.
Izlaz podataka (print)
Evonajpre 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.
Opcioni argumenti printfunkcije
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.
14.
Jedna posebno korisnamoguć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.
15.
end
Funkcija print automatskiposle 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
16.
Opcioni argument endmožete iskoristiti da sprečite print naredbu na
automatski pređe na novu liniju. Evo primera:
print('U prvoj liniji', end=’')
print('U drugoj liniji')
U prvoj linijiU drugoj 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.
17.
Varijable
Ako pogledamo nazadsledeći program videćemo da se tamo koristi varijabla
pod nazivom temp:
temp = eval(input('Unesite temperaturu u Celzijusima: '))
print('U Farenhajtima 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.
18.
U primeru kojisledi 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.')
19.
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.
20.
Jedan način dase 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.
x=3
y=4
z=x+y
z=z+1
x=y
y=5
21.
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.
22.
Vežbe
1. Štampajte pravougaonikkao ovaj prikazan dole.
*******************
*******************
*******************
*******************
4. Napišite programkoji izračunava i štampa sledeći matematički izraz.
Treba da dobijete oko 0.1017.
512-282
_______
47·48+5
26.
5. Tražite odkorisnika da unese 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.
27.
6. Tražite odkorisnika da unese 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
28.
7. Napišite programkoji traži od korisnika da unese težinu u kilogramima i da je
konvertuje u funte. Jedan kilogram ima 2.2 funte.
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.
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.
29.
Brojevi
Celi i decimalnibrojevi
Zbog načina na koji se izrađuju računarski čipovi, celi i decimalni
brojevi se u računarima prikazuju na različit način. Decimalni brojevi
se prikazuju u takozvanoj formi plivajućeg zareza ( floating point ).
Važna stvar koju treba imati na umu kod decimalnih brojeva je da
oni tipično imaju preciznost od oko 15 cifara. Bilo bi lepo da nema
ograničenja u preciznosti, ali se proračuni vrše mnogo brže ako
zalomite broj na nekoj decimali.
30.
S druge strane,celi brojevi u Pythonu nemaju ograničenja i
mogu biti proizvoljne dužine.
Kod decimalnih brojeva poslednja cifra je malo sumnjiva
zbog činjenice da računari koriste binarni ( sa bazom 2 ) a
ljudi decimalni ( sa bazom 10 ) brojni sistem. Na primer,
matematički mi znamo da je razlomak 7/3 jednak 2.333…,
gde tri tačke označavaju beskonačno ponavljanje poslednje
cifre. Ali kada u Python šel-u unesemo 7/3 dobićemo
2.3333333333333335. To se zove greškom zaokruživanja
(roundoff error). U većini praktičnih situacija ova greška se
može zanemariti, ali kod nekih specifičnih matematičkih i
naučnih proračuna može da prouzrokuje probleme.
Celobrojno deljenje
Operator zacelobrojno deljenje, //, zahteva malo objašnjenje. U
osnovi za cele brojeve ovaj operator se ponaša kao obično
deljenje, s tom razlikom što odbacuje decimalni deo pri deljenju.
Tako će 8/5 biti 1.6, a 8//5 jednako je 1. Videćemo kasnije zašto
je ovakva operacija korisna. Napominjemo da u mnogim
programskim jezicima, pa i u starijim verzjama Python-a, običan
operator deljenja, / , u stvari vrši celobrojno deljenje.
33.
Modulo (Moduo)
Modulo operator,%, daje ostatak pri deljenju. Na primer, rezultat
operacije 18%7 je 4, jer kada podelimo 18 sa 7 dobijemo 2 i ostatak 4.
Ova operacija je iznenađujuće korisna. Na primer, neki broj je deljiv sa
brojem n kada je ostatak deljenja tog broja sa n jednak 0. Tako na
primer, da bismo proverili da li je neki broj n, paran, dovoljno je da
proverimo je li n%2 jednako 0. Da proverimo je li n deljivo sa 3,
proverimo da li je n%3 jednako 0, itd.
Jedna moguća upotreba modulo operacije je kada hoćete da se neka
operacija u petlji obavi u svakom drugom prolazu kroz petlju. To
postižete ispitivanjem da li varijabla petlje modulo 2 iznosi 0 ako iznosi
željenu operaciju treba izvršiti.
34.
Modulo operator seveoma često javlja u formulama. Ako želite da napravite
zaokret i vratite se na početak, modulo će biti od koristi. Na primer, uzmimo
časovnik. Ako dodate šest sati na 8 sati izjutra rezultat je 2 sata popodne.
Matematički to možete da postignete korišćenjem modulo operatora, to jest
(8+6)%12 jednako je 2.
Kao još jedna primer, posmatrajmo neku igru sa 5 igrača označenih brojevima
od 1 do 5. Recimo da imate varijablu player koja ukazuje na tekućeg igrača.
Nakon što igrač 5 završi, igrač 1 bi trebao da nastavi igru. U tu svrhu se može
iskoristiti modulo operator na sledeći način:
player = player%5+1
Kada je player jednako 5, player%5 će biti 0 pa će ceo izraz postaviti varijablu
player na vrednost 1.
35.
Redosled matematičkih operacija
Prvose radi stepenovanje, zatim množenje i deljenje (uključujući // i %), pa
tek na kraju sabiranje i oduzimanje.
Recimo da imate tri varijable x, y, i z, i da hoćete da izračunate njihovu
srednju vrednost. Izraz x+y+z/3 neće dati ispravan rezultat, jer deljenje ima
prednost nad sabiranjem. Ispravan rezultat ćete dobiti korišćenjm zagrada:
(x+y+z)/3.
Generalno govoreći, kad god niste sigurni u redosled izvršavanja operacija,
dodavanje zagrada može da reši problem.
36.
Slučajni brojevi
Da binapravili neku interesantnu kompjutersku igru, dobro je da se u nju
unese neki stepen slučajnosti. U Python-u postoji poseban modul, pod
nazivom random, koji nam omogućava da u programima koristimo slučajne
brojeve.
Pre nego što nastavimo priču o slučajnim brojevima potrebno je da
razjasnimo šta je to modul. Osnovni delovi Python jezika sastoje se od stvari
kao što su for petlje, if naredbe, matematički operatori, neke funkcije kao što
su print i input. Sve ostalo se nalazi u modulima, te ako želimo da koristimo
nešto što se nalazi u modulu, potrebno je da to import-ujemo, odnosno da
kažemo Python-u da to želimo da koristimo.
37.
U ovom trenutkumi želimo da koristimo samo funkciju randint
iz modula random. Da preuzmemo tu funkciju iz modula
pišemo sledeću naredbu:
from random import randint
38.
Korišćenje funkcije randintje jednostavno: randint(a,b) će nam dati jedan
slučajan ceo broj između a i b uključujući vrednosti za a i b ( za razliku od range
funkcije koja nije uključivala krajnju vrednost za b ). Evo jednog kratkog primera:
from random import randint
x = randint(1,10)
print('Slučajan broj između 1 i 10: ', x)
Izlaz:
Slučajan broj između 1 i 10: 7
Slučajan broj biće različit svaki put kada izvršimo ovaj program.
39.
Matematičke funkcije
Python imamodul math koji sadrži osnovne matematičke funkcije kao što su sin, cos,
tan, exp, log, log10, factorial, sqrt, floor, i ceil. Pored njih postoje i inverzne
trigonometrijske funkcije, hiperboličke funkcije kao i konstante pi i e. Evo kratkog
primera:
from math import sin, pi
print('Pi je približno', pi)
print('sin(0) =', sin(0))
Izlaz:
Pi je približno 3.14159265359
sin(0) = 0.0
40.
Ugrađene (built-in) matematičkefunkcije
Dve matematičke funkcije, abs (apsolutna vrednost) i round (zaokruživanje) su na
raspolaganju bez importovanja math modula. Evo nekoliko primera korišćenja ovih
funkcija:
print(abs(-4.3))
print(round(3.336, 2))
print(round(345.2, -1))
Izlaz:
4.3
3.37
350.0
Funkcija round ima dva
argumenta: prvi je broj koji
treba zaokružiti, a drugi
označava broj decimalnih
mesta u rezultatu
zaokruživanja. Uočite da drugi
argument može biti i
negativan.
Računar izabere jedanslučajan broj a korisnik pokušava da pogodi koji je to
broj, pa mu program potvrdi ako je pogodio. Da bi proverili da li je korisnik
pogodio zamišljeni broj potrebna nam je nova naredba, naredba if .
from random import randint
broj = randint(1,10)
pokusaj = eval(input('Unesite broj: '))
if pokusaj==broj:
print('Pogodili ste!')
43.
Sintaksa za ifnaredbu je slična sintaksi za for petlju u
tome što se završava sa dve tačke i što je sledeća linija (ili
više linija) koda napisana sa razmakom na početku.
Linije koje su napisane sa razmakom na početku biće
izvršene samo ako je uslov iz if naredbe ispunjen
odnosno ako je tačan (True). Kad se izvrše sve linije sa
razmakom na početku, kažemo da je blok zaključen
(završen).
44.
Gornji program radi,ali je suviše jednostavan. Ako igrač ne pogodi ništa se ne
događa. Možemo napraviti dodatak na if naredbu na sledeći način:
if pokusaj==broj:
print('Pogodili ste!')
else:
print('Žao nam je. Zamišljeni broj je bio ', broj)
Dakle, dodali smo else naredbu koja ima značenje „inače“ i pokazuje šta treba
uraditi ako uslov iz if naredbe nema vrednost tačno (True).
45.
Uslovni (relacioni) operatori
Operatoriza poređenje su ==, >, <, >=, <=, i !=. Ovaj poslednji ima
značenje „nije jednako“. Evo nekoliko primera:
Izraz Opis
if x>3: ako je x veće od 3
if x>=3: ako je x veće ili jednako 3
if x==3: ako je x jednako 3
if x!=3: ako x nije jednako 3
46.
Postoje još tridodatna operatora koji se koriste za konstruisanje
složenijih uslova. To su operatori: and, or, i not. Evo nekih primera:
if poena>=80 and poena<90:
print('Vaša ocena je 9.')
if skor>1000 or vreme>20:
print('Game over.')
if not (skor>1000 or vreme>20):
print('Game continues.')
47.
Redosled operacija uuslovima
Operacija and se izvršava pre operacije or, pa tako ako imate složeni uslov
koji sadrži oba operatora možda će vam trebati zagrade da jasno izrazite
redolsed operacija. Možete and da posmatrate kao množenje a or kao
sabiranje. Evo jednog primera:
if (skor<1000 or vreme>20) and broj_pokušaja==0:
print('Game over.')
48.
if x ==1 :
print 1
if x == 1 :
print 1
else:
print 2
if x == 1 :
print 1
elif x < 1 :
print 2
else:
print 3
Greška 1
Operator jednakostiima dva znaka jednako. Zaista je česta greška da se
zaboravi drugi znak jednako.
Neispravno Ispravno
if x=1: if x==1:
51.
Greška 2
Česta greškaje da se koristi and tamo gde treba or ili obrnuto. Posmatrajmo
sledeće naredbe:
if x>1 and x<100:
if x>1 or x<100:
Prva naredba je ispravna. Ako je x bilo koja vrednost između 1 i 100, uslov će
biti tačan (True). Ideja je da x treba da bude veće od jedan i manje od 100. S
druge strane, druga naredba nije ono što smo želeli, jer je u njoj uslov tačan bilo
da je x veće od 1, bilo da je x manje od 100. Zapravo svaki broj veći od jedan
ispunjava taj uslov. Lekcija koju iz ovog možemo da izvučemo je da ako vaš
program ne radi korektno proverite and i or operatore u uslovnim izrazima.
52.
Greška 3
Jedna čestagreška je i kada se napiše nešto ovako :
if poena>=80 and <90:
To će dovesti do sintaksne greške. Korektna naredba je :
if poena>=80 and poena<90:
S druge strane postoji jedan lep način skraćenog pisanja koji radi u Python-u
(ali ne i u većini drugih programskih jezika) :
if 80<=poena<90:
53.
elif
Jedna jednostavna upotrebaif naredbe je za određivanje ocene na osnovu broja poena. Recimo
da je 90 i više poena desetka, 80 i više devetka, 70 i više osmica, 60 i više sedmica, 50 i više
šestica, a sve ispod 50 petica. Evo kako to može biti izraženo u programu:
poena = eval(input('Unesite broj poena: '))
if poena>=90:
print('Deset')
if poena>=80 and poena<90:
print('Devet')
if poena>=70 and poena<80:
print('Osam')
if poena>=60 and poena<70:
print('Sedam')
if poena>50 and poena<60:
print('Sest')
else:
print('Pet')
54.
Gornji kod jeispravan i radi kako treba. Međutim postoji elegantniji način da se
postigne isti rezultat :
poena = eval(input('Unesite broj poena: '))
if poena>=90:
print('Deset')
elif poena>=80:
print('Devet')
elif poena>=70:
print('Osam')
elif poena>=60:
print('Sedam')
elif poena>=50:
print('Šest'):
else:
print('Pet')
55.
Sa posebnim ifnaredbama ( kao u prvom pokušaju ) svaki uslov se proverava
bez obzira da li je to stvarno potrebno ili ne. Tako, ako je vrednost varijable
poena 95, prvi program će štampati Deset, ali će nastaviti da proverava uslove
za Devet, Osam i tako dalje, što je mali gubitak efikasnosti. Korišćenjem elif,
čim se jedan uslov ispuni prestaje se sa ispitivanjem svih ostalih uslova do
kraja bloka. Dodatna pogodnost je što su uslovi koje postavljamo u elif
naredbama jednostavniji nego kod njima odgovarajućih if naredbi. Na primer,
kada koristimo elif, drugi deo uslova iz druge if naredbe , poena<90, nije više
potreban jer ovaj elif ne mora više da brine o poenima većim od 90 pošto je
taj broj poena već procesiran prvom if naredbom.
Možete se potpuno lagodno osećati i bez elif naredbe, ali ona može često
pojednostaviti vaš kod.
56.
Vežbe
• Napisati programkoji traži od korisnika da unese dužinu u
santimetrima. Ako korisnik unese negativnu dužinu program
treba da mu saopštu da je uneo neispravnu vrednost. U
suprotnom, program treba da konvertuje i štampa dužinu u
inčima. U jednom inču ima 2.54 santimetra.
• Tražite od korisnika da unese temperaturu. Zatim ga pitajte u
kojim jednicama je temperatura, Celzijus ili Farenhajt.
Program treba da konvertuje temperaturu u drugu
jedinicu.Formule za konverziju su: F=9/5*C+32 i C=5/9*(F-
32).
57.
•Generišite jedan slučajanbroj između 1 i 10. Tražite od
korisnika da pogodi broj i štampajte odgovarajuću poruku
ako je pogodio broj ili ako nije.
•Prodavnica naplaćuje $12 jedinici proizvoda ako kupujete
manje od deset proizvoda. Ako kupujete između 10 i 99
proizvoda, cena je $10 po proizvodu. Ako kupujete 100 ili
više od 100 proizvoda cena je $7 po proizvodu. Napišite
program koji traži od korisnika koliko proizvoda kupuje i
štampa ukupnu cenu za tu kupovinu.
•Napišite program koji traži od korisnika da unese dva
broja i štampa Blizu ako su oni udaljeni manje od 0.001
međusobno, dok u suprotnom štama Nisu blizu.
58.
• Godina jeprestupna ako je deljiva sa 4, izuzev godina
koje su deljive sa 100 a nisu deljive sa 400. Napisati
program koji traži od korisnika da unese godinu i
štampa da li je ona prestupna ili ne.
• Napišite program koji traži od korisnika neki broj pa
štampa sve delioce tog broja. [Pomoć: operator % se
koristi da se odredi da li je broj deljiv sa nečim.]
59.
Napišite program takoda se deca mogu igrati množenja. Program
treba da igračima zadaje 10 pitanja iz operacije množenja celih
brojeva. Posle svakog odgovora program treba da im saopši da li su
odgovorili tačno ili ne.
Pitanje 1: 3 x 4 = 12
Tačno!
Pitanje 2: 8 x 6 = 44
Pogrešno. Tačan odgovor je 48.
itd.
Pitanje 10: 7 x 7 = 49
Tačno.
60.
Napišite program kojitraži od korisnika da unese vreme
na satu između 1 i 12, zatim traži da unesu am ili pm
koliko sati unapred treba ići. Štampati koliko će sati biti
kada ptotekne uneto vreme uz odgovarajuće oznake za
am ili pm. Dole je prikazan jedan primer.
Unestite sat: 8
am (1) ili pm (2)? 1
Koliko sati unapred? 5
Novi sat: 1 pm
61.
• Posuda sabombonima sadrži nepoznat broj bombona i ako
pogodite koliko bombona ima u njoj osvajate sve bombone. Vi
pitate osobu čija je posuda sledeća pitanja: Ako se broj
bombona podeli ravnomerno na 5 osoba, koliko će bombona
ostati u posudi? Odgovor je 2. Onda pitate o podeli bombona na
6 osoba i odgovor je 3. Na kraju pitate o podeli između 7 osoba i
odgovor je 2. Kada bacite pogled na posudu možete reći da
tamo ima manje od 200 bombona. Napišite program kojim se
određuje koliko bombona ima u posudi.
• Napišite program koji omogućava korisniku da protiv računara
igra igru kamen-papir-makaze. Treba da bude pet rundi i posle
pet rundi program treba da štampa ko je pobedio a ko izgubio ili
je nerešeno.
Možda jedna odnajmoćnijih sposobnosti računara je što mogu
da ponavljaju stvari (programske segmente) brzo i neumorno.
Postoji više načina na koje se stavri mogu ponavljati u
Pythonu, a najčešće se to postiže for petljama.
64.
Primeri for petlje
Primer1
Sledeći program će štampati Hello deset puta:
for i in range(10):
print('Hello’)
Struktura for petlje je sledeća:
for naziv_varijable in range(broj_ponavljanja):
naredbe koje treba ponavljati
65.
Ovde je sintaksajako važna. Reč for mora biti napisana
malim slovima, prva linija se mora završiti sa dve tačke,
a neredbe koje treba ponavljati moraju na početku
imati razmak. Pomoću tog razmaka Python zna koje
naredbe treba ponavljati.
66.
Primer 2
Donji programtraži od korisnika da unese neki broj a onda štampa njegov
kvardrat, pa onda sve to ponavlja tri puta. Na kraju program štampa poruku da
je petlja završena.
for i in range(3):
broj = eval(input('Unesite broj: '))
print ('Kvadrat vašeg broja je', broj*broj)
print('For petlja je završena.')
67.
Rezultat izvršavanja programa:
Unesitebroj: 3
Kvadrat vašeg broja je 9
Unesite broj: 5
Kvadrat vašeg broja je 25
Unesite broj: 23
Kvadrat vašeg broja je 529
For petlja je završena.
Pošto su druga i treća linija programa napisane sa razmakom na početku Python
zna da te naredbe treba ponavljati. Četvrta linija nije sa razmakom pa zato nije
deo petlje i biće izvršena tek nakon što se petlja završi.
68.
Primer 3
Donji programće štampati A, pa onda B, a onda će štampati naizmenično C i D
pet puta i na kraju će završiti štampanjem slova E jedanput.
print('A')
print('B')
for i in range(5):
print('C’)
print('D')
print('E')
69.
Prve dve printnaredbe će biti izvršene samo jedanput, najpre
štampanjem slova A a zatim i slova B. Kao sledeće, slova C i D
će biti štampana naizmenično pet puta . Uočite da neće biti
štampano C pet puta pa zatim D pet puta. Način na koji petlja
radi je da se štampa C, zatim D, a zatim se vraćamo na početak
petlje da ponovo štampamo C i D, i tako dalje, sve dok se
petlja ne završi. Nakon što se petlja završi biće štampano slovo
E.
70.
Primer 4
Da smoželeli da gornji program štampa pet C slova, a zatim pet D slova,
umesto da ih štampa naizmenično, mogli smo da uradimo sledeće:
print('A')
print('B')
for i in range(5):
print('C')
for i in range(5):
print('D')
print('E')
71.
Varijabla for petlje
Ufor petlji jedan deo je posebno zanimljiv, a to je varijabla petlje. U primeru
dole varijabla petlje je i. Izlaz iz ovog programa biće brojevi 0, 1, …, 99, svaki
štampan u posebnoj liniji.
for i in range(100):
print(i)
Kada se program startuje, Python postavlja varijablu i na 0. Svaki put kad se
vratimo na početak petlje, Python poveća vrednost varijable i za 1. To se
ponavlja 100 puta, a svaki put se vrednost varijable i poveća za 1, sve dok se
petlja ne ponovi 100 puta. U tom trenutku varijabla i ima vrednost 99. Možda
vam izgleda čudno što varijabla i počinje sa 0 umesto sa 1. U računarskim
naukama postalo je praksa da brojanje uvek počinje sa nulom.
Naziv for varijable
Nemaničeg specijalnog u nazivu i za našu for varijablu. Donji programi će
proizvesti potpuno isti rezultat.
for i in range(100): for neko_ime in range(100):
print(i) print(neko_ime)
Međutim, po nekakvoj nepisanoj konvenciji, za varijablu petlje se najčešće
koriste slova i, j, i k , osim ako ne postoji dobar razlog da koristimo neki drugi
naziv ( recimo kojim se bolje opisuje priroda varijable ).
74.
Funkcija range
• Vrednostkoju stavimo u range funkciju određuje koliko će puta biti
ponovljena petlja. Način na koji radi funkcija range je da ona proizvodi
niz brojeva počev od nule pa do broja koji smo stavili u funkciju
umanjenog za jedan. Tako, range(5) proizvodi niz: 0, 1, 2, 3, i 4.
• Ako želimo listu brojeva koja počinje nekom drugom vrednošću, a ne
0, to možemo postići tako da tu početnu vrednost zadamo u funkciji.
Naredba range(1,5) će proizvesti listu 1, 2, 3, 4. To nam pokazuje
jednu specifičnost range funkcije—ona se zaustavlja za jedan manje
nego što očekujemo. Ako smo želeli da lista sadrži brojeve od 1 do 5 (
uključujući 5), onda smo trebali da napišemo range(1,6).
75.
• Jedna drugamogućnost range funkcije je da se vrednosti u listi ne
povećavaju za jedan. Da to postignemo dovoljno je da dodamo još
jedan opcioni argument pri pozivu range faunkcije. Tako se naredbom
(1,10,2) proizvodi lista 1, 3, 5, 7, 9.
• Da dobijemo listu koja će ići unatrag, možemo koristiti treći argument (
korak ) sa negativnim predznakom, na primer -1. Tako će range(5,1,-1)
proizvesti vrednosti 5, 4, 3, 2, tim redosledom. (Uočite da se range
funkcija zaustavila pre završne vrednosti 1).
Sledi primer programakoji broji unazad od 5 a zatim štampa neku
poruku.
for i in range(5,0,-1):
print(i, end=‘ ‘)
print('Uzlećemo!!')
5 4 3 2 1 Uzlećemo!!!
Opcija end=' ' čini da sve ostane u istoj liniji.
78.
Malo složeniji primer
Posmatrajmojedan problem u kojem ćemo iskoristiti varijablu petlje.
Donji program štampa pravougaonik čija je visina 4 reda širina 6 kolona.
for i in range(4):
print(‘*’*20)
Pravougaonik koji se proizvodi gornjim kodom je prikazan levo. Kod
'*'*6 je konstrukcija o kojoj ćemo govoriti kasnije; pomoću nje se
simbol zvezdice ponavlja 6 puta.
79.
Pretpostavimo da želimoda napravimo trougao. To možemo da postignemo
veoma jednostavnom promenom gornjeg programa. Umesto sto uvek
štampamo 6 zvezdica u svakoj od četiri linije, mogli bi da umesto 6 štampamo
i+1 zvezdica, imajući na umu da varijabla i uzima vrednosti 0, 1, 2 i 3.
Dakle rešenje je u tome da u programu zamenimo 6 sa i+1. Svaki put kad
ponovimo naredbu u petlji biće štampano i+1 zvezdica, umesto 6 zvezdica, jer
varijabla petlje dobija redom vrednosti 0, 1, 2, i 3. Korišćenjem ove mogućnosti
možemo da menjamo broj zvezdica u liniji. Evo programa koji štampa trougao:
for i in range(4):
print('*'*(i+1))
80.
Vežbe
• Napišite programkoji štampa vaše ime 100 puta.
• Napišite program kojim se ceo ekran ( i horizontalno i vertikalno ) popunjava vašim imenom.
[Uputstvo: dodajte opciju end=’ ‘ u print funkciji da popunite ekran horizontalno.]
• Napišite program koji štampa 100 linija, sa brojevima od 1 do 100 na početku linije i vašim
imenom u svakoj liniji. Izlaz treba da izgleda ovako:
1 Vaše ime
2 Vaše ime
3 Vaše ime
4 Vaše ime
...
100 Vaše ime
81.
• Napišite programkoji štampa listu celih brojeva od 1 do 20 i njihove kvadrate.
Izlaz treba da izgleda ovako:
1 --- 1
2 --- 4
3 --- 9
...
20 --- 400
• Napišite program koji koristi for petlju da štampa brojeve 8, 11, 14, 17, 20, …,
83, 86, 89.
• Napišite program koji koristi for petlju da štampa brojeve 100, 98, 96, …, 4, 2.
82.
• Napišite programkoji koristi četiri for petlje da štampa dole prikazani niz
slova.
AAAAAAAAAABBBBBBBCDCDCDCDEFFFFFFG
• Napišite program koji traži od korisnika da unese svoje ime i koliko će puta
ime biti štampano. Program treba da šatmpa korisnikovo ime uneti broj puta.
• Fibonačijevi brojevi su brojni niz prikazan dole, kod kojeg su prva dva člana
jednaka 1, a svaki sledeći je suma prethodna dva. Napišite program koji traži
od korisnika koliko Fibonačijevih brojeva treba štampati, pa te brojeve i
štampa.
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
83.
• Iskoristite forpetlju da štampate pravougaonik kao onaj prikazan dole. Omogućite
korisniku da specificira dužinu i širinu pravougaonika, tako što će te vrednosti uneti
na početku programa. [Uputstvo: print('*'*10) štampa 10 zvezdica.]
*******************
*******************
*******************
*******************
• 11. Iskoristite for petlju da štampate pravougaonika kao onaj prikazan dole.
Omogućite korisniku da specificira dužinu i širinu pravougaonika
*******************
* *
* *
*******************
84.
• Iskoristite forpetlju da štampate trougao kao onaj prikazan dole. Omogućite
korisniku da specificira visinu trougla.
*
**
***
****
• 13. Iskoristite for petlju da štampate trougao kao onaj prikazan dole. Omogućite
korisniku da specificira visinu trougla.
****
***
**
*
85.
• Iskoristite forpetlju da štampate dijamant kao onaj prikazan dole. Omogućite
korisniku da specificira visinu dijamanta.
*
***
*****
*******
*****
***
*
• Napišite program kojim se štampa gigantsko slovo A kao ono prikazano dole.
Omogućite korisniku da specificira koliko će slovo biti veliko.
*
* *
*****
* *
* *
Pokušaćemo da vamkroz primere pokažemo funkcije, stringove, petlje,
liste i još mnogo toga. Ono što treba da znate o programiranju u
Pythonu jeste da je veoma čitljiv programski jezik i da je mnogo više od
pukog kodiranja. Kad se budete malo bolje upoznali s Pythonom
shvatićete zašto smo vam skrenuli pažnju na ovaj detalj.
Početkom učenja i čitanjem dokumentacija o Pythonu, ulazite u osnove
kreiranja jednog čvrstog temelja za vaše buduće programiranje. U ovom
delu uputstva smo vam pripremili da sagledate Python iz više uglova i
da počnete da koristite samo ono što vam je potrebno za uspešno
programiranje.
88.
Šta je PythonBiblioteka (Python Library)
Primera radi, danas ste odlučili da odete u kupovinu i znate šta želite da kupite,
međutim, ne znate gde se ta stvar nalazi.
Drugi primer može biti da želite da povučete informacije iz XML ili HTML fajla, a
ne znate gde to da nađete. Dakle, u oba ova slučaja su vam potrebne još neke
informacije.
• Za prvi slučaj ćete otvoriti mapu i početi tražiti ulicu gde se nalazi radnja sa
određenom robom.
U drugom slučaju ćete pokušati da pronađete Biblioteku, jer tamo piše kako
ćete obaviti ove funkcije.
• Kao i kod svakog drugog programskog jezika morate sebe navikavati da
koristite biblioteke, pa tako i kada je Python u pitanju. Biblioteke su osnove
programiranja, jer u njima sve piše, zato smo vam pripremili jedan primer gde
ćete videti Python Biblioteku kako izgleda i kako radi.
89.
Osnovni Paketi ProgramskogJezika Python
Ovaj deo je veoma bitan da ispratite, s obzirom na dokumentaciju i
objašnjenja u vezi sa Osnovnim paketima Pythona.
U ovom delu ćete se upoznati s Jupiterom
(Jupyter) Anakondom (Anaconda) Pandom (Pandas) Numeričkim
Pythonom (NumPy) i još nekim paketima.
Kako ne bismo ostavili po strani i naše naučnike, koji se vredno trude da
nešto naprave u Srbiji, odlučili smo da i za njih postavimo možda neke
zanimljive linkove, kako bi mogli preuzeti takozvani Naučni
Python(SciPy)
91.
Osnovni Paketi Pythona:
• NumPy User Guide
• SciPy Tutorial
• Matplotlib beginner’s guide
• Pandas tutorials
• Sympy tutorial
• IPython napredniji paket o kojem će biti reči u drugim tekstovima