Professional Documents
Culture Documents
Листе
Запитајмо се како бисмо у програму могли представити списак имена кошаркаша у једном тиму?
Нека је то наша кошаркашка репрезентација која је 2016. играла на Олимпијади.
Претпоставићемо да сваки играч има свој редни број и то од 1 до 12.
Међутим, оваква репрезентација података није згодна јер не можемо једноставно да одговоримо на
разна интересантна питања о кошаркашима (на пример, колико укупно има играча, ко носи број који
се уноси са улаза, који број носи неки дати играч и слично).
Елементи листе могу бити ниске (као у овом примеру), али и бројеви, друге листе и било шта друго.
Чак је могуће у исту листу поставити елементе различитог типа (додуше, то нећемо често
користити).
85
Као пример листе бројева, формирајмо листу висина ових кошаркаша.
Листу дефинишемо тако што између угластих заграда (заграда [ и ]) наводимо елементе раздвојене
зарезима.
Приметимо да је ова листа имена кошаркаша била веома дугачка, тако да смо је прегледности ради
разбили у више редова (зато смо на крају редова који се настављају морали навести косе црте \).
Листа висина је била краћа (јер поједини кошаркаши имају исту висину, па је то онда једна вредност
уместо две, три...), па смо све елементе навели у истом реду.
Начин да се избегне ово померање индекса за 1 био би да се у листу путника на почетно место
убаци неки вештачки елемент (на пример, празна ниска).
igraci = ["", "Стефан Јовић", "Марко Симоновић", "Богдан Богдановић",...
86
Играчи са датим бројевима дреса
1. Испиши имена играча са бројевима дреса 2, 3 и 4, као и име играча који има највећи број дреса у
тиму.
Помоћ:
Када би се дресови бројали од 0, као што се броје индекси листе, потребно би било издвојити
елементе у распону [2:5] (то обухвата тачно индексе 2, 3 и 4). Пошто се места броје од 1, потребно
је вредности наведене у распону умањити за 1 тј. употребити распон [1:4].
Последњи играч тј. последњи елемент листе се увек налази на позицији -1.
Стефан Бирчевић.
87
Играчи са датим бројевима дреса
2. Ако је на прво место у листи играча уписана празна листа, напиши програм који одређује
играче са бројевима 7, 8 и 9, као и претпоследњег играча у тиму.
88
Претрага листе
Проналажење најмање позиције (индекса) на којој се налази неки тражени елемент може се урадити
коришћењем методе index, као што је то приказано у наредном задатку.
Кроз овај задатак можемо илустровати претрагу листе, тј. проналажење индекса (позиције) у листи на
којој се налази тражени елемент.
Један начин да се то уради је помоћу методе index која враћа индекс првог појављивања траженог
елемента тј. проузрокује грешку ако се тај елемент не налази у листи.
(Подсетимо се, индекси се броје од 0), а то онда значи:
- ако листу не допунимо празним елементом на позицији 0, пошто се на пример у авиону
седишта броје од 1, а индекси од 0, пронађени индекс је тада потребно увећати за 1.
89
Путници на датим седиштима у авиону
Ево једног веома сличног задатка за вежбу.
Познат је списак имена путника у авиону. Седишта су нумерисана од 1 па надаље. Ако стјуардеса унесе број
седишта, напиши програм који одређује име путника на том седишту. Након тога испиши имена путника
која седе на прва четири, као и на последња два седишта, као и број седишта на којем седи Мика Микић.
Да бисмо олакшали бројање, на првом месту у листи је постављен вештачки елемент (празна листа).
90
91
Функције за рад са листама
Функцијом len израчунавамо дужину листе,
функцијом sum израчунавамо збир елемената листе,
функцијом min најмањи елемент у листи, а
функцијом max највећи.
Ове функције можемо употребити да једноставно решимо разне практичне задатке.
Просечна оцена
Победнички скок
92
Најмања оцена
Ако се зна да су оцене из природних наука последње три у листи оцена, израчунај Горанову најмању оцену
из тих предмета.
Распон температура
Време се често мења и дешава се да се у једној недељи смењују и хладни и топли дани. Ако су дате су
температуре у подне у данима током једне недеље, одреди колики је распон температура тј. разлика
између највише и најниже подневне температуре.
Надовезивање листи
Две листе можемо надовезати (спојити у једну) коришћењем операције + (као код надовезивања
ниски тј. стрингова).
93
Сортирање листе
Елементе листе је веома једноставно уредити од најмањег до највећег (па и обратно, од највећег до
најмањег).
Најјефтинији за динар
Дате су цене три производа. Ко купи сва три, најјефтинији ће добити за динар. Колико ће платити?
Помоћ:
Један начин је да сортирамо листу од три цене тако да цене у листи буду уређене
од најмање до највеће, а затим да први елемент листе (цену најјефтинијег производа)
заменимо са 1 и на крају саберемо елементе листе.
94
Три најјефтинија и најскупља производа
Дата је листа цена производа. Колико коштају три најјефтинија, а колико три најскупља производа?
95
Распакивање листе
Ако знамо дужину листе, могуће је на лак начин именовати сваки њен елемент тј. сместити сваки
елемент у посебну променљиву.
На пример, претпоставимо да листа математичари садржи пуна имена четири велика математичара:
Ренеа Декарта, Жозефа Луја Лагранжа, Карла Фридриха Гауса и Леонарда Ојлера.
Направимо четири посебне променљиве dekart, lagranz, gaus и ojler које ће садржати пуна имена
одговарајућих математичара.
онда се првој променљивој са леве стране додељује први елемент листе са десне стране,
96
Скупови
Ако знамо имена свих фудбалера који су давали голове током једне ревијалне утакмице и то редом,
како су давали голове можемо једноставно одредити скуп свих фудбалера који су се уписали у листу
стрелаца.
Наиме, ако формирамо скуп на основу имена стрелаца аутоматски ће бити уклоњени дупликати.
Скуп дефинишемо тако што између витичастих заграда (заграда { и }) наводимо елементе раздвојене
зарезима.
Елементи скупа у наредном примеру су биле ниске тј. стрингови, а можемо разматрати и скупове
елемената другог типа (на пример, скупове бројева).
Скуп од листе/ниске
Ако су елементи скупа чланови неке листе, можемо лако од листе добити скуп (коришћењем
функције set као у следећем програму).
И од ниске тј. стринга можемо једноставно добити скуп карактера које она садржи (опет помоћу
функције set).
97
Скуповне операције
У језику Python можемо веома једноставно израчунати унију, пресек и разлику скупова.
Ако су A и Bскупови, онда је:
A | B њихова унија,
A & B њихов пресек, а
A - B њихова разлика.
Провери да ли се сећаш ових операција из математике тако што ћеш решити наредни тест.
Ако је A = {3, 6, 7}, а B = {3, 4, 5}, повежи скуповне операције са њиховим резултатима.
98
Сугласници
Сугласници се по месту изговора могу бити:
предњонепчани (Ј, Љ, Њ, Ћ, Ђ, Ш, Ж, Ч, Џ) и задњонепчани К, Г, Х.
Поправи наредни код тако да исправно решава овај задатак. Програм након покретања треба да
испише наредне резултате.
99
Панграми
Панграми су реченице које садрже сва слова неке абецеде или азбуке. Пожељно је да панграми буду што
краћи. Панграми се обично користе да би се приказали фонтови на рачунарима (јер корисник кроз веома
кратак текст може видети како изгледају сва слова). Најчувенији панграм на енглеском језику је the quick
brown fox jumps over the lazy dog. Неки од панграма на српском језику су и следеће реченице:
Фијуче ветар у шибљу, леди пасаже и куће иза њих и гунђа у оџацима.
Ниџо, чежњиво гледаш фотељу, а Ђура и Мика хоће позицију себи.
Дебљој згужвах смеђ филц — њен шкрт џепчић.
Напиши програм који за дату реченицу проверава да ли је панграм тако што исписује број различитих
слова која се у њој јављају.
Дефинисаћемо скуп малих слова ћирилице (помоћу set ) и пронаћи ћемо пресек тог скупа и скупа
слова која се јављају у реченици (у којој су помоћу lower() сва слова претворена у мала).
100
Торке
Неколико појединачних података можемо груписати коришћењем уређених парова или уређених
n-торки.
На пример, позицију фигуре на шаховској табли можемо представити помоћу уређеног пара који чини
ознака врсте (слова од a до h) и ознака колоне (броја од 1 до 8). На пример, ("b", 6).
Слично, позиције на географској карти се описују помоћу географске ширине и дужине тј. помоћу пара
реалних бројева. Тако се град Париз налази на позицији која се може описати помоћу
пара (48.8566,2.3522).
Време можемо представити помоћу уређене тројке коју чине сат, минут и секунд (на
пример, (7, 25, 37)).
Географске координате
Уређени пар садржи географске координате града Париза. Напиши програм који одређује и посебно
исписује његову географску ширину и географску дужину.
101
Коришћењем распакивања, претходни задатак смо могли да решимо и на следећи начин.
102
Враћање торки из функције
Као што смо већ раније поменули, торке могу бити веома корисне да би се вратило више вредности из
функције. Размотримо наредни пример.
103
Листе торки
Торке могу да буду елементи листе. Направимо, на пример, листу која садржи податке о месецима
током једне године која није преступна. За сваки месец знамо назив и број дана и те податке ћемо
организовати помоћу уређене двојке (на пример, ("април", 30)).
Дани у месецу
Решење:
104
Речници
Листе нам дају могућност да организујемо податке за које је познат неки редослед и у којима сваки
податак има свој редни број (на пример, листу смо употребили да организујемо имена путника у
авиону или податке о месецима у години) и приступ елементима листе врши се на основу њиховог
индекса (редног броја, тј. позиције).
Међутим, често подаци представљају неко пресликавање у којем на основу датог кључа желимо да
приступимо вредности која је придружена том кључу.
На пример:
- на основу шифре производа приступамо његовој цени,
- на основу ЈМБГ грађана приступамо његовом имену,
- на основу броја банковног рачуна приступамо салду (износу новца) на том рачуну и слично.
У тим ситуацијама уместо листе много је боље користити речнике
(каже се и мапе или асоцијативне низове).
Кључна одлука за ефикасно решење овог задатка је да каталог цена аутомобила представимо помоћу
речника.
Поправи наредни програм тако што ћеш попунити речник одговарајућим паровима сугласника. Ако
све урадиш како треба, требало би да добијеш 7 зелених поља (сваки сугласник мора да прође тест).
Користи велика слова ћирилице.
106
Географске координате градова
Познате су географске координате неколико главних европских градова. За дато име града одреди њене
географске координате. Одреди посебно географску дужину и посебно географску ширину.
107
Структуре података – задаци
1. Просечна висина у разреду
Решење:
108
3. Сортирање тенисера по АТП листи
Решење:
Решење:
109
5. Листа која на основу унетог имена земље исписује њена три највећа града
Решење:
110
6. Одређивање броја дана у том месецу на основу унетог имена месеца
Решење:
111
7. Одређивање укупног броја дана у било ком унетом месецу на основу унете календарске
године ( програм треба да се побрине за проблем одређивања да ли је та година преступна
или није)
Решење:
112
113