18: Методе


До сада смо видели пар структура података у Python-у: стрингове, листе... Оба користе неколико метода, које представљају варијанте функција.

На пример, једна метода коју користе листе је метода reverse(). Као што јој име каже, она преокреће листу (први члан постаје последњи и обрнуто). Метода се позива употребом тачке (.) као овде:

 

«imeObjekta».«imeMetode»(«lista argumenata (ako ih ima)»)

 

Ради поређења, синтакса коју смо користили за позивање функције је била

 

«imeFunkcije»(« lista argumenata (ako ih ima)»)

 

Ево примера позивања методе reverse у листи.

 

Пример: Преокретање листе

 

 

РАЗНЕ МЕТОДЕ

 

Сада ћемо поменути најчешће методе за стрингове и листе. Оне најчешће извршавају задатке које бисте могли и сами да напишете, али ће овако код бити читљивији и краћи.

 

Листе

 

Ове методе не мењају листу:

 

  • index(X): одређује где се налази X у листи. Тачније, враћа индекс i, такав да је lista[i]==X. Ако у листи постоји више елемената који су једнаки X, враћа се најмањи могући индекс i. Ако X не постоји у листи, добија се грешка (ValueError).
  • X in lista враћа True ако је X елемент листе, иначе враћа False. Овим се може избећи грешка (ValueError). Приметићете да је in оператор, а не метода.
  • count(X): враћа број који показује колико се пута X појављује у листи

 

Пример: Метода листе

 

Ове методе мењају листу:

 

  • lista.append(X) додаје X на крај листе lista
  • lista.insert(i, X) додаје X на позицију i
  • lista.extend(L) додаје листу L на крај листе lista, надовезује је
  • lista.remove(X) уклања прво X
  • lista.pop(i) брише и враћа члан lista[i], док lista.pop() брише и враћа последњи члан
  • del lista[i] брише i-ти члан листе lista (Приметићете да је del наредба, а не метода)
  • lista.reverse() преокреће листу
  • lista.sort() сортира листу

 

Пример: проширење
проширење првог низа (1,2,3) елементима из другог низа (4,5,6)

 

Ево још једног урађеног примера:

 

Пример: стринг команде
Имамо задат низ речи 'Ana','voli','Milovana'.

a)Одредити индекс речи 'voli'.
б)уметнути рeч 'samo' у низ, на трећу позицију
в) избрисати другу реч из низа
г) обрнути редослед речи у низу

 

Вежба кодирања: Сортирање
сортирати дати низ командом sort(). Исписати сортиран низ. Затим одредити трећи елемент сортираног низа
Можете унети улаз за програм у поље испод.

 

Вежба кодирања: Замене
Користећи index и друге методе листи, написати функцију zameni(lista, X, Y) која замењује свако X у листи lista са Y. На пример, ако је L=[3, 1, 4, 1, 5, 9], онда би zameni(L, 1, 7) променило L у[3, 7, 4, 7, 5, 9]. Пробајте да урадите задатак без коришћења []. Cавет
Унесите код за тестирање као што је print(myfunction("test argument")) испод.

 

Стрингови

 

Као и са листама, са стринговима можете да користите команде in, index и count. Те методе раде и са подстринговима, а не само са појединачним карактерима:

 

  • S in T je bool вредност која показује да ли је S подстринг стринга T
  • index(T) проналази индекс првог карактера подстринга Т при првом његовом појављивању у стрингу S
  • count(T) даје број непреклопљених појављивања T као подстринга S

 

Пример: Позивање index и count у стринговима

 

Ево најчешће употребљаваних стринг метода:

 

  • Велика и мала слова: capitalize, lower, upper, islower, isupper
  • Карактери: isalpha, isdigit
  • Центрирање: center, ljust, rjust
  • Подстрингови: endswith, startswith, find, replace
  • Парсирање: split, splitlines

 

Поменули смо методу list.reverse(), која мења листу тако што је преокреће, али не постоји метода str.reverse (). То је зато што чланови стринга не могу да се мењају након што се напрaвe.

 

S.replace (stari, novi) враћа измењену верзију S-a, где се сваки подстринг stari мења са novi. То ствара нови стринг без мењања старог:

Пример: пребацивање целог текста у мала слова

 

Пример: replace
replace враћа нов стринг и не мења оригинал.
Вежба кодирања: Kонвертер температуре

У овом задатку ћете направити конвертер температуре који ће претварати вредности из Фаренхајта у Целзијус и обрнуто. Биће вам потребне две формуле које повезују температуру f у Фаренхајтима и температуру c у Целзијусима:

\displaystyle{f = c \times \frac{9}{5} + 32} c=(f-32)\times \frac { 5 }{ 9 }

Улаз ће бити стринг који се састоји од реалног броја, за којим следи слово F или C, попут „13.2C“. Треба да претворите у другу температурну јединицу и одштампате претворену вредност у истом формату. На пример, ако је улаз „8F“, онда излаз треба да буде „-13.333C“, а ако је улаз „12.5C“, онда би излаз требало да буде „54.5F“.

Можете унети улаз за програм у поље испод.

 

 

У наредној вежби употребите методу string.split(), која уклања размак из речи и враћа листу речи које садржи, и string.lower(), која пребацује стринг у мала слова. На пример,

 

  • "Razdvoj bre ove reci!".split() враћа листу ["Razdvoj", "bre", "ove", " reci!"]
  • "MALAslova".lower() враћа "malaslova"


Вежба кодирања: Песничка анализа
Пoзната песникиња Стоја ради на својој најновијој песми “Лила, лила”. Замолила вас је да одредите која се реч највише понавља у њој. Можете да приступите стиховима песме позивањем input () колико год пута желите, а последњи стих садржи три карактера ###. Један input() је један стих. Сви стихови садрже речи одвојене једним размаком; нема цифара, нити интерпункције. Пребаците све речи у мала слова и одштампајте реч која се највише понавља. На пример, ако је улаз

Meni je s tobom lila lila sve
A tebi sa mnom ah le le le
###

Онда излаз треба да буде

“le”

јер се појављује трипут, а ниједна друга реч се не појављује трипут (или више).
Можете унети улаз за програм у поље испод.