Python
Zoran Vulikić, dipl.inž.
IDLE
IDLE je integrisano razvojno 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.
Ako ukucate Rezultat
CTRL+C Kopiranje (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
Rezervisane reči
•and
•as
•assert
•break
•class
•continue
•def
•del
•elif
•else
•except
•exec
•False
•finally
•for
•from
•global
•if
•import
•in
•is
•lambda
•None
•nonlocal
•not
•or
•pass
•print
•raise
•return
•True
•try
•while
•with
•yield
Vaš prvi Python program
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)
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!' )
Ulaz podataka (input)
Funkcija input 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>)
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.
x = input()
x = int(input())
x = float(input())
x = input("Unesi ime: ")
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('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.
Varijable
Ako pogledamo nazad sledeć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.
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.')
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.
x=3
y=4
z=x+y
z=z+1
x=y
y=5
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. Štampajte pravougaonik kao ovaj prikazan dole.
*******************
*******************
*******************
*******************
2. Štampajte pravougaonik kao ovaj prikazan dole.
*******************
* *
* *
*******************
3. Štampajte trougao kao ovaj prikazan dole.
*
**
***
****
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
5. Tražite od korisnika 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.
6. Tražite od korisnika 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
7. Napišite program koji 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.
Brojevi
Celi i decimalni brojevi
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.
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.
Matematički operatori
Operator Opis
+ sabiranje
- oduzimanje
* množenje
/ deljenje
** stepenovanje
// celobrojno deljenje
% modulo (ostatak)
Celobrojno deljenje
Operator za celobrojno 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.
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.
Modulo operator se veoma č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.
Redosled matematičkih operacija
Prvo se 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.
Slučajni brojevi
Da bi napravili 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.
U ovom trenutku mi želimo da koristimo samo funkciju randint
iz modula random. Da preuzmemo tu funkciju iz modula
pišemo sledeću naredbu:
from random import randint
Korišćenje funkcije randint je 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.
Matematičke funkcije
Python ima modul 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
Ugrađene (built-in) matematičke funkcije
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.
Naredba uslova
If
Računar izabere jedan sluč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!')
Sintaksa za if naredbu 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).
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).
Uslovni (relacioni) operatori
Operatori za 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
Postoje još tri dodatna 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.')
Redosled operacija u uslovima
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.')
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
Najčešće greške
Greška 1
Operator jednakosti ima dva znaka jednako. Zaista je česta greška da se
zaboravi drugi znak jednako.
Neispravno Ispravno
if x=1: if x==1:
Greška 2
Česta greška je 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.
Greška 3
Jedna česta greš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:
elif
Jedna jednostavna upotreba if 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')
Gornji kod je ispravan 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')
Sa posebnim if naredbama ( 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.
Vežbe
• Napisati program koji 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).
•Generišite jedan slučajan broj 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.
• Godina je prestupna 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.]
Napišite program tako da 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.
Napišite program koji traž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
• Posuda sa bombonima 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.
For petlja (loop)
Možda jedna od najmoć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.
Primeri for petlje
Primer 1
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
Ovde je sintaksa jako 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.
Primer 2
Donji program traž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.')
Rezultat izvršavanja programa:
Unesite broj: 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.
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')
Prve dve print naredbe ć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.
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')
Varijabla for petlje
U for 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.
Razmotrimo sledeći primer:
for i in range(3):
print(i+1, '-- Hello')
1 -- Hello
2 -- Hello
3 -- Hello
Naziv for varijable
Nema nič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 ).
Funkcija range
• Vrednost koju 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).
• Jedna druga moguć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).
Naredba Generisane vrednosti
range(10) 0,1,2,3,4,5,6,7,8,9
range(1,10) 1,2,3,4,5,6,7,8,9
range(3,7) 3,4,5,6
range(2,15,3) 2,5,8,11,14
range(9,2,-1) 9,8,7,6,5,4,3
Sledi primer programa koji 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.
Malo složeniji primer
Posmatrajmo jedan 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.
Pretpostavimo da želimo da 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))
Vežbe
• Napišite program koji š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
• Napišite program koji š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.
• Napišite program koji 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, …
• Iskoristite for petlju 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
*******************
* *
* *
*******************
• Iskoristite for petlju 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.
****
***
**
*
• Iskoristite for petlju 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.
*
* *
*****
* *
* *
Primena programskog jezika
Python i njegove prednosti
Pokušaćemo da vam kroz 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.
Šta je Python Biblioteka (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.
Osnovni Paketi Programskog Jezika 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)
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

Python - osnove

  • 1.
  • 2.
    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
  • 4.
  • 5.
    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.
  • 12.
    Program: print('Vrednost izraza 3+4je', 3+4) print('A', 1, 'XYZ', 2) Izlaz: Vrednost izraza 3+4 je 7 A 1 XYZ 2
  • 13.
    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. ******************* ******************* ******************* *******************
  • 23.
    2. Štampajte pravougaonikkao ovaj prikazan dole. ******************* * * * * *******************
  • 24.
    3. Štampajte trougaokao ovaj prikazan dole. * ** *** ****
  • 25.
    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.
  • 31.
    Matematički operatori Operator Opis +sabiranje - oduzimanje * množenje / deljenje ** stepenovanje // celobrojno deljenje % modulo (ostatak)
  • 32.
    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.
  • 41.
  • 42.
    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
  • 49.
  • 50.
    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.
  • 62.
  • 63.
    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.
  • 72.
    Razmotrimo sledeći primer: fori in range(3): print(i+1, '-- Hello') 1 -- Hello 2 -- Hello 3 -- Hello
  • 73.
    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).
  • 76.
    Naredba Generisane vrednosti range(10)0,1,2,3,4,5,6,7,8,9 range(1,10) 1,2,3,4,5,6,7,8,9 range(3,7) 3,4,5,6 range(2,15,3) 2,5,8,11,14 range(9,2,-1) 9,8,7,6,5,4,3
  • 77.
    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. * * * ***** * * * *
  • 86.
  • 87.
    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