Professional Documents
Culture Documents
Python-Knjiga PDF
Python-Knjiga PDF
Python
separat uz udžbenik za 5. – 6. razred
SysPrint • 2014.
Programski jezik
Python
separat uz udžbenik za 5. – 6. razred
SysPrint • 2014.
2
6.C. 5. razred
Osim što pomoću računala crtamo i pišemo, možemo načiniti upute koje računalo
razumije i izvršava baš kako smo mi zamislili. Tome služe programski jezici. Kao
Programiranje – Python
što se ljudi služe jezicima u međusobnom razgovoru, tako računalo razumije pro-
gramske jezike. Primjerice, svaka igrica na računalu ili vašem mobitelu zapravo je
program napisan u programskom jeziku.
Ključni pojmovi print, input, int, float, import, math, turtle, forward, back, left,
right, reset, penup, pendown, hideturtle, showturtle, write
1. Upoznajmo Python
Pokrenimo Python
Kliknite na gumb Start, pa na Svi programi te u
mapi Python 3.3 kliknite na IDLE (Python GUI).
Zašto Python pokrećemo klikom na IDLE (Python GUI), a nema jednostavno Python? IDLE
je kratica od Integrated DeveLopment Environment (integrirano razvojno okruženje), a GUI je kratica od
Graphics User Interface (grafičko korisničko sučelje).
Inače, sučelje IDLE dobilo je naziv po prezimenu komičara Erica Idlea iz grupe Monty Python, od kuda
izvire i ime programskog jezika (a ne po zmiji pitonu, engl. python).
Vježba 1.
Upišite sljedeću naredbu:
Pritisni tipku
>>> print('Učimo programski jezik Python.') Enter
Učimo programski jezik Python.
Rješenje:
Tekst koji želite ispisati treba napisati pod navodnicima, u okrugloj zagradi i
ispred zagrade napisati naredbu print.
Međutim, mogli smo istu rečenicu napisati i s dvostrukim navodnicima:
Pritisni tipku
>>> print("Učimo programski jezik Python.") Enter
Učimo programski jezik Python.
Naredba print služi za ispis teksta. Ono što želimo ispisati pišemo u
okruglim zagradama. Tekst koji želimo ispisati pišemo pod navodnicima.
Vježba 2.
Upišite sljedeću naredbu:
Pritisni tipku
>>> print('Čitali smo "Paunaša" Tite Bilopavlovića.')
Enter
Čitali smo "Paunaša" Tite Bilopavlovića.
Rješenje:
Želimo li ispisati tekst pod navodnicima, kao što je naslov bajke, navodnike
navodimo unutar teksta. Čitav tekst koji ispisujemo sada mora biti pod jedno-
strukim navodnicima. Naime ako napišete:
Python će javiti pogrešku jer je prepoznao da treba ispisati samo "Čitali smo
" tj. spario je najbliže navodnike, a ostatak nije prepoznao kao tekst.
Vježba 3.
Upišite sljedeću naredbu:
Rješenje:
\n - prelazak u novi red Želimo li neki tekst ispisati u više redova, za prelazak u novi red pišemo \n.
Vježba 4.
Napišite sljedeći program u uređivaču teksta:
Nakon što ste prepisali program, treba ga izvršiti. Python se brine da ne izgubite
svoj uradak, pa zahtjeva da program prvo spremite.
Iz izbornika File odaberite Save (ako spremate prvi puta ili je već od ranije upi-
sano ime programa). Ako želite promijeniti ime programa ili mjesto spremanja
programa odabrat ćete Save As ili Save Copy As..
6 6. Programiranje – Python
Slika 7. Spremanje programa. Slika 8. U polje Naziv datoteke: upišite ime programa.
Sada program možete pokrenuti. Iz izbornika Run odaberite Run Module ili
jednostavno pritisnite tipku F5.
Pišući program sigurno ste primijetili neobičnu oznaku \t. Ona omogućuje pre-
skok za više praznih mjesta – sljedeći znak ispisuje se iza bloka praznih mjesta.
Budući da smo kod ispisa duljine rijeka trebali više razmaka, oznaku \t upotri-
jebili smo dvaput.
Ispis podataka
Za ispis koristimo naredbu print(). U okruglim zagradama slijede podaci
koje treba ispisati i to:
• tekst pišemo pod navodnicima
• želimo li navoditi tekst koristimo se dvostrukim navodnicima
• za prelazak u novi red koristimo \n
• želimo li ostaviti više mjesta razmaka (kao tabulatorom) koristimo \t
Vježba 5.
Napišimo program za zbrajanje brojeva a = 80 i b = 30. .
6. Programiranje – Python 7
Rješenje:
Algoritam: Program: Dijagram toka:
a=80 a=80
b=30 b=30
zbroj = a +b zbroj=a+b
ispiši a print('a=',a)
ispiši b print('b=',b)
ispiši zbroj print('zbroj=',zbroj)
Vježba 6.
Dijagram toka:
Napišimo program koji računa umnožak i količnik brojeva a = 12 i b =
3. Rezultat ispisati u obliku jednakosti: 12 * 3 = 36 i 12 : 3 = 4.
Rješenje:
Algoritam: Program:
Promotrite print naredbu. One podatke koje smo ispisivali iz varijabli a, b, umno-
zak i kolicnik napisali smo bez navodnika, a znakove računskih operacija (koje
program ovdje vidi kao tekst) pod navodnicima.
Vježba 7.
Napišimo program koji računa umnožak i količnik brojeva a
= 15 i b = 4.
Rješenje:
Algoritam: Program:
a=15 a=15
b=4 b=4
umnozak = a*b umnozak=a*b
kolicnik = a / b kolicnik=a/b
djelomicni=a//b djelomicni=a//b
ostatak= a % b ostatak= a % b
print(a,'*',b,'=',umnozak)
ispiši umnozak
print(a,':',b,'=',kolicnik)
ispiši kolicnik
print(a,':',b,'=',djelomicni,'(',ostatak,')')
ispiši djelomicni, ostatak
Vježba 8.
Napišite program za izračunavanje zbroja dva broja i ispisivanje dobivenog
zbroja.
i čekati podatak s tipkovnice sve dok ga ne upišemo i pritisnemo tipku Enter. Pozor: nakon upisa broja morate
pritisnuti tipku Enter.
Zato je uvijek dobro ispisati poruku kakav podatak program očekuje.
Zato smo u ovom primjeru ispred naredbe input napisali naredbu print koja
ispisuje poruku o tome što treba upisati.
Vježba 9.
Napišite program za računanje opsega trokuta kome su zadane duljine stranica
trokuta a, b i c.
Rješenje:
Dijagram toka: Algoritam: Program:
upiši a a=input('a=')
upiši b b=input('b=')
upiši c c=input('c=')
opseg=a+b+c opseg=int(a)+int(b)+int(c)
ispiši opseg print('Opseg je', opseg)
Vježba 10.
Često puta se u programiranju pojavljuje potreba zamjene vrijednosti dvije va-
rijable. Ako imamo niz brojeva koje treba poredati po veličini tada moramo moći
zamijeniti vrijednosti dviju varijabli. Napišite program koji upisuje dva broja prvi
i drugi i zamjenjuje njihove vrijednosti.
Rješenje:
Promotrite algoritam i program:
Prikažimo što se događa u memoriji:
prvi
prvi=input('prvi=')
65
drugi
drugi=input('drugi=')
72
65
prvi drugi prvi drugi
prvi,drugi=drugi,prvi
72 65
72
prvi
print('prvi=',prvi)
72
drugi
print('drugi=',drugi)
65
Vježba 11.
Napišite program koji traži da upišete svoje ime, a zatim vas pozdravi.
6. Programiranje – Python 11
Rješenje:
Algoritam:
upiši ime
ispiši Drago mi je ime da smo se upoznali!
ime=input('Kako se zoveš?')
print('Drago mi je', ime,'da smo se upoznali!')
Decimalni brojevi
Vježba 12.
Napišite program koji upisuje decimalan broj, pa:
a) ispisuje njegov cijeli dio.
b) zaokružuje ga na prirodan broj.
Rješenje:
Promotrite algoritam i program:
Algoritam: Program: Slika 16. Primjer ispisa
programa u vježbi 12.
upiši a a=input ('Upiši decimalan broj:')
a= decimalni(a) a=float(a)
cijeli = cijeli(a) cijeli=int(a)
zaokruži= zaokruži(a) zaokruži=round(a)
ispiši cijeli print ('Cijeli dio od',a, 'je',cijeli)
ispiši zaokruži print (a,' je približno',zaokruži)
Ulazni podatak a sada je decimalan, a ne prirodan broj, pa ga iz teksta moramo Mali rječnik:
pretvoriti u decimalan broj naredbom: a=float(a). Cijeli dio decimalnog round – zaokruži
broja dobit ćemo naredbom int(a). Naredba za zaokruživanje decimalnog integer – cijeli broj
broja je round (a).
Modul – skupina programa Takve skupine programa zovu se moduli. Svaki modul ima svoje ime. Na primjer,
određene namjene želimo li crtati, unijeti ćemo modul za crtanje. Budući ćemo crtati pomoću malog
trokutića koji ćemo zvati “kornjača”, modul za crtanje zove se turtle.
Import – naredba za Module unosimo u glavni program pomoću naredbe import.
unošenje modula
engl. turtle - kornjača Modul je skupina naredbi i programa koji imaju zajednička svojstva i
namjenu.
Modul unosimo naredbom import.
Sada je lako pogoditi da ćemo kornjaču udesno za pravi kut okrenuti naredbom
rt (engl. right – desno) i opet pomaknuti naprijed za 60.
rt(90)
Pomaknimo se još ovako:
fd(60)
6. Programiranje – Python 13
reset()
Vježba 13.
Nacrtajte dva kvadrata jedan unutar drugog. Veći kvadrat neka
ima duljinu stranice 80, a manji kvadrat duljinu stranice 30.
Rješenje:
1. Nacrtajte kvadrat sa stranicom duljine 80. Kvadrat ima 4 jed-
naka kuta, a puni okret kornjače je 360°, pa se u svakom Slika 18. Dva kvadrata.
vrhu kvadrata okrećemo za 360°: 4 = 90°. Možete pisati dvi-
je naredbe u istom redu ako između stavite znak
;(točka-zarez).
>>> lt(90)
>>> fd(80);rt(90)
>>> fd(80);rt(90)
>>> fd(80);rt(90)
>>> fd(80);rt(90)
Želite li napisati dvije naredbe u istom retku, između njih stavite točku-zarez(znak ;).
Iste naredbe ne morate prepisivati četiri puta . Pomoću kursorske strelice prema
gore(na tipkovnici) pomaknite se u gornji redak i pritisnite Enter. Naredbe iz
tog retka dopisat će se u novom retku. Sada još samo pritisnite Enter i napisane
naredbe će se izvršiti.
>>> pu()
>>> fd(25);rt(90)
>>> fd(25);lt(90)
>>> pd()
14 6. Programiranje – Python
>>> fd(30);rt(90)
>>> fd(30);rt(90)
>>> fd(30);rt(90)
>>> fd(30);rt(90)
Vježba 14.
Napišite program koji crta jednakostraničan
trokut stranice duljine 50.
Rješenje:
Puni okret kornjače je 360°. Puni okret kornjače iznosi 360°. Trokut ima
3 jednake stranice i 3 jednaka kuta. Znači,
da biste nacrtali trokut morate se ukupno
okrenuti za 360°, odnosno u svakom vrhu
trokuta morate se okrenuti za 360°: 3 = 120° Slika 19. Trokut.
(vidi sliku 19.) Duljina stranice trokuta je 50, pa treba tri puta ponoviti naredbe
fd(50) i rt(120).
from turtle import *
Napišimo program u uređivaču teksta st(); lt(90)
koji crta trokut. fd(50); rt(120)
fd(50); rt(120)
Uočite da je sada priprema kornjače fd(50); rt(120)
malo jednostavnija: ne moramo davati
ime prozora da bi nam se otvorio. Kornjačin prozor otvara se samim pokreta-
njem kornjače.
Vježba 15.
Napišite program koji crta 3 šesterokuta sa za-
jedničkim vrhom. Duljina stranice šesterokuta
je 50, a debljina linije neka je 5.
Rješenje:
Budući da je puni okret kornjače 360° a šeste-
rokut ima 6 vrhova, u svakom vrhu okrenut
ćete se za 360°:6 = 60°. Da biste nacrtali šeste-
Slika 20. Tri šesterokuta. Slika 21. Shema crtanja šesterokuta.
rokut trebate napisati 6 puta naredbe fd(50)
i rt(60). Ali, treba nacrtati 3 šesterokuta. Mo-
ramo li toliko puta ponavljati iste naredbe? Možemo li nekako “naučiti
from turtle import *
program” da crta šesterokut, pa mu kasnije samo zadati da ga nacrta, title('Šesterokut')
svaki put pod drugim kutom? I to je moguće. Pogledajte program:
Promotrite dio označen crvenom vitičastom zagradom. Započinje def sesterokut():
fd(50); rt(60)
riječju def, slijedi ime sesterokut(): Zatim slijede naredbe koje
fd(50); rt(60)
crtaju šesterokut duljine stranice 50. fd(50); rt(60)
Nakon toga jednostavno smo pokazali kornjaču, okrenuli je prema fd(50); rt(60)
gore i tri puta nacrtali šesterokut, te okrenuli kornjaču udesno za fd(50); rt(60)
120°(jer je 360° : 3 = 120°, pa smo opet napravili puni okret u točki u fd(50); rt(60)
kojoj se dodiruju sva 3 šesterokuta).
st(); lt(90)
width(5)
Naredba width(5)postavlja debljinu pera na 5 točaka.
sesterokut(); rt(120)
Dio programa kojim smo crtali šesterokut predstavlja potprogram. sesterokut(); rt(120)
sesterokut(); rt(120)
Kako svaki potprogram mora imati svoje ime, imenovali smo ga
sesterokut.
Vježba 16.
Pomozimo Ivici nacrtati kućice i izračunati
ukupnu duljinu linije koju će kornjača nacrtati.
Rješenje:
Ovo je već malo složeniji zadatak pa ga prvo
rastavimo na dijelove:
potprogram – dio programa
koji pozivamo unutar glavnog Potrebno je napisati tri potprograma: kvadrat trokut
programa
• Potprogram kvadrat() crta kvadrat duljine
stranice 80
• Potprogram trokut() crta trokut duljine stranice 80
• Potprogram kuca() crta kućicu koja se sastoji od
kvadrata(crta ga kvadrat()) i trokuta (crta ga tro-
kut()) i pomiče kornjaču uz desni donji vrh kuca
kućice(od
te točke
crta se
sljedeća
kućica).
Kućicu že-
limo obojiti, pa ćemo na po-
četku potprograma zadati
begin_fill() (što znači
“počni bojati”), a na kraju pot-
programa end_fill() (što
znači “završi bojati”)
Program treba ispisati ukupnu duljinu linije koju je kornjača nacrtala. Ako je dulji-
na jedne stranice trokuta ili kvadrata 80, onda je na jednoj kući duljina linije 6*80,
a budući imamo 4 kućice to treba pomnožiti s 4, dakle: duljina= 6*80*4.
Budući možemo ispisati samo jedan podatak, pretvorit ćemo broj pohranjen u
varijabli duljina u tekst i dodati tekst koji treba ispisati: duljina='Duljina
linija:'+ str(duljina)
Sada još moramo ispisati poruku kao na slici 25. U kornjačinom prozoru ispisu-
jemo pomoću naredbe write koja ima 3 ulazne vrijednosti:
1. podatak koji se ispisuje: duljina
2. položaj teksta(ovdje je ulijevo u odnosu na trenutni položaj kornjače):
align='left'
3. vrsta, veličina i oblikovanje pisma: font=("Arial",18,"bold")
6. Programiranje – Python 17
Boja Naziv Boja Naziv Boja Naziv Boja Naziv Naredba za boju: color(boja
pera, boja ispune)
Aquamarine Chocolate Gray Sienna
Vježba 17.
Napišite program koji crta kvadrat čiju duljinu stranice a upisu-
jemo preko tipkovnice.
Rješenje:
Najprije odgovorimo na pitanje zašto su pokraj imena potprograma do sada
stajale prazne zagrade. To je zato jer unutar zagrada možemo upisati ime va-
rijable čiju vrijednost ćemo koristiti u potprogramu. Promotrite potprogram
kvadrat(a) koji crta kvadrat čija je duljina stranice a.
Duljinu stranice kvadrata upisat ćemo u prozorčiću
from turtle import *
title('Kvadrat') koji nam daje naredba
def kvadrat(a): a=textinput('Duljina stranice','a=').
fd(a); rt(90)
fd(a); rt(90) Naredba textinput ima dvije ulazne vrijednosti:
fd(a); rt(90) • naslov prozora (to je ‘Duljina stranice')
fd(a); rt(90) • tekst koji se ispisuje u prozoru koji nam govori što
treba upisati (to je ‘a=’).
a=textinput('Duljina stranice','a=')
a=int(a)
lt(90); st() Na taj način možemo crtati crteže različitih veličina.
kvadrat(a)
Rješenje u datoteci 56Cvje17.py.
Vježba 18.
Napišite program koji crta 8 kvadrata sa zajedničkim vr-
hom, ako je duljina stranice kvadrata a. Kvadrati su tako
raspoređeni da ravnomjerno popunjavaju puni kut u za-
jedničkoj točki.
Slika 24. Osam kvadrata sa
zajedničkom točkom. Rješenje:
Kvadrat ćete nacrtati pomoću istog potprograma kvadrat(a), kao u prošloj
vježbi. Osam kvadrata sa zajedničkom točkom nacrtat ćete tako da se nakon
crtanja jednog kvadrata okrenete udesno za 45, jer je 3600 : 8 = 450. Dakle,
puni okret kornjače podijelimo s 8 i kvadrati će biti ravnomjerno raspoređeni.
Sova zna
Ispis podataka – naredba print()
U okruglim zagradama slijede podaci koje treba ispisati.
Upis podataka – naredba input
Najčešće je koristimo u obliku x=input('poruka')
Naredba učitani podatak shvaća kao tekst, pa ga prije računanja moramo
pretvoriti u broj.
3.C. 6. razred
U petom razredu prvi puta ste se susreli s programiranjem u Pythonu. Upoznali ste
Programiranje – Python
Ključni pojmovi odluka, petlja, petlja s korakom, lista, if, else, elif, for, in, range,
colormode, color, append, extend, insert, remove, index, sort
Razlikujemo:
Naredba odluke: Naredba pridruživanja:
a==5 a = 5
a
upiši a,b
ako je a=b:
ispiši Brojevi su jednaki.
inače
ispiši Brojevi su različiti.
Slika 1. Provjera jesu li brojevi
a=input('a=') jednaki ili različiti.
b=input('b=')
a=int(a)
b=int(b)
if a==b:
print('Brojevi su jednaki.')
else: Rješenje u da-
print('Brojevi su različiti.') toteci 63Cvje1.py.
Vježba 2.
Napišite program koji za dva zadana broja n i k ispi-
suje poruku ako je broj n djeljiv s brojem k. Ako n
nije djeljiv s k ne ispisuje se ništa.
Rješenje:
Dva broja su djeljiva ako im je ostatak jednak 0. Znači
Slika 2. Primjer različitih
ako je n % k == 0, onda treba ispisati poruku ispisa vježbe 2.
oblika: n je djeljiv s k. U zadatku piše da se
poruka ispisuje samo ako su brojevi djeljivi, znači ako brojevi nisu djeljivi nećete
ispisati ništa. Koristit ćete if naredbu bez else.
upiši n, k n=input('n=')
ako je ostatak(n,k)=0: k=input('k=')
ispiši n je djeljiv s k n=int(n)
k=int(k)
if n % k==0:
print(n,'je djeljiv s',k)
Rješenje u datoteci
63Cvje2.py.
22 3. Programiranje – Python
Vježba 3.
Napišite program koji uspoređuje dva broja a i b.
Rješenje:
Ako imamo neka dva broja a i b, kakvi oni mogu biti me-
đusobno? Iz matematike znamo da mora biti jedna od
ove tri mogućnosti:
1. prvi broj može biti manji od drugog(a<b)
2. prvi broj može biti veći od drugog(a>b)
3. brojevi su jednaki(a = b).
Tu imamo 3 mogućnosti, pa nam jedna naredba odluke
neće biti dovoljna. Pogledajmo algoritam:
a=input('a=')
b=input('b=')
a=int(a)
b=int(b)
if a<b:
Rješenje u datoteci 63Cvje3.py. print(a,'<',b)
elif a>b:
print(a,'>',b)
Vježba 4.
else:
Napišite program koji upisuje tri broja a, b print(a,'=',b)
i c i ispisuje ih u rastućem redoslijedu, od
manjeg prema većem.
Rješenje:
Razmišljat ćemo ovako:
1. Ako je a>b, onda zamijenimo vrijednosti od a i b. Sada je
sigurno a<b. Zatim,
2. Ako je a>c, onda zamijenimo vrijednosti od a i c. Sada je
sigurno a<c. I na kraju,
3. Ako je b>c, onda zamijenimo vrijednosti od b i c. Sada je
sigurno b<c.
Nakon ovih zamjena, sigurno je a< b <c.
Kako zamjenjujemo vrijednosti dviju varijabli? Prisjetimo se
da smo u 5. razredu učili da se vrijednosti varijabli a i b jed-
nostavno zamijene naredbom: a, b = b, a. Slika 5. Primjer
ispisa vježbe 4.
3. Programiranje – Python 23
Vježba 5.
Napišite program koji upisuje broj dana u mjesecu u varijablu dani, pa ispisuje
koji mjeseci u godini imaju toliko dana.
Uputa:
Siječanj, ožujak, svibanj, srpanj,kolovoz, listopad ili prosinac imaju 31 dan. Tra-
vanj, lipanj, rujan ili studeni imaju 30 dana. Veljača u prestupnoj godini ima 29
dana, a inače 28 dana.
24 3. Programiranje – Python
Rješenje:
Ako upišete dani=31, tada ispisujete nazive mjeseca s 31 dan, inače ako upišete
dani=30, tada ispisujete nazive mjeseca s 30 dan, inače ako upišete dani=29,
tada ispisujete poruku: Mjesec veljača u prestupnoj godini, inače ako upišete
dani=28, tada ispisujete poruku: Mjesec veljača, inače (upisan je broj koji nije broj
dana u mjesecu) ispisujete poruku: Niti jedan mjesec u godini nema toliko dana.
n=input('n=')
n=int(n) Spaces!. To znači da će naredbe
for k in range(n): unutar petlje ili unutar jedne
print(k, end=' ') procedure biti uvučene 4 mje-
Slika 8. U ispisu nedostaje 10, a viška je 0. sta udesno, što možete povećati
ili smanjiti.
To nije ono što smo željeli. Ispisala se 0, a posljednji broj je 10. Želimo li da Uvlačenjem pojedinih redaka
varijabla petlje počne od 1, to ćemo zadati ovako: program će biti pregledniji, od-
nosno lakše ćete uočiti koje se
n=input('n=') naredbe nalaze unutar petlje.
n=int(n) Pozor! Ako naredbe unutar
for k in range(1, n): petlje ne uvučete točno onoliko
print(k, end=' ') mjesta koliko je ovdje zadano,
te se naredbe neće izvršiti ona-
Ali sad se nije ispisao posljednji broj, pa ko kako ste očekivali.
ćemo n povećati za 1: Slika 9. Sada u ispisu nedostaje 10.
Vježba 7.
Napišite program koji računa zbroj prvih n prirodnih brojeva, ako se n upisuje
na početku programa.
26 3. Programiranje – Python
Rješenje:
Prije nego promotrite algoritam i dijagram toka, razmislite kako bi zbrojili prvih
10 prirodnih brojeva. Krenuli bi od 1 i računali: 1+2=3, 3 + 3 = 6, 6+ 4 = 10, 10
+ 5 = 15, 15 + 6 = 21. Ako je broj 21 zbroj prvih
6 brojeva, onda zbroj prvih 7 brojeva dobijemo upiši n
tako da zbroju prvih 6 brojeva dodamo 7. Postu- zbroj=0
pak ponavljamo dok ne dođemo do posljednjeg za k ide(1, n+1):
zadanog broja. zbroj = zbroj + k
ispiši zbroj
n=input('n=')
n=int(n)
zbroj=0
for k in range(1, n+1):
zbroj=zbroj + k
print('Zbroj prvih',n,'prirodnih brojeva je',zbroj,'.')
Vježba 8.
U naredbeni prozor upišite sljedeće for petlje i pronađite niz brojeva koji ispisuju.
Razmislite zašto se ispisuju baš ti nizovi brojeva.
for k in range(1,21,5):
1 print(k, end=' ')
a
for k in range(10,100,11):
2 print(k, end=' ')
b
for k in range(10,0,-2):
3 print(k, end=' ')
c
for k in range(1,40,-10):
4 print(k, end=' ')
d
Rješenje:
Obratite pažnju na brojeve u zagradi iza riječi range:
1. c) Brojevi u zagradi su:(1,21,5) što znači da k počinje s 1, završava s 20, a
pri svakom prolazu k se povećao za 5: 1 + 5 = 6, 6+ 5 = 11, 1 + 5 = 16.
2. d) Brojevi u zagradi su:(10,100,11) što znači da k počinje s 110, završava
s 99, a pri svakom prolazu k se povećao za 11: 10 + 11 = 21, 21+ 11 = 32, 32
+ 11 = 43, …..
3. b) Brojevi u zagradi su:(10,0,-2) što znači da k počinje s 10, završava s 1, a
pri svakom prolazu k se smanjio za 2: 10 +(-2) =10 – 2 = 8, 8+(-2) = 8 – 2 = 6,
6 +(-2) = 6 – 2 = 4, 4 +(-2) = 4 – 2 = 2.
3. Programiranje – Python 27
Vježba 9.
Napišimo program koji ispisuje prvih n višekratnika broja
k. Brojeve n i k upisati na početku programa.
Rješenje:
Npr. Višekratnici broja 10 počinju brojem 10 i zatim se
Slika 10. Deset višekratnika broja 4 i
ispisuje svaki deseti broj. Ako ispisujemo niz od n brojeva, onda je zadnji broj dvanaest višekratnika broja 45
koji treba ispisati 10*n. Znači, želimo li ispisati prvih n višekratnika broja k mo-
žemo koristiti petlju s korakom oblika:
for m in range(k, n*k+1,k):
Ispis prvih n više-
n=input('n=') kratnika broja k može se na-
n=int(n) praviti i bez petlje s korakom
Rješenje u datoteci k=input('k=') ovako:
63Cvje9.py. k=int(k)
n=input('n=')
for m in range(k, n*k+1,k):
n=int(n)
print(m, end=' ') k=input('k=')
k=int(k)
for m in range (1, n+1):
Naredba print (m*k, end=' ')
for k in range(n):
print(k, end=' ') Rješenje u datoteci
63Cvje9_1.py.
zove se programska petlja ili jednostavno petlja. Ona nam omogućuje
ponavljanje naredbi zadani broj puta.
Varijabla k zove se varijabla petlje i ona mijenja vrijednost pri svakom
pr olazu petljom.
Vježba 10.
Leonardo Fibonacci ili Le-
onardo od Pise (oko 1170. – Napišite program koji ispisuje prvih n članova niza: 1, 1, 2, 3, 5, 8, 13, 21, … i
oko 1250.), također poznat računa njihov zbroj. Prva dva člana niza su 1, a svaki sljedeći član niza jednak je
kao Leonardo Bonacci, bio zbroju prethodna dva člana niza. Pretpostavite da je n>2.
je talijanski matematičar,
kojeg su neki uzimali za
najtalentiranijeg matemati-
čara srednjeg vijeka. Danas
je najpoznatiji po tome što
je raširio uporabu arapskih
brojaka u Europi i po nizu
Fibonaccijevih brojeva, koje Slika 11. Vježba 10.
nije on izmislio, nego ih Rješenje:
spominje u svojoj knjizi Liber
Neka je a=1 i b= 1. To su prva dva člana niza. Prvo ih ispišemo. Zatim ih zbro-
Abaci (Knjiga računanja)
jimo: neka je zbroj = a + b. Prva dva člana smo riješili. Sada preostaje pro-
naći preostala n-2 člana niza
# Pretpostavimo da je n veći od 3. i dodati ih u varijablu zbroj.
n=input('n=')
Ako je sljedeći član niza c=
n=int(n)
a=1 a + b, onda ga ispišemo
b=1 i dodamo u zbroj pomoću
print('Prvih', n, 'Fibonaccijevih brojeva:') zbroj=zbroj + c. Sada
print(a,b, end=' ') drugi član niza(b) postaje prvi
zbroj= a+b član: a=b i treći član niza
for k in range (n-2):
postaje drugi član: b=c. Na
c=a+b
print(c, end=' ') kraju se samo ispiše rezultat,
zbroj=zbroj+c vrijednost varijable zbroj.
a=b
b=c Rješenje u datoteci
print(' ') 63Cvje10.py.
print ('Zbroj prvih',n,'članova niza je', zbroj, '.')
3. Kornjača u petlji
Ponovimo
Vježba 11.
Napišite program koji crta jedrilicu kao na slici:
Slika 14. Pravokutnik duljine 100 i širine 50. Slika 15. Shema pravokutnika.
Rješenje:
from turtle import *
Promotrite shemu na slici 15. Pravokut- title('Pravokutnik')
nik ima sve kutove prave, a nasuprotne st(); lt(90)
stranice jednake duljine. Ako krećemo a=textinput('Duljina','a=')
b=textinput('Duljina','b=')
od točke označene kornjačom, onda dva
a=int(a)
puta ponavljamo iste naredbe(jednom za b= int(b)
plave, drugi put za zelene stranice), pa pra- for k in range(2):
vokutnik možemo nacrtati for petljom fd(b); rt(90)
koju ponavljamo dvaput. fd(a); rt(90)
Vježba 13.
Napišite program za crtanje paralelograma kome su duljine stranica a i b, a
kut među njima kut. Potrebne veličine upisati na početku programa. Napisati
potprogram za crtanje paralelograma.
Želimo li boju kornjače opisivati kao kombinaciju triju boja: crvene, ze-
lene i plave, naredbom colormode(255) najavljujemo Pythonu takvo
zadavanje boja.
3. Programiranje – Python 31
Vježba 14.
from turtle import *
Napišite program koji crta obojani kvadrat stranice du- def kvadrat(a):
ljine 100. Upisati količinu crvene boje c, zelene boje z begin_fill()
i plave boje p. Kvadrat crtamo pomoću potprograma. for n in range(4):
fd(a);rt(90)
end_fill()
Rješenje:
Potprogram crta kvadrat ispunjen bojom. Naredbe title('Boja')
c=textinput('Crvena','c=')
begin_fill()i end_fill() kažu kornjači da sve
z=textinput('Zelena','z=')
što nacrta između tih naredbi treba obojiti trenutnom p=textinput('Plava','p=')
bojom ispune. c=int(c); z=int(z); p=int(p)
U glavnom programu upisujemo količine crvene boje colormode(255)
color(c,z,p)
c, zelene boje z i plave boje p. Uključujemo color-
kvadrat(100)
mode(255), zadajemo boju kornjače
color(c,z,p)i crtamo kvadrat naredbom
kvadrat(100).
Vježba 15.
from turtle import *
Napišite program koji crta kvadrat stra- from random import *
nice 250 i kvadrate unutar njega, tako def kvadrat(a):
da svaki sljedeći kvadrat ima za 10 kraću c=randrange(0,256)
stranicu. Svi kvadrati imaju jednu zajed- z=randrange(0,256)
ničku točku – njihovo sjecište dijagonala. p=randrange(0,256)
color(c,z,p)
begin_fill()
Rješenje: for n in range(4):
Sada i određivanje boje kvadrata mo- fd(a);rt(90)
end_fill()
žete staviti u potprogram kvadrat(a). U
glavnom programu treba pozvati pot- title('Kvadrati');
program koji crta kvadrate, ali tako da pu(); bk(50); lt(90)
se crta prvo najveći kvadrat, pa redom bk(50); pd()
smanjivati stranicu petljom oblika: for colormode(255)
a in range(250,0,-10):
for a in range(250,0,-10):
Rješenje u datoteci 63Cvje15.py. kvadrat(a)
pu(); fd(5); rt(90); fd(5); lt(90)
32 3. Programiranje – Python
Vježba 16.
Napišite program koji crta cvijet od n
rombova, ako je duljina stranice romba
a. Svi rombovi imaju zajedničku točku u
početnom položaju kornjače i obojani
su nasumično određenim bojama.
Rješenje:
Romb je paralelogram koji ima sve
stranice jednake duljine, a. Kut romba
Slika 20. Cvijet od deset rombova Slika 21. Cvijet od trideset šest rombova
from turtle import *
from random import * određuje se iz uvjeta da svih n rombova ima jednu
def romb(a,kut): zajedničku točku, a ispunjavaju puni kut. Dakle, kut
c=randrange(0,256) romba je 360/n.
z=randrange(0,256)
p=randrange(0,256) Romb crtamo i bojimo u potprogramu romb(a,kut).
color(c,z,p) Kut romba ovisi o broju latica, pa je kut = 360/n.
begin_fill() Cvijet crtamo u glavnom programu jednostavnom
for x in range(2): petljom:
fd(a);rt(kut)
fd(a);rt(180-kut) for br in range(n):
end_fill() romb(a,kut); rt(kut)
Vježba 18.
from turtle import *
def paralelogram(a,b,kut): Napišite program
rt(90-kut) koji crta kvadar s
for k in range(2): duljinama bridova
fd(b); rt(kut)
a,b i c prema she-
fd(a); rt(180-kut)
lt(90-kut) mi na slici 23.
title('Kvadar')
st(); lt(90)
Rješenje:
a=textinput('Duljina brida','a=')
b=textinput('Duljina brida','b=') Kvadar također Slika 23. Kvadar
c=textinput('Duljina brida','c=') crtamo pomoću četiri
a=int(a); b=int(b);c=int(c); paralelograma. Umjesto
paralelogram(a,c,90)
a/2 pišemo b, a umjesto
paralelogram(a,b,45)
fd(c) vertikalnih crta duljine a
paralelogram(a,b,45) pišemo c.
bk(c); rt(45), fd(b); lt(45)
paralelogram(a,c,90) Rješenje u datote-
rt(45), bk(b); lt(45) ci 63Cvje18.py.
Vježba 19.
Napišite program koji crta 8 raznobojnih kocaka nad stranicama osmerokuta.
Duljina brida kocke a upisuje se u programu, a boje se bi-
raju nasumično. Vidi from turtle import *
sliku 24. from random import *
def paralelogram(a,b,kut):
Rješenje: rt(90-kut)
for k in range(2):
U ovom progra- fd(b); rt(kut)
mu koristimo dva fd(a); rt(180-kut)
potprograma: lt(90-kut)
def kocka(a):
• paralelogram - za c=randrange(0,256)
crtanje paralelo- z=randrange(0,256)
grama (to su stra- p=randrange(0,256)
ne kocke) color(c,z,p)
Slika 24. Kocke nad stranicama paralelogram(a,a,90)
• kocka – za crtanje paralelogram(a,a/2,45)
osmerokuta
obojene kocke. fd(a)
Opet je glavni program jednostavan: u petlji koju ponavlja- paralelogram(a,a/2,45)
mo 8 puta: for n in range(8): bk(a); rt(45), fd(a/2); lt(45)
paralelogram(a,a,90)
crtamo kocku kocka(a), pomičemo se naprijed za duljinu rt(45), bk(a/2); lt(45)
brida kocke fd(a) i okrećemo se ulijevo za 360° : 8 = 45°,
tj. lt(45). title('Kocke')
st(); lt(90); colormode(255)
a=textinput('Duljina brida','a=')
a=int(a)
Rješenje u datoteci 63Cvje19.py. for n in range(8):
kocka(a); fd(a);lt(45)
34 3. Programiranje – Python
5. Liste
Problem 1.
Radi se anketa o zdravoj prehrani i učiteljica želi doznati koje voće djeca vole.
Ona zadaje popis voća, a svaki učenik treba upisati koje voće iz tog popisa ne
voli, a može u popis dodavati i voće koje voli. Učiteljica želi popis voća koje voli
pojedini učenik ispisan abecednim redom.
Problem 2.
Promotrite sljedeće crteže nacrtane pomoću kornjače. Obratite pažnju na boje:
U oba problema susrećemo se s popisom: popis voće i popis boja. Do sada smo
u Pythonu programirali koristeći brojeve (prirodne i decimalne) i riječi, odnosno
tekst (npr. podaci koje upisujemo u input ili textinput naredbi) .
Vježba 20.
Radi se anketa o zdravoj prehrani i učiteljica želi
doznati koje voće djeca vole. Ona zadaje popis
voća, a svaki učenik treba upisati koje voće iz
tog popisa ne voli, a može u popis dodavati i
voće koje voli. Učiteljica želi popis voća koje
voli pojedini učenik ispisan abecednim redom.
Na početku programa zadana je lista: Slika 26. Vježba 20.
voće=['ananas', 'jabuka', 'naranča','šljiva', 'avokado',
'mango'] Program treba ispisati tu listu i zatim tražiti od učenika da napiše
koliko voća (upisati n) iz te liste ne voli, pa treba upisati koje je to voće i izostaviti
upisano voće iz liste voće. Zatim treba upitati koliko voća koje učenik voli treba
upisati u popis (opet upisati n), pa upisati voće koje učenik voli i dodati ga u
listu voće. Na kraju ispišite tako dobivenu listu voće.
36 3. Programiranje – Python
Rješenje:
voće=['ananas', 'jabuka', 'naranča','šljiva', 'avokado', 'mango']
print('Ja volim ovo voće:',voće) Naredbe za rad s li-
#Upis koliko voća ne voliš stama ste upoznali, a
n=input('Koliko voća iz ovog popisa ti ne voliš?')
n=int(n) unutar programa upi-
for k in range(n): sani su komentari koji
ne_voli=input ('Voće koje ne volim:') vam olakšavaju razu-
voće.remove(ne_voli) mijevanje programa.
#Upis koliko voća voliš
n=input('Koliko želiš vrsta voća dodati u popis?') To su reci crvene boje
n=int(n) koji počinju znakom #.
for k in range(n):
upis=input ('Upiši voće koje voliš:') Rješenje u dato-
voće.append(upis)
teci 63Cvje20.py.
#Poredaj učenike po abecedi
voće.sort()
#Popis voća koje voliš
print ('Znači ti voliš ovo voće:')
for k in range(0, len(voće)):
print (voće[k])
Vježba 21.
Napišite program koji crta spirale linija kao na sli-
kama 27-29.
Linije su crtane naizmjenično sa 7 boja: popis=
['SkyBlue','Black','Green','Yellow
','Blue','Red','Violet' ].
Duljina prve linije je a=5, a svaka sljedeća linija je
Slika 28. Spirala crtana s
Slika 27. Spirala crtana s za korak dulja. Upisuju se sljedeći podaci: n=15, kut=92, korak=1,5
n=10, kut=20, korak=3 n – broj ponavljanja iste boje, prirodan broj
kut – kut okreta udesno iza svake linije, priro-
dan broj
korak – broj za koji se poveća duljina sljedeće
linije, decimalan broj
Rješenje:
Evo programa: Slika 29. Spirala crtana s
n=20, kut=63, korak=1
Ova petlja izvršava se onoliko puta koliko ima članova u listi popis, tj. koliko
smo boja naveli. Osim crtanja jedne linije u toj petlji vrijednost varijable a po-
većavamo za korak naredbom a +=korak.
Sova zna
Naredba odluke Liste
Naredba odluke omogućuje nam donošenje odlu- Lista je tip podataka koji omogućuje
ka u programu. Uvjet koji slijedi iza if mora biti pohranjivanje više podataka
istinit ili lažan. Osnovni oblik naredbe je: različitog tipa (broje-
if uvjet: va, riječi…). Podaci
koji čine listu pišu
naredbe koje se izvršavaju ako je uvjet istinit
se unutar uglatih
else: zagrada odvojeni
naredbe koje se izvršavaju ako je uvjet lažan zarezom.
Petlja Primjer liste:
a=[1, 2, 3, 4, 5].
Naredba
for k in range(n):
print(k, end=' ')
zove se programska petlja ili jednostavno petlja.
Ona nam omogućuje ponavljanje naredbi zadani
broj puta.
Varijabla k zove se varijabla petlje i ona mijenja
vrijednost pri svakom prolazu petljom.
POJMOVNIK