Решени задаци из уџбеника “Програмирање у Пајтону са задацима за вежбање”

  1. Употреба променљивих и аритметичке операције: Немања је на пијаци купио 0,85 kg банана, 0,55 kg јабука и три чоколаде од по 0,18 kg. Колико је тешка торба коју носи кући? (Пример 4.1.)

banana = 0.85
jabuka = 0.55
cokolada = 0.18
torba = banana + jabuka + 3*cokolada
print (torba)
  1. Аритметичке операције – множење: Написати програм који унету вредност у доларима претвара у динаре. (Пример 4.2.)
dolari=int(input("Unesi vrednost u dolarima: "))
vr_dolara=106.77
dinari=dolari*vr_dolara
print(“Uneta vrednost dolara u dinarima iznosi: ", dinari)
  1. Аритметичке операције – реално дељење и множење: Пензије су прво смањене за десет процената, а онда су после неколико месеци те смањене пензије повећане за 10 процената. Ако је у почетку пензија била 40,000 динара, колика је она после смањења и повећања? (Пример 4.3.)
penzija = 45000
# од почетног износа пензије обрачунава се 90%
smanjena_penzija = (penzija/100)*90
# повећање се сада обрачунава у процентима над смањеном пензијом јер је то тренутни износ пензије
povecana_penzija = (smanjena_penzija/100)*110
# штампа новог износа
print(povecana_penzija)
  1. Аритметичке операције – целобројно дељење: Написати програм где корисник уноси време у секундама, а програм исписује време у данима, сатима, минутама и секундама (нпр: 184.713 секунда = 2 дана, 3 сата, 18 минута и 33 секунде). (Пример 4.5.)

sek=int(input("Unesi vreme u sekundama:"))
# potrebno je broj sekundi podeliti danima izraženim u sekundama
dan=sek//86400                      #jedan dan ima 24*60*60=86400 sekundi
# ostatak delјenja potrebno je podeliti satima izraženim u sekundama
sat=(sek%86400)//3600            #jedan sat ima 60*60=3600 sekundi 
# ostatak delјenja potrebno je podeliti minutima izraženim u sekundama
minut=((sek%86400)%3600)//60   
# ostatak delјenja će predstavlјati broj sekundi
sekunda=((sek%86400)%3600)%60
print("Dani: ",dan,"; Sati: ",sat,"; Minuti: ",minut,"; Sekunde: ",sekunda)


  1. Мирко је програмер који покушава да испрограмира игрицу судоку. Близу је да заврши, али му је потребна мала помоћ. Смислио је да корисник мишем бира квадрат у који ће уписати број. Поље се састоји од 81 квадратића, који су распоређени у 9 хоризонталних врста, 9 вертикалних колона и 9 већих квадрата (као на слици). Сваки квадратић је димензије 30 пута 30 пиксела (укупно поље је димензије 270 пута 270 пиксела). Познат је положај пиксела на који је кликнуто мишем. Положај је одређен редним бројевима (координатама) тог пиксела по хоризонтали и по вертикали, рачунајући од доњег левог угла поља (пиксели се и по хоризонтали и по вертикали броје од 1 до 270). Потребно је исписати редни број врсте, колоне и већег квадрата у којем се налази пиксел на који је кликнуто (врсте се броје од 1 до 9 одоздо навише, колоне од 1 до 9 слева надесно, а квадрати по врстама од доњег левог угла, како је обележено на слици), сваки број у посебном реду. (Пример 4.6.)

(Окружно такмичење – шести и седми разред, 2018.)

7 8 9
4 5 6
1 2 3
 
# dimenzije kvadratića 
a = 30 
# koordinate piksela 
x = int(input()) 
y = int(input()) 
# vrsta i kolona u kojoj se nalazi kvadratić (na polju 9x9), brojano od 0 
kolona = (x - 1) // a 
vrsta = (y - 1) // a 
# vrsta i kolona u kojoj se nalazi kvadrat (na polju 3x3), brojano od 0 
K = kolona // 3 
V = vrsta // 3; 
# redni broj kvadrata, brojano od 0 
kvadrat = V * 3 + K 
# ispis resenja (brojano od 1) 
print(vrsta + 1) 
print(kolona + 1) 
print(kvadrat + 1) 

  1. Кориснику је потребна шифра за Facebook. Написати програм који ће формирати шифру од имена корисника које он уноси, али на правилан начин, тако да касније може лако да је се сети. Шифра се креира тако што се замењује редослед прва два слова имена, остатак слова се понавља два пута и на крају се додаје број слова имена корисника. Програм исписује шифру. На пример, ако је име корисника било petar, шифра коју креира програм је eptartar5. (Пример 4.7.)
 
a=input('Uneti svoje ime ')
sifra=a[1]+ a[0]+a[2:]*2+len(a)
#Sabiramo delove šifre
print (' Tvoja šifra za Facebook glasi: '+sifra)
  1. Написати програм који на основу унетих бодова исписује поруку да ли је корисник пао или положио испит. Да би положио потребно је да освоји најмање 50 бодова. (Пример 5.1.)
 
bodovi = int(input("Koliko imas bodova: "))
if bodovi >= 50:
     print("Polozio/la si")
else:
     print("Pao/la si")
  1. Написати програм у којем се учитавају две ниске и исписује дужина краће од њих. (Пример 5.2.)
 
niska1 = input("Uneti prvu nisku: ")
niska2 = input("Uneti drugu nisku: ")
If len(niska1) < len(niska2):
	print("Dužina kraće niske je: ", len(niska1))
else:
	print("Dužina kraće niske je: ", len(niska2))

  1. Написати програм који на основу унетих вредности a и b исписује која вредност је већа. У случају да су једнаке корисник добија обавештење о томе. (Пример 5.3.)
# if  elif  else
a = int(input("Unesi vrednost a: "))
b = int(input("Unesi vrednost b: ")) 
if a > b:
	print ("a je vece od b")
elif b > a:
	print ("b je vece od a")
else:
	print ("a i b su jednaki")
  1. Написати програм који од корисника захтева да унесе број од 1 до 20. Након уноса боја корисник добија обавештење да ли је број у траженом рангу, већи или мањи. (Пример 5.5.)
# if  elif  else
a = int(input("Unesi broj od 1 do 20 "))
if а < 1 : print ("Uneti broj je manji od 1") elif a > 20:
	print (" Uneti broj je veći od 20")
else:
	print ("Broj je u traženom rangu")
  1. Збир унутрашњих углова сваког троугла је 180 степени. Троугао називамо оштроуглим ако су му сва три угла оштра, правоуглим ако му је један угао прав, а тупоуглим ако му је један угао туп. Напиши програм који на основу величине два угла троугла у степенима и минутима одређује да ли је тај троугао оштроугли, правоугли или тупоугли. Са стандардног улаза се учитавају четири цела броја: број степени и број минута сваког од два угла (сваки број у посебном реду), а на стандардни излаз треба исписати врсту троугла латиницом. (Пример 5.7.)

(Окружно такмичење – пети разред, 2018.)

# učitavamo uglove u stepenima i minutima 
ugao1_s = int(input())
ugao1_m = int(input()) 
ugao2_s = int(input()) 
ugao2_m = int(input())
# pretvaramo ih u uglove date samo u minutima 
ugao1 = ugao1_s * 60 + ugao1_m
ugao2 = ugao2_s * 60 + ugao2_m
ugao3 = 180 * 60 - (ugao1 + ugao2)

# prav ugao u minutima 
pravUgao = 90 * 60)
# ako je bar jedan ugao tup, trougao je tupougli
if ugao1 > pravUgao or ugao2 > pravUgao or ugao3 > pravUgao:
     print("tupougli")
# u suprotnom, ako je bar jedan ugao prav, trougao je pravougli
elif ugao1 == pravUgao or ugao2 == pravUgao or ugao3 == pravUgao:
     print("pravougli")
# u suprotnom nema pravih ni tupih uglova, pa je trougao oštrougli 
else:
     print("ostrougli")
  1. Штампати 6 пута “zdravo svete!”. (Пример 6.1.)
# FOR petlja

for brojac in [0, 1, 2, 3, 4, 5]:
# brojac је степер променљива која служи да броји пролазе кроз петљу
     print("zdravo svete!")
  1. Напишите програм који ће од корисника тражити да унесе поруку и број колико пута жели да се та порука прикаже. Затим ће програм приказати унету поруку тражени број пута. (Пример 6.3.)
# FOR petlja i range funkcija
n=int( input("Koliko puta zelite da se ispise poruka? "))
poruka=(input("Unesite poruku koju zelite" ))
for brojac in range(n):
	print(poruka)
  1. Напишите програм који ће израчунати просечну (средњу) вредност бројева. Корисник на почетку уноси за колико бројева жели да израчуна средњу вредност, а затим уноси бројеве. Програм израчунава и приказује средњу вредност свих унетих бројева. (Пример 6.5.)
# Srednja vrednost brojeva
n=int( input("Za koliko brojeva želite da se izračuna srednja vrednost? "))
# početna vrednost promenlјive koja će čuvati zbir brojeva je uvek 0
S=0	
for brojac in range(n):
# pri svakom prolazu kroz petlјu korisnik unosi broj
	broj=(input("Unesite broj: "))
# uneti broj dodaje se prethodnom zbiru
	S=S+broj
# po izlasku iz petlјe računa se srednja vrednost
SrednjaVrednost=S/n
print("Srednjnja vrednost iznosi: ", SrednjaVrednost)
  1. Написати програм који ће кориснику поново постављати питање да ли му је досадно све док он буде одговарао са “ne”. Када унесе неки други одговор програм престаје са радом. (Пример 6.6.)
# primer programa koji koristi WHILE petlju
Dosadno = input("Da li ti je još uvek dosadno? (Unesi da ili ne) ")
while Dosadno == "ne":
      Dosadno = input("Da li ti je još uvek dosadno? (Unesi da ili ne) ")
print ("Dovidjenja!")
  1. Написати програм који ће штампати 5 пута „zdravo!” коришћењем while петље. (Пример 6.7.)
# WHILE petljа
counter = 0
# counter je promenlјiva koja služi da broji prolaze kroz petlјu
while counter < 5:
     print ("zdravo!")
     counter=counter+1
print("Kraj programa")
  1. Написати програм који ће рачунати производ бројева које уноси корисник све док не унесе 0. (Пример 6.8.)
n = int(input("Unesi broj:"))
# početna vrednost promenlјive koja će čuvati proizvod brojeva je 1
P=1
# čim se ispuni uslov izlazi se iz petlјe tj njeno telo se ne izvršava 
while n!=0:	
    P=P*n
# od korisnika se zahteva da unese novi broj
    n = int(input("Unesi broj:"))
print("Proizvod unetih brojeva iznosi: ", P)
  1. Написати програм који одређује и исписује цифре датог природног броја (већег од 1), кренувши од цифре јединица. На пример, ако корисник унесе број 53821, програм треба да испише 5, 3, 8, 2, 1 (сваку цифру у посебном реду). (Пример 6.9.)
broj = 0
n = int(input("Unesi broj:"))
while n > 0:
# cifra jedinica se dobija  kao ostatak delјenja sa 10
     print(n % 10)
# nova vrednost promenlјive n je broj sa odbačenom cifrom jedinica
     n = n // 10
  1. Написати програм који од корисника захтева да унесе број од 1 до 20. Након уноса броја корисник добија обавештење да ли је број у траженом рангу, већи или мањи. Корисник може више пута уносити број све док не унесе онај који је у траженом рангу. (Пример 6.10. примена примера 5.5 од раније – коришћење if израза)
broj = 0
while broj < 1 or broj > 20:
     broj = int(input("Unesi broj od 1 do 20 "))
     if broj < 1 : 
          print ("Uneti broj je manji od 1") 
     elif broj > 20:
          print (" Uneti broj je veći od 20")
     else:
          print ("Hvala, broj je u traženom rangu")
          break
  1. Написати програм који проверава унету лозинку тако што од корисника захтева да унесе лозинку све док не унесе исправну. (Пример 6.11.)
""" U programu je predviđeno da lozinka bude "tajna". Početna vrednost promenlјive password može biti bilo koji string različit od "tajna"  
""" 
password = "" 
while password != "tajna":
    password = input("Molimo unesite lozinku: ")
    if password == "tajna":
        print("Hvala. Uneli ste ispravnu lozinku")
    else:
        print("Žao nam je, lozinka nije ispravna – pokušajte ponovo")
  1. Чистач прозора мора очистити све прозоре у хотелу који има шест спратова и на сваком спрату по четири собе. Програм исписује које су собе очишћене од првог до последњег спрата.(Пример 6.13.)
for sprat in range (1,7):
     for soba in range(1,5):
          print("Soba ", sprat, soba," je očišćena")
  1. Написати програм који исписује таблицу множења бројева од 1 до n. На почекту корисник уноси за колико бројева исписује таблицу множења. (Пример 6.15.)
# Ugnjezdene FOR petlje i range funkcija
n=int( input(“Za koliko brojeva se ispisuje tablica množenja? "))
for i in range(1, n+1):
    for j in range(1, n+1):
        print(i, "*", j, "=",i*j, end=" ", sep="")
        print()
  1. Написати програм који ће почети од 1 и завршити на 1.000. Програм треба да штампа сваки број и његов квадрат, али да прекине уколико је квадрат већи од 4096. (Пример 6.16.)
for broj in range(1000):
     print(broj)
     kvadrat= broj**2
     print(kvadrat)
     if kvadrat >= 4096:
          break 
  1. Написати програм који тражи просте бројеве од 2 до 10. (Пример 6.17.)
for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, 'je jednako ', x, '*', n//x)
            break
    else:
    # ugnježdena petlja je prošla bez pronalaženja faktora
    print(n, 'je prost broj')
  1. Написати програм који ће штампати све бројеве од 1 до 10 са назнаком уколико је број дељив са три. (Пример 6.18.)
for num in range(1, 10):
    if num % 3 == 0:
        print("Broj deljiv sa 3 je ", num)
        continue	# prelazi se na sledeću iteraciju bez štampe u sledećem redu
    print("Broj je ", num)
  1. Креирајте листе стрингова (низове ниски) и испробајте штампу вредности из листе. (Пример 7.1.)
#Lista vrednosti 
zivotinje = ["konj","kokoska","koza","ovca","prase"]
daniunedelji=["Ponedeljak","Utorak","Sreda","Cetvrtak","Petak"]
print(zivotinje)        # izlaz je cela lista zivotinje  
print(daniunedelji)     # izlaz je cela lista daniunedelji 
print(zivotinje[0])     # izlaz je " konj " 
print(zivotinje[1])     # izlaz je " kokoska "
print(daniunedelji[2])  # izlaz je " Sreda "
  1. Дате су оцене ученика из математике (у листи). Израчунати просечну оцену из математике у одељењу. (Пример 7.4.)
ocene = [5, 4,  5, 2, 4, 4, 3, 2, 3, 5, 4, 4, 2]
prosek = sum(ocene) / len(ocene)
print(prosek)
  1. Ако се зна да су Анине оцене из програмирања последње четири у листи оцена, израчунати њену најмању оцену из тог предмета. (Пример 7.5.)
ocene = [5, 4, 5, 3, 5, 4, 4, 5]
ocene_iz_programiranja = ocene[-4:]
print(min(ocene_iz_programiranja))
  1. Познат је списак гостију на пријему. Места за седење су нумерисана од 1 па надаље. Написати програм који одређује име и презиме госта када организатор унесе редни број места. Након тога исписати имена гостију који седе на првих пет и на последња три места, као и број места на којем седи Лазар Лазаревић. (Пример 7.6.)
gosti =["Petar Petrović", "Bojana Bojanić", "Lazar Lazarević", "Velјko Velјković", "Jovana Jovanović", "Marjan Marjanović"]
mesto = int(input("Unesi broj mesta:"))
print("Na mestu boj ", mesto, "sedi", gosti[mesto-1])
print(gosti[0:5])
print(gosti [-3:])
print("Lazar Lazarević je na sedištu“, gosti.index("Lazar Lazarević")+1)
  1. Дата је листа цена патика. Написати програм који штампа колико укупно коштају два најјефтинија, а колико два најскупља пара. Упутство: Најпре је потребно сортирати цене патика, а затим штампати збир прве две вредности (најскупље патике) и последње две вредности (најјефтиније патике). (Пример 7.7.)
cene_patika = [4399.00, 2499.95, 5899.99, 7499.95, 2399.9, 3799.95]
sortirane_cene = sorted(cene_patika)
print(sum(sortirane_cene[0:2]))
print(sum(sortirane_cene[-2:]))
  1. Распаковати листу дана у недељи и штампати среду. (Пример 7.8.)
dani = ["Ponedeljak", "Utorak", "Sreda", "Cetvrtak", "Petak", "Subota", "Nedelja"]
[Pon,Uto, Sre, Cet, Pet, Sub, Ned]= dani
print(Sr)
  1. Познате су температуре у марту и априлу једне године. Направити листу свих температура и израчунати просечну температуру. (Пример 7.9.)
temperature_mart = [15, 12, 17, 9, 16]
temperature_april = [15, 19, 23, 20, 14]
temperature = temperature_mart + temperature_april
print(sum(temperature) / len(temperature))
  1. Написати програм којим корисник најпре уноси број редова и колона матрице, а затим је попуњава бројевима. На крају програм штампа унету матрицу. (Пример 7.10.)
n=int(input("Unesite broj redova matrice"))
m=int(input("Unesite broj kolona matrice"))
a=[]
for i in range(n):
   b=[]
   for j in range(m):
      b.append(int(input("unesite elemente matrice: ")))
   a.append(b)
print(a)
  1. Програм садржи листу ученика који су тачно решили задатке на часу (један или више). Штампати списак активних ученика. (Пример 7.11.)
resili_zadatak = ['Petar', 'Vladana', 'Veljko', 'Marina', 'Darko', 'Marina', 'Darko']
aktivni = set(resili_zadatak)
print(aktivni)
  1. Програм садржи име ученика. Штампати сва различита слова имена. (Пример 7.12.)
ime = 'Vladana'
slova_ime = set(ime)
print(slova_ime)
  1. Један скуп садржи ученике који се спремају за такмичење из информатике, а други оне који се спремају за такмичење из математике. Написати програм који одређује скуп ученика који вежбају за оба такмичења и скуп ученика који вежбају само информатику. (Пример 7.13.)
mat = {"Petar", "Una", "Luka", "Ana", "Aleksa"}
inf = {"Ana", "Nemanja", "Milica", "Nikola", "Luka", "Mia"}
dva_takmičenja = mat & inf
bar_jedno_takmičenje = mat | inf
samo_inf = inf - mat
print(dva_takmičenja)
print(bar_jedno_takmičenje)
print(samo_inf)
  1. Уређени пар садржи висину и тежину једног ученика. Напиши програм који одређује и посебно исписује његову висину и тежину. (Пример 7.14.)
ucenik= (183, 75)
visina = ucenik[0]
tezina = ucenik[1]
print("Ученик је висок:", visina, “cm”)
print("Ученик је тежак:", tezina, „kg“)
  1. Програм садржи листу са подацима о ученицима члановима секције из информатике, њиховим именима и успехом (просечним оценама) на крају године. Написати програм који за унети редни број ученика штампа његово име и просек. Подаци се организују помоћу листе уређених двојки (на пример, (“Перић Пера”, 4.55)). (Пример 7.15.)
ucenici = [("Aleskić Marija", 4.78), ("Ilić Ana", 3.55), ("Jovanović Miša",4.2), ("Kovačević Slavica", 5.0), ("Milošević Saša", 3.1), ("Perić Pera", 4.67)]
broj = int(input("Unesi redni broj učenika:"))
ucenik = ucenici[broj - 1]
print("Učenik ", ucenik[0], "je na kraju godine imao/la uspeh", ucenik[1])
  1. Програм садржи речник са подацима о бројевима дресова фудбалера фудбалског клуба „Барселонаˮ и њиховим именима. Написати програм који за унети број дреса штампа име фудбалера. (Пример 7.16.)
fudbaleri = {10: "Mesi", 3: "Pike", 9: "Suarez", 11:"Dembele"}
broj = int(input("Unesi broj dresa fudbalera Barselone: "))
print("Dres broj: ", broj, "nosi ", fudbaleri [broj])
  1. Написати програм који формира списак земаља тако што за сваку земљу у посебном реду напише њен назив и површину. У програму је дат речник који садржи називе неколико земаља и њихове површине. (Пример 7.17.)
povrsine = {"Srbija": 88361,
            "Hrvatska": 56594,
            "Crna Gora": 13812,
            "Bosna i Hercegovina": 51197,
            "Slovenija": 20273,
            "Makedonija": 25713} 
for zemlja in povrsine:
       print("Naziv: ", zemlja, "Površina: ", povrsine[zemlja])
  1. Написати програм за унос елемената листе целих бројева. На почетку програма корисник уноси број елемента листе и код сваког уноса појављује се текст “Унети eлемент листе”.
n=int(input("Koliko elemenata liste celih brojeva zelis da uneses? "))
lista=[]
for brojac in range(n):
    element=int(input("Unesi element liste: "))
    lista.append(element)
print("Hvala ")
print("Ovo su tvoji brojevi:")
for i in lista:
    print(i)
  1. Написати програм који израчунава децималну вредност разломка који корисник уноси у облику текста (на пример, 125/38).
razlomak = input("Unesi razlomak u obliku a/b: ")
indeks_crte = razlomak.find("/")
brojilac = int(razlomak[0: indeks_crte])    
imenilac = int(razlomak[indeks_crte+1:])
decim_vredn= brojilac/ imenilac
print(“Decimalna vrednost unetog razlomka iznosi “, decim_vredn)
  1. Корисник уноси године своја два детета. Написати програм који на основу унетих година одређује и исписује колико година има старије дете, а колико млађе. Програмом се израчунава и штампа разлика у годинама деце.
godine1=int(input("Unesi godine jednog deteta: "))
godine2= int(input("Unesi godine drugog deteta: "))
starije=max( godine1 , godine2 )
mladje=min(godine1 , godine2 )
razlika=starije-mladje
print ("Starije dete ima ", starije , "godina, a mladje ", mladje, "godina" )
print ("Razlika u godinama je ", razlika, "godina")
  1. Написати програм којим се израчунава површина лопте када корисник унесе њен полупречник. Упутство: Површина лопте P када је познат полупречник r рачуна се по обрасцу P=4r2p.
import math
r=float(input("Uneti poluprečnik lopte"))
P=4*math.pow(r,2)*math.pi
print("Površina lopte poluprečnika {0} iznosi {1}".format(r,math.floor(P)))
  1. Написати програм који за дату дужину странице једнакостраничног троугла израчунава његове површину. Упутство: Површина једнакостраничног троугла P када је позната дужина странице а рачуна се по обрасцу P=а2*31/2/4
import math
r=float(input("Uneti stranicu jednakostraničnog trougla"))
P=math.pow(a,2)*math. sqrt(3)/4
print("Površina jednakostraničnog trougla stranice {0} iznosi {1}".format(a,math.floor(P)))
  1. Написати програм за насумично бацање коцкице. У програму се корисник пита да ли жели да баци коцкицу. Све док је одовор “da” коцкица се котрља и појављује се насумичан број од 1 до 6.
# Rešenje (prvi način)
import random    
odgovor = input("Da li želite da bacite kockicu (da/ne)? ")
while odgovor == 'da':
        dobijenibroj = random.randint(1, 6)
        print ("Ispao je broj ", dobijenibroj)
        odgovor = input("Da li želite opet da bacite kockicu (da/ne)? ")
print("Hvala, dovidjenja! ")

# Задатак се може решити и на други начин
import random    
odgovor = input("Da li želite da bacite kockicu (da/ne)? ")
mojalista=[1,2,3,4,5,6]
while odgovor != "ne":
        print("Ispao je broj: ", random.choice(mojalista))
        odgovor = input("Da li želite opet da bacite kockicu (da/ne)? ")
print("Hvala, dovidjenja! ")
  1. Проширити претходни програм тако да чува и штампа све добијене вредности.
import random    
bacanja = []
odgovor = input("Da li želite da bacite kockicu (da/ne)? ")
while odgovor  == 'da':
     dobijenibroj = random.randint(1, 6)
     bacanja.append(dobijenibroj)
     print ("Ispao je broj ", dobijenibroj)
     odgovor = input("Da li želite opet da bacite kockicu (da/ne)? ")
print("Evo rezultata tvojih bacanja: ")
for i in bacanja:
     print(i)
  1. Написати програм за игру погађања броја, где корисник може неограничен број пута да погађа док не унесе број који се у програму на почетку бира насумичним избором. Зна се да је у питању цео број већи од нуле а мањи од 100.
import random
izabranibroj = random.randint(1,100)
pokusaj = int(input("Pogodi slučajni broj od 1 do 100! "))
while pokusaj!= izabranibroj:
    if pokusaj > izabranibroj:
        pokusaj = int(input("Broj koji si uneo/la je veći od traženog, pokušaj sa manjim brojem! "))    
    else:
        pokusaj = int(input("Broj koji si uneo/la je manji od traženog, pokušaj sa većim brojem! "))
print("Tačno! Svaka čast!")
  1. Написати програм који за корисника креира ново корисничко име. На почетку се од корисника тражи да унесе своје име а затим програм комбинује део имена са неком речју од три слова као што је зец.
    • На пример, ако корисник унесе Катарина програм производи излаз Катзец или зецарина. Водити рачуна о томе да у програму буде формирана листа са најмање пет речи које ће програм користити насумице како би их кобминовао са делом корисничког имена и креирао ново име.
import random
mojalista=["pas","zec","lav","vrt", "tri"]
ime=input("Unesi svoje ime: ")
slucajni_izbor=random.choice(mojalista)
novoime=slucajni_izbor+ime[3:]
print("Tvoje novo korisnicko ime je: ", novoime)
  1. Написати програм којим се проверава да ли је број дељив са 7. Користити посебне функције за унос, обраду и штампу података.
def unos_podataka():
    broj = int(input("Unesi broj   "))
    return broj	      #funkcija vraća broj koji je uneo korisnik
def obrada_podataka(br):     
    if br % 7 == 0:
           # deljivost sa 7
           return True        #funkcija vraća True ako je br delјiv sa 7
    else:
           return False       #funkcija vraća False ako br nije delјiv sa 7
def izlaz_podataka(broj,rezultat):   # procedura za štampu rezultata
    if rezultat:
        print("Broj {0} je deljiv sa 7".format(broj))
    else:
        print("Broj {0} nije deljiv sa 7".format(broj))

def main():
"""
pozivom funkcije unos_podataka dobija se vrednost koja se čuva u promenlјivoj uneti_broj 
"""
    uneti_broj = unos_podataka() 
"""
vrednost promenlјive uneti_broj prenosi se u funkciju obrada_podataka koja vraća True ili False u zavisnosti od delјivosti tog broja sa 7. 
Vrednost True ili False čuva promenlјiva deljivost
"""
    deljivost = obrada_podataka(uneti_broj)
"""
u proceduru izlaz_podataka prenose se vrednosti koje čuvaju promenlјive uneti_broj i deljivost i tokom njenog izvršenja štampa se povratna informacija o delјivosti unetog broja brojem 7
"""
    izlaz_podataka(uneti_broj,deljivost)
  1. Написати програм где корисник уноси један цео број. Програм проверава парност унетог броја. За одређивање парности броја написати посебну процедуру.
def parnost (a):
    if a%2==0:
        print ("Broj {0} je paran".format(a))
    else:
        print ("Broj {0} je neparan".format(a)) 
broj=int(input("Unesi ceo broj: "))
# Poziv procedure iz glavnog programa:
parnost(broj)
  1. Написати програм где корисник уноси један цео број. Програм проверава парност унетог броја. За одређивање парности броја написати посебну функцију.
def parnost (a):
    if a%2==0:
         return True
    else:
 	return False
broj=int(input("Unesi ceo broj: "))
# Poziv i upotreba funkcije parnost(broj) iz glavnog programa
# parnost(broj) može vratiti vrednost True ili False
if parnost(broj):
	print ("Broj {0} je paran".format(broj))
else:
	print ("Broj {0} je neparan".format(broj))
  1. Написати програм где корисник уноси један цео број. Програм проверава негативност унетог броја За испитивање да ли је унети број негативан написати посебну функцију/процедуру.
def negativnost(a):
    if a < 0:
        print ("Broj {0} je negativan".format(a))
    else:
        print ("Broj {0} je pozitivan".format(a))
broj=int(input("Unesi ceo broj: "))
negativnost(broj)
  1. Написати програм који израчунава збир два броја позивом функцијe за израчунавање збира из главног програма..
# definisanje funkcije koja računa zbir ulaznih argumenata
def zbir(br1,br2):                 
    rezult = br1 + br2
    return rezult

def main():
    prvi = int(input("Unesi prvi broj: "))
    drugi = int(input("Unesi drugi broj: "))
    rezultat = zbir(prvi,drugi)  # poziv funkcije u glavnom programu
#promenlјiva rezultat čuva vrednost koju je vratila funkcija zbir
    print("Rezultat je",rezultat)
  1. Написати функцију која проналази најмањи број у унетој листи бројева.
def minimum (b):
    min=b[0];
    for i in range(len(b)):
        if b[i] < min:
            min=b[i]   #promenlјiva min uzima novu manju vrednost 
        else: 
   continue
    return min
moja_lista=[2, 5, 8, 3, 1, 4]
minimum_liste=minimum(moja_lista)
print("Minimalna vrednost unete liste brojeva je: ", minimum_liste)

 

  1. Дефинисати функцију која на основу дужинa страницa израчунава површину правоугаоника.
def povrsina_pravougaonika(br1,br2):
    rezultat=br1*br2 # isprobati umesto ovog reda rezultat=a*b
    return rezultat
a=int(input("Unesi prvu stranicu pravougaonika : "))
b=int(input("Unesi drugu stranicu pravougaonika: "))
povrsina=povrsina_pravougaonika(a,b)
print("Povrsina pravougaonika je ",povrsina)
  1. Написати једну процедуру за унос листе бројева а другу за штампу листе.
def unosliste():
    n=int(input("Koliko elemenata liste celih brojeva želis da uneseš? "))
    lista=[]
    for brojac in range(n):
        element=int(input("Unesi {0}. element liste: ".format(brojac+1)))
        lista.append(element)
  return lista
def stampaliste(lista):
    print("Ovo su tvoji brojevi:")
    brojac=1
    for i in lista:
        print("{0}. element liste је: ".format(brojac,i))
        brojac=brojac+1
def main():
    moja_lista=unosliste()
    stampaliste(moja_lista)
  1. Декларисати функције/процедуре уноса и исписа елемената једнодимензионалног низа. На почетку корисник уноси број елемената низа, а затим бројеве.
def unos(niz,n):
    for i in range(n):
        niz[i]=int(input("Unesite {0}. broj: ".format(1+i)))
        
def ispis(niz,n):
    for i in range(n):
        print("{0}. broj je: ".format(1+i), niz[i])

br_el=int(input("Unesite broj elemenata niza: "))
niz_brojeva=[0]*br_el  #ovim je omogućen unos unapred	određenog broja 
                                 #elemenata niza
unos(niz_brojeva,br_el)
  1. Корисник уноси тежине девојчица и тежине дечака у једном одељењу. Направити листу тежина дечака и листу тежина девојчица, а затим израчунати број и просечну тежину свих ђака коришћењем функција и процедура.
def unos_decaka_i_devojcica():
    dev=int(input("Koliko devojčica ima u odeljenju? "))
    dec=int(input("Koliko dečaka ima u odeljenju? "))
    lista_dev=[]
    lista_dec=[]
    for brojac in range(dev):
        tez_dev=int(input("Unesi težinu {}. devojčice: ".format(brojac+1)))
        lista_dev.append(tez_dev)
    for brojac in range(dec):
        tez_dec=int(input("Unesi težinu {}. dečaka: ".format(brojac+1)))
        lista_dec.append(tez_dec)
    return lista_dec,  lista_dev
def prosek(lista1,lista2):
    zbir=sum(lista1)+sum(lista2)
    broj=len(lista1)+len(lista2)
    pros=zbir/broj
    print("Prosečna težina svih đaka iznosi: ", pros)
decaci, devojcice = unos_decaka_i_devojcica()
print("Ukupan broj učenika je: ", (len(decaci)+len(devojcice)))
prosek(decaci,devojcice)
  1. Написати програм који израчунава збир, разлику, производ и количник два броја, тј. симулира рад дигитрона (коришћењем функција за израчунавање). На почетку корисник уноси бројеве, а затим бира жељену операцију.
def zbir(br1,br2):
    rezultat = br1 + br2
    return rezultat
def razlika(br1,br2):
    rezultat = br1 - br2
    return rezultat
def proizvod(br1,br2):
    rezultat = br1 * br2
    return rezultat
def kolicnik(br1,br2):
    rezultat = br1 / br2
    return rezultat

def kalkulator():
    print("Pokrenuli ste kalkulator...")
    print("Unesite brojeve i odaberite računsku operaciju")
    prvi = int(input("Unesite prvi broj: "))
    drugi = int(input("Unesite drugi broj: "))
    print("Izaberite računsku operaciju: (1) Sabiranje, (2) Oduzimanje, (3) Deljenje, (4) Množenje")
    izbor= input()
    if izbor == "1":
        rezultat = zbir(prvi,drugi)
    elif izbor == "2":
        rezultat = razlika(prvi,drugi)
    elif izbor == "3":
        rezultat = kolicnik(prvi,drugi)
    elif izbor == "4":
        izbor = proizvod(prvi,drugi)
    print("Rezultat je",rezultat)
  1. Креирати функције/процедуре које ће омогућити унос елемената низа, испис елемената низа, обрнути испис елемената, затим испис само парних вредности.
def unos(niz,n):
    for i in range(n):
        niz[i]=int(input("Unesite {0}. broj: ".format(1+i)))
def ispis(niz,n):
    for i in range(0,n):
        print("{0}. broj je: ".format(1+i), niz[i])
def obrnuto(niz,n):
    for i in range(n-1,-1,-1):
        print("{0}. broj je: ".format(1+i), niz[i])
def parnost (a):
    if a%2==0:
        return True
    else:
        return False
def ispis_parnih(niz,n):
    for i in range(0,n):
        if parnost(niz[i]):
            print("Paran broj u nizu je: ", niz[i])
#Направите мени за корисника употребом while петље.
br_el=int(input("Unesite broj elemenata niza: "))
niz_brojeva=[0]*br_el
while 1:
    print("Odaberite: ")
    print("1. za upis elemenata niza ")
    print("2. za ispis elemenata niza ")
    print("3. za obrnuti ispis elemenata niza ")
    print("4. za ispis samo elemenata niza koji su parni ")
    print("5. za kraj rada ")
    izbor=int(input("Vas izbor je? "))
    if izbor==1:
        unos(niz_brojeva,br_el)
    elif izbor==2:
        ispis(niz_brojeva,br_el)
    elif izbor==3:
        obrnuto(niz_brojeva,br_el)
    elif izbor==4:
        ispis_parnih(niz_brojeva,br_el)
    elif izbor==5:
        print("Dovidjenja! ")
        break
  1. Са стандардног улаза се учитава величина угла у степенима, минутима и секундама (угао је мањи од 180 степени, али је задат тако да број минута и број секунди може бити и већи од 59). Напиши програм који исписује укупан број секунди угла, као и да ли је угао оштар, прав или туп. (Општинско такмичење – шести разред, 2019.)
def uMinute(stepeni, minuti, sekundi):
    return (stepeni * 60 + minuti) * 60 + sekundi
stepeni = int(input())
minuti = int(input())
sekundi = int(input())
ugaoUMinute = uMinute(stepeni, minuti, sekundi)
if ugaoUMinute < uMinute(90, 0, 0): print(ugaoUMinute, "ostar", sep=' ') elif ugaoUMinute > uMinute(90, 0, 0):
    print(ugaoUMinute, "tup", sep=' ')
else:
    print(ugaoUMinute, "prav", sep=' ')

 

  1. Програм рачуна збир првих n природних бројева користећи рекурзивну функцију.
#(rekurzivni_zbir(6) = 6 + 5 + 4 + 3 + 2 + 1 = 21)
def rek_zbir(n):
     if n == 1:      #Ako je uneti broj n = 1, funkcija vraća 1,
          return n   #tj. rekurzivni_zbir(1) = 1
     else: 
          return n + rek_zbir(n-1)
print (rek_zbir(6))  #Štampa se rezultat funkcije za vrednost 6
  1. Написати рекурзивни програм за степеновање природног броја x природним бројем n.
def stepenovanje(x, n):
    if n == 0:          # bazni slučaj
        return 1
    else:               # rekurzivni korak        
return x * stepenovanje(x, n-1)
  1. Написати процедуру рекурзивне функције претходник f(n)=n-1.
def prethodnik(n):
if n == 0 or n == 1:
	return 0
else:
			         #dopisati red koda koji nedostaje 
  1. Написати функцију за израчунавање факторијела унетог природног броја 4.

Дефиниција факторијела: n! = n ∙ (n–1)! ,    (n > 0),     0! = 1

# iterativna funkcija za računanje faktorijela (nerekurzivna)
def faktorijel(broj):
    ukupno=1
    for i in range (1,broj+1):
        ukupno=ukupno*i
    return ukupno
print("Faktorijel broja 4 je", faкtoriјеl(4))
 
# rekurzivna funkcija za računanje faktorijela 
def factorijel(broj):
    if broj <= 1:		#bazni slučaj
	   return 1
    else:			#rekurzivni korak
	   return broj*factorijel(broj-1)

print("Faktorijel broja 4 je", factorijel(4))
  1. Програм за израчунавање Фибоначијевог броја преко рекурзије.

Фибоначијев низ је низ бројева у коме су прва два броја 0 и 1, а сваки следећи је збир претходна два броја: 0, 1, 1, 2, 3, 5, 8, 13, 21,…

Општи запис је: fn = fn-1 + fn-2, (n > 1), f1 = 1, f0 = 0

У овом примеру биће два базна случаја: f(0) = 0 i f(1) = 1, а рекурзивни корак ће бити: f(n-1) + f(n-2) = f(n)

Итеративни начин:

def fib(n):
    a = 0	  	#Prvi element
    b = 1	  	#Drugi element
    suma = 0 	#Zbir prethodna dva elementa
    for i in range(n):
        suma = a + b
        a = b
        b = suma
    return a

Рекурзивни начин:

def fib(n):
    if n == 0 or n == 1:	         #bazni slučaj
        return n
    else:				#rekurzivni korak
        return fib(n-1) + fib(n-2)
  1. Дефинисати процедуру за цртање многоугла и искористити је у главном програму за цртање три квадрата различитих боја (црвена, зелена и плава) дуж пуног круга.
# definišimo proceduru za crtanje pravilnog poligona
# parametri su broj stranica poligona n i dužina stranice a
import turtle
def poligon(n, a):
   for i in range(n):               # ponoviti n puta
      turtle.forward(a)             # pomeranje napred a koraka
      turtle.right(360 / n)         # okretanje za spolјašnji ugao                             
                                    # n-tostranog pravilnog poligona
boje = ["red", "green", "blue"]     # boje koje će se koristiti tokom crtanja
for i in range(3):                  # ponoviti 3 puta:
      turtle.color(boje[i])         # postaviti i-tu boju
 				    # redom se uzimaju crvena, zelena i plava 
      poligon(4, 50)                # nacrtati kvadrat dimenzije 50 koraka
      turtle.right(360 / 3)         # kvadrati su pravilno raspoređeni  duž
                                    # punog kruga, okret za 120 stepeni 
  1. Нацртати спиралну звезду као на слици. Упутство: Након окрета свака следећа страница је дужа од претходне.

import turtle 
t = turtle.Turtle()
for i in range(20):
    t.forward(i * 10)
    t.right(144)

 

    1. Написати програм који исцртава кружницу.

Алгоритам:
1. Нацртати кратку линију (нпр. 2 корака)
2. Окренути се за 1 степен
3. Поновити претходне кораке 360 пута

import turtle
t = turtle.Turtle()
count = 0
while(count < 360):  
# koristi se while petlјa ali moguće je upotrebiti i for petlјu
    t.forward(2)
    t.left(1)
    count = count + 1

 

  1. Дефинисати класу небеских тела са особинама као што су тип небеског тела, пречник тела и име особе која га је открила.
class NebeskaTela(object):
    def __init__(self,tip,precnik,otkrivac):
        self.tip=tip
        self.precnik=precnik
        self.otkrivac=otkrivac
  1. Дефинисати класу „Посудaˮ, која има две функције, једну за убацивање кекса у посуду, а другу за испис убаченог кекса.
#deklaracija klase koja nema atributa u telu klase
#znaci da nije potrebno unositi atribut u klasu Posuda()
class Posuda:
#poziv funkcije za unos keksa
    def ubacikeks(self, keks):
        self.keks=keks
#poziv funkcije ispisa keksa
    def dajkeks(self):
        print(self.keks)

#pozivi klase i funkcija u glavnom programu
mojaPosuda=Posuda()
mojaPosuda.ubacikeks("Plazma")
mojaPosuda.dajkeks()
  1. Написати класу „Аутоˮ која креира податке о аутомобилу. Информације о аутомобилу су модел, боја и максимална брзина којом се аутомобил креће. Класа треба да садржи методе које ће уписати и одштампати податке, као и методу за промену боје.
#deklaracija klase
class Auto:
    def __init__(self, model, boja, maxbrzina):
          self.model=model
          self.boja=boja
          self.maxbrzina=maxbrzina
    def prikaz(self):
	 print("Model automobila je ", self.model, ",")
	 print("boja je ", self.boja, "," )
	 print(" a maksimalna brzina koju postize je ", self.maxbrzina, "km/h")
    def promenaboje(self,novaboja):
         self.boja=novaboja

#poziv klase i metoda
#kreiranje 1. objekta klase
auto_1=Auto("Audi", "crna", "250")
auto_1.prikaz()
#kreiranje 2. objekta klase
auto_2=Auto("Renault", "crvena", "220")
auto_2.prikaz()
auto_2.promenaboje("metalik siva")
auto_2.prikaz()

  1. Написати класу „Кућни љубимацˮ која креира податке чије су информације име, раса и боја. Класа треба да садржи методе које ће уписати и одштампати податке, као и методу за промену имена.
#deklaracija klase i potklasa
class KucniLjubimac:
    def __init__(self, ime, rasa, boja):
        self.ime=ime
        self.rasa=rasa
        self.boja=boja
    def prikaz(self):
        print("Kucni ljubimac se zove ", self.ime. ".")
        print("Njegova boja je ", self.boja,",")
        print("a rasa ", self.rasa)
    def promenaimena(self,novoime):
        self.ime=novoime
pas=KucniLjubimac("Kiki", "pekinezer", "zuta" )
pas.prikaz()
pas.promenaimena("Fifi")
pas.prikaz()
  1. Написати поткласу „Лавˮ класе „Месождерˮ, која је поткласа класе „Животињаˮ.
class Zivotinja:
	def kretanje(self):
		print("Trčim")
class Mesozder(Zivotinja):
	pass
class Lav(Mesozder):
	pass
Pera = Lav()
  1. Написати класу „Кућни љубимацˮ са поткласама „Пасˮ и „Мачкаˮ које креирају податке чије су информације име, раса и боја. Свака класа треба да садржи методе које ће уписати и одштампати податке, као и методу за промену имена.
#deklaracija klase i potklasa
class KucniLjubimac:
    def __init__(self, ime, rasa, boja):
        self.ime=ime
        self.rasa=rasa
        self.boja=boja
    def prikaz(self):
        print("Kucni ljubimac se zove ", self.ime. ".")
        print("Njegova boja je ", self.boja,",")
        print("a rasa ", self.rasa)
    def promenaimena(self,novoime):
        self.ime=novoime
class Pas(KucniLjubimac):
    pass
class Macka(KucniLjubimac):
    pass

#poziv klase i metoda
#kreiranje 1. objekta klase
pas_1=Pas("Rex", "doberman", "crna")
pas_1.prikaz()
#kreiranje 2. objekta klase
pas_2=Pas("Kiki", "pekinezer", "zuta" )
pas_2.prikaz()
pas_2.promenaimena("Fifi")
pas_2.prikaz()
macka=Macka("Mimi", "sijamska macka", "siva")
macka.prikaz()
  1. Унесите два броја и израчунајте њихов збир, разлику, количник и производ. Збир исписати у бинарном запису, разлику исписати у хексадекадском запису, производ исписати у окталном запису, количник исписати у декадном запису.

Пример исписа:

Unesite 1. broj: 7

Unesite 2. broj: 5

Zbir je: 0b1100

Razlika je: 0x2

Proizvod je: 0o43

Količnik je: 1.4

a=int(input("Unesite 1. broj: "))
b=int(input("Unesite 2. broj: "))
c=a+b
d=a-b
e=a*b
f=a/b
print("Zbir je: ", bin(c))
print("Razlika je: ", hex(d))
print("Proizvod je: ", oct(e))
print("Kolicnik je: ", f)
  1. Проверите да ли стринг “Jagodina035” садржи само алфабетске знаке, а стринг “035” само нумеричке.
string="Jagodina035"
print (string.isalpha())       # daje False
string="035"
print (string.isdigit())       # daje True
  1. За унети било који карактер преко тастатуре (слово, број, специјални знак) програм исписује његов ASCII/Unicode код.
a=input("Unesite znak: ")
b=ord("a")
print("Vas znak: ",a, "ima ASCII kod: ", b)
  1. Написати програм за унос бинарног броја у облику бајта (8 битова).
binarni_broj=input("Unesite binarni broj (8 bita: ")
while len(binarni_broj)!=8:
    binarni_broj=input("Niste uneli dobar binarni zapis, unesite ponovo (8 bita): ")
  1. Написати функцију за превођење бинарног записа броја у декадни. У главном програму корисник уноси број у бинарном запису, а програм позива написану функцију и исписује декадни запис броја, а затим се врши провера добијеног резултата позивом функције bin.
def bin_u_dek(bin):
   velicina=len(bin)
   #funkcija len() nam vraća veličinu niza tj. broj znakova koje smo uneli u 
   # binarnom zapisu
   potencija=0
   #zadaje se početna vrednost stepena osnove 2
   broj=0
   # postavlja se početna vrednost dekadnog broja
   for i in range (velicina-1,-1,-1):
   # i uzima vrednosti indeksa binarnog zapisa od poslednje cifre unazad do    
   # prve
      if int(bin[i])==1:
      #ispituje se da li je cifra na poziciji i binarnog zapisa broja jednaka 1
            broj=broj+2**potencija
            #ako jeste 1 računa se nova vrednost dekadnog broja
      potencija=potencija+1
      #svakako, vrednost stepena osnove 2 povećava se za 1
   return(broj)
   #funkcija vraća dekadnu vrednost unetog binarnog broja

binarni_broj=input("Unesite binarni broj: ")
dekadni_broj=bin_u_dek(binarni_broj)
print("broj u dekadnom zapisu iznosi:",dekadni_broj) 
provera=bin(dekadni_broj)
print("broj u binarnom zapisu iznosi:",provera) 
  1. Написати програм који штампа збир два унета бинарна броја (бајта) у декадном запису. Користити функцију за превођење бинарног записа броја у декадни.
def bin_u_dek(bin):
    velicina=len(bin)-1
    potencija=0
    broj=0
    for i in range (velicina,-1,-1):
        if int(bin[i])==1:
            broj=broj+2**potencija
        potencija=potencija+1
    return(broj)
binarni_broj1=input("Unesite prvi binarni broj (kao bajt tj. 8 cifara): ")
while len(binarni_broj1)!=8:
    binarni_broj1=input("Niste uneli dobar bajt, unesite ponovo: ")
binarni_broj2=input("Unesite drugi binarni broj (kao bajt tj. 8 cifara): ")
while len(binarni_broj2)!=8:
    binarni_broj2=input("Niste uneli dobar bajt, unesite ponovo: ")
zbir=bin_u_dek(binarni_broj1)+bin_u_dek(binarni_broj2)
print("Binarni brojevi u dekadnom zapisu iznose: ",bin_u_dek(binarni_broj1), bin_u_dek(binarni_broj2)) 
print("Njihov zbir iznosi: ", zbir) 
  1. (Функција за криптовање): Написати програм који користи функцију за шифровање Цезаровом шифром без кључа уз помак, за шифрирање изреке коју уноси корисник.
def Cezar_sa_pomakom(Text, pomak): 
  SifrText = ""
  for karakter in Text:
   if karakter.isalpha():
      ostaniuAlfabetu = ord(karakter)+pomak 
      if ostaniuAlfabetu > ord('Z'):
        ostaniuAlfabetu=ostaniuAlfabetu-26
      konacnoSlovo = chr(ostaniuAlfabetu)
      SifrText=SifrText+konacnoSlovo
  return SifrText
text =input("Uneti tekst za sifriranje velikim slovima abecede : ")
s = int(input("Uneti pomak (ceo broj): "))
print ("Text za sifriranje : " + text)
print ("Pomak : " + str(s))
print ("Tvoj sifrirani tekst glasi: "+ caesar_sa_pomakom(text,s))
  1. Написати функцију за линеарно претраживање на основу датог алгоритма.
#Pronalazi indeks x u L. Vraća -1, ako x nije u L
def lin_pretraga(L, x):
      i, c = 0, -1               #има исто значење као i=0,c=-1
      n = len(L)
      while i < n and L[i] != x:
          i += 1		# има исто значење као i =i+1
      if i < n:
          return i
      else:
          return c
#Уколико желимо проверити да ли се у низу 5,3,7,9,8,4,6 налази вредност 4, 
#у главном програму можемо позвати функцију lin_pretraga на следећи начин: 
Lista=[5,3,7,9,8,4,6]
x = 4
rezultat = lin_pretraga(Lista, x) 
if rezultat != -1: 
    print ("Element se nalazi u listi na indeksu: ",rezultat) 
else: 
    print ("Element se ne nalazi u listi")
  1. Написати итеративну функцију за бинарно претраживање низа бројева која враћа индекс елемента ако се он налази у листи или вредност -1 ако није члан листе. Програм штампа кориснику поруку о томе да ли је елемент члан листе или не.
def binarnaPretragaIt(niz, l, d, x):   
    while l <= d:   
        sred = l + (d - l)//2;           
        if niz[sred] == x: 
            return sred 
        elif niz[sred] < x: 
            l = sred + 1
        else: 
            r = sred - 1
    return -1
niz = [ 2, 3, 4, 10, 40 ] 
x = 4
rezultat = binarnaPretragaIt(niz, 0, len(niz)-1, x) 
if rezultat != -1: 
    print ("Element se nalazi u listi na indeksu: ",rezultat) 
else: 
    print ("Element se ne nalazi u listi")

 

  1. Написати рекурзивну функцију за бинарно претраживање низа бројева која враћа индекс елемента ако се он налази у листи или вредност -1 ако није члан листе. Програм штампа кориснику поруку о томе да ли је елемент члан листе или не.
def BinarnaPretragaRek (niz, l, d, x): 
    if d >= l: 
        sred =l+(d-l)//2
        if niz[sred] == x: 
            return sred 
        elif niz[sred] > x: 
            return BinarnaPretragaRek(niz, l, sred-1, x) 
        else: 
            return BinarnaPretragaRek(niz, sred+1, d, x) 
    else: 
         return -1
probni_niz = [ 2, 3, 4, 10, 40 ] 
x = 40
rezultat = BinarnaPretragaRek(probni_niz, 0, len(probni_niz)-1, x) 
if rezultat != -1: 
    print ("Element se nalazi u listi na indeksu: ",rezultat) 
else: 
    print ("Element se ne nalazi u listi")
  1. Написати функцију за сортирање уметањем и искористити је у главном програму за проверу резултата.
# Python program za implementaciju Insertion Sort-a 
def insertionSort(niz): 
     # Prolaz od 1 do len(niz) 
    for i in range(1, len(niz)): 
         kljuc = niz[i] 
         # Pomeriti elemente niz[0..i-1] koji su veci 	   
# od vrednosti kljuc, jedno mesto ispred trenutne pozicije 
         j = i-1
         while j >=0 and kljuc < niz[j] : 
                niz[j+1] = niz[j] 
                j -= 1
         niz[j+1] = kljuc 
# test  
niz = [5, 4, 2, 11, 7, 3]  
insertionSort(niz) 
for i in range(len(niz)): 
    print(niz[i]) 
  1. Написати функцију за сортирање мехуром и искористити је у главном програму за проверу резултата.
# Bubble Sort 
def bubbleSort(niz): 
    n = len(niz) 
# Preci kroz sve elemente niza
    for i in range(n): 
        zamenjeni = False
# Poslednjih i elemenata je vec na mestu 
        for j in range(0, n-i-1): 
	# Proci kroz niz od 0 do n-i-1. Zameniti vrednosti 
	# ako je pronadjeni element veci od sledeceg elementa  
            if niz[j] > niz[j+1] : 
                niz[j], niz[j+1] = niz[j+1], niz[j] 
                zamenjeni = True
# Ako ni jedan par elemenata nije zamenio vrednosti u 
# unutrasnjoj petlji prekinuti proceduru tj. break 
        if zamenjeni == False: 
            break
niz = [5, 4, 2, 11, 7, 3]
bubbleSort(niz) 
print ("Sortirani niz :") 
for i in range(len(niz)): 
    print(niz[i],end=" ") 
  1. Написати функцију за сортирање селекцијом и искористити је у главном програму за проверу резултата.
# Python program za implementaciju Selection sort-a 
def SelectionSort(A): 
    for i in range(len(A)):      
          # Pronalazenje min. el. u preostalom ne  sortiranom delu niza 
        min_ind = i 
        for j in range(i+1, len(A)): 
            if A[min_ind] > A[j]: 
                min_ind = j 
  	    # Zamena pronadjenog min. el. sa prvim  elementom         
        A[i], A[min_ind] = A[min_ind], A[i] 
Niz = [5, 4, 2, 11, 7, 3] 
SelectionSort(Niz)  
print ("Sortirani niz") 
for i in range(len(Niz)): 
    print(Niz[i]) 
  1. Учитати чланове низа и сортирати их у опадајућем поретку (методом селекције).
def unos(niz,n):
    for i in range(n):
        niz[i]=int(input("Unesite {0}. broj: ".format(1+i)))
def ispis(niz,n):
    for i in range(0,n):
        print("{0}. broj je: ".format(1+i), niz[i])
def SelectionSort(A): 
    for i in range(len(A)):      
	  max_ind = i 
        for j in range(i+1, len(A)): 
            if A[max_ind] < A[j]: 
                max_ind = j 
  	  A[i], A[min_ind] = A[min_ind], A[i] 
br_el=int(input("Unesite broj elemenata niza: "))
niz_brojeva=[0]*br_el
unos(niz_brojeva,br_el)
SelectionSort(Niz) 
ispis(niz_brojeva,br_el)