Структуре података - додатни задаци за вежбу¶
Торке/Листе¶
Да ли је број био извучен?¶
Листа садржи бројеве извучене у лото извлачењу. Напиши програм који за дати број проверава да ли је био извучен.
brojevi = [3, 4, 17, 21, 23, 27, 33]
broj = int(input("Unesi broj: "))
# dovrši program
(Лото_бројеви)
Да ли је просек ближи најмањем или највећем елементу листе?¶
Напиши програм који за дату листу бројева одређује да ли је просек те листе ближи најмањем или највећем њеном елементу или је подједнако удаљен од њих.
lista = [48, 53, 26, 71, 83]
prosek = 0 # ispravi ovaj red
najmanji = 0 # ispravi ovaj red
najveci = 0 # ispravi ovaj red
if True: # ispravi ovaj uslov
print("Ближи је најмањем")
elif True: # ispravi ovaj uslov
print("Ближи је највећем")
else:
print("Подједнако је удаљен")
(просек_ближи)
Најјефтинији за динар¶
Дате су цене три производа. Ко купи сва три, најјефтинији ће добити за динар. Колико ће платити?
Један начин је да сортирамо листу од три цене тако да цене у листи буду уређене од најмање до највеће, а затим да први елемент листе (цену најјефтинијег производа) заменимо са 1 и на крају саберемо елементе листе. Нагласимо да, пошто желимо да променимо цену неког производа, морамо употребити листу, а не торку.
cene = [1420, 1799, 1569]
cene_po_redu = sorted(cene)
??? # cenu najjeftinijeg proizvoda postavljamo na dinar
print(???) # ispisujemo zbir elemenata promenjene liste
(најјефтинији_за_динара_1)
Рецимо и да смо задатак могли решити и без сортирања, тако што бисмо од укупне цене сва три производа одузели цену најјефтинијег производа, па добијени износ увећали за један динар.
cene = [1420, 1799, 1569]
print(???)
(најјефтинији_за_динар_2)
Ниске¶
Дужа ниска¶
Напиши програм у којем се учитавају две ниске и исписује дужина дуже од њих.
niska1 = input()
niska2 = input()
duzina_duze = 0 # ispravi ovaj red
print(duzina_duze)
(дужина_дуже_ниске)
Број самогласника¶
Напиши програм који учитава неки и затим пребројава колико у њему има самогласника (претпоставити да се текст састоји само од малих слова латинице).
tekst = input()
broj_samoglasnika = tekst.count("a") # doupni ovaj red
print(broj_samoglasnika)
(број_самогласника_ниске)
Позив на број¶
Сваки корисник система обједињене наплате рачуна приликом уплате
наводи позив на броју. Тај позив се састоји од цифара. Прве две
цифре су ознака месеца за који се уплаћује, наредне четири ознака
године, а наредних шест су идентификација корисника. На пример,
032018742562
значи да корисник са бројем 742562
уплаћује
рачун за март 2018. године. Напиши програм који за унети позив на
број исписује месец, годину и идентификацију корисника.
poziv_na_broj = "032018742562"
mesec = poziv_na_broj[0:2]
godina = "" # ispravi ovaj red
identifikacija = "" # ispravi ovaj red
print(mesec, godina, identifikacija)
(позив_на_број)
Декодирање студентског индекса¶
Сваки студент на факултету има свој број индекса. На пример,
бројеви индекса су 123/2017
, 421/2016
или 12/2015
.
Дефиниши функцију која за дати број индекса у облику ниске одређује
редни број студента и годину његовог уписа (у облику бројева).
def rasclani_indeks(indeks):
# ispravni naredni kod
redni_broj = ""
godina_upisa = ""
return (redni_broj, godina_upisa)
(делови_индекса)
Сакривање слова¶
Напиши програм у којем се уноси реч од бар 5 слова и исписује се
реч која се добија kада се њена прва два и последња два слова
замене са __
. Нпр, за унето petlja
исписује се __tl__
.
rec = input()
print() # dopuni ovaj red
(реч_са_доњим_цртама)
Нинџа-корњача¶
Нинџа-корњача се креће кроз лавиринт тако што слуша упутства на тајном језику. Горе се на том језику каже rif, доле el, лево oma, а десно lun. Напиши програм који помаже корњачи да пронађе излаз из лавиринта.

gore = "rif"
dole = "el"
levo = "oma"
desno = "lun"
put = (gore + desno) * 3 + desno * 3 + "" # popravi ovaj red
print(put)
(корњача_језик)
Упутство за корњачу је:
Робот у лавиринту¶
Робот се у просторији креће на основу задатог упутства. Упутство је
низ команди Горе, Доле, Лево и Десно (на пример, uputstvo = "Горе
Лево Лево Десно Лево Доле Горе Доле Горе Десно Горе"
). У сваком
кораку он се помера за једно поље. Поља квадратног облика су
поређана као поља на шаховској табли и свако поље има свој број
врсте и колоне. Централно поље у просторији је обележено са (0, 0),
и од њега бројеви врста и колона расту на доле и на десно, а
опадају на горе и на лево (као што је приказано на слици). Одреди
на ком пољу ће се налазити робот након извшавања команди.

Задатак можемо најлакше решити тако што одредимо колико пута се робот померио у сваком од четири смера. Број врсте у којој се налази на крају ће бити разлика између броја корака које је направио на доле и броја корака које је направио на горе, док ће број колоне бити разлика између броја корака које је направио на десно и броја корака које је направио на лево.
Исправе означене редове у наредном програму. Робот на крају завршава на пољу (-2, -1).
uputstvo = "Горе Лево Лево Десно Лево Доле Горе Доле Горе Десно Горе"
gore = uputstvo.count("Горе")
dole = 0 # ispravi ovaj red
levo = 0 # ispravi ovaj red
desno = 0 # ispravi ovaj red
vrsta = dole - gore
kolona = 0 # ispravi ovaj red
print(vrsta, kolona)
(бројање_команди)
Скупови¶
Панграми¶
Панграми су реченице које садрже сва слова неке абецеде или азбуке. Пожељно је да панграми буду што краћи. Панграми се обично користе да би се приказали фонтови на рачунарима (јер корисник кроз веома кратак текст може видети како изгледају сва слова). Најчувенији панграм на енглеском језику је the quick brown fox jumps over the lazy dog. Неки од панграма на српском језику су и следеће реченице:
Фијуче ветар у шибљу, леди пасаже и куће иза њих и гунђа у оџацима.
Ниџо, чежњиво гледаш фотељу, а Ђура и Мика хоће позицију себи.
Дебљој згужвах смеђ филц — њен шкрт џепчић.
Напиши програм који за дату реченицу проверава да ли је панграм тако што исписује број различитих слова која се у њој јављају.
Дефинисаћемо скуп малих слова ћирилице и пронаћи ћемо пресек тог скупа
и скупа слова која се јављају у реченици (у којој су помоћу метода
lower()
сва слова претворена у мала).
recenica = "Фијуче ветар у шибљу, леди пасаже и куће иза њих и гунђа у оџацима."
slova = set("абвгдђежзијклљмнњопрстћуфхцчџш")
slova_u_recenici = ???
print(len(slova_u_recenici))
(панграми)
Речници¶
Испиши главни град¶
У речнику су задати главни градови неколико држава. Напиши програм који за унету државу исписује главни град или пријављује да град те државе није познат на основу података у речнику.
glavni_grad = {"Србија": "Београд", "Хрватска": "Загреб", "Црна Гора": "Подгорица"}
drzava = input("Унеси назив државе: ")
if True: # ispravi ovaj red
print() # ispravi ovaj red
else:
print("Није познат главни град државе " + drzava)
(Главни_градови)
Петље¶
Сви префикси¶
Напиши програм који исписује све почетне делове речи која се уноси
са улаза. На пример, ако је реч petlja
, програм ипсисује
p
, затим pe
, pet
, petl
, petlj
и на крају
petlja
.
# dopuni naredni kod
rec = ???("Unesi reč:")
for i in range(???):
print(rec[???:???])
(сви_префикси)
Сваки елемент листе у посебном реду¶
Направи листу која садржи имена твојих омиљених певача, певачица или група, а затим у петљи испиши њене елементе, сваки у посебном реду.
# dopuni naredni program
muzicari = []
for ???
print()
(певачи)
Просеци свих ученика¶
Дата је листа која за сваког ученика садржи име, презиме и листу оцена из програмирања. Напиши програм који исписује име и презиме сваког ученика, затим његов просек оцена, а затим и сваку оцену у посебном реду.
ucenici = [("Pera", "Perić", [3, 4, 4, 3, 5]),
("Marija", "Marjanović", [5, 5, 5, 4, 5])]
for (ime, prezime, ocene) in ???: # dopuni ovaj red
print(ime, prezime, ???) # dopuni ovaj red
for ??? in ???: # dopuni ovaj red
print(ocena)
(оцене)