You are on page 1of 46

Programiranje

String
Smjer: Održavanje računalnih sustava
Nastavnik: Vladimir Bralić pred., mag. inf.

Akademska godina 2019./2020.


Podatkovni tip str
• String je tip podataka koji >>> a="dobro jutro"
>>> a='dobro jutro'
predstavlja niz znakova, npr.
>>> a=str(5)
“dobro jutro”.
>>> a=input()
dobro jutro
• Stringovi su gotovo uvijek
omeđeni jednostrukim ili >>> type(a)
dvostrukim navodnicima. <class 'str'>
Podatkovni tip str(2)
• Kao i lista i n-torka string je sekvenca, tj. niz, članova.

• U slučaju stringa svaki znak (slovo, brojka, razmak,


interpunkcijski ili posebni) je jedan član.

• U većini slučajeva stringovi se ponašaju kao i liste. Npr.


mnoge funkcije koje rade na listama rade i na stringovima.

• Upotrebom petlji na isti način kao i kroz listu možemo proći


kroz članove stringa.

• Indeks liste i stringa rade na isti način.


String - indeks
• Svaki znak u stringu označen je indeksom. Indeks je
cijeli broj preko kojega možemo referencirati
individualne znakove u stringu.

• Indeks prvog znaka je broj 0 a svaki naredni znak ima


indeks uvećan za 1.

• Individualni znakovi se preko indeksa referenciraju


upotrebom sljedeće sintakse:

imeStringa[indeksZnaka]
String – indeks (2)
>>> string='Dobar dan!' >>> string[3]
>>> string[0] 'a'
'D' >>> string[4]
'r'
>>> string[1]
>>> string[5]
'o' ' '
>>> string[2] >>> string[6]
'b' 'd'
String – indeks (3)
• Indeks može imati negativni predznak. U ovom
slučaju referenciramo znak koji je za broj mjesta u
indeksu udaljen od kraja stringa.
>>> string
'Dobar dan!'
>>> string[-1]
'!'
>>> string[-2]
'n'
>>> string[-3]
'a'
String – indeks (4)
• Indeks može biti i dva cijela broja odvojena
dvotočkom [x:y]. U ovom slučaju indeks označava
raspon koji referenciramo i zovemo ga isječak.
>>> string
'Dobar dan!'
>>> string[0:5]
'Dobar'
>>> string[6:10]
'dan!'
>>> string[6:9]
'dan'
String – indeks (5)
• Raspon u indeksu može biti izražen samo sa jednim
brojem, npr.: [:3] ili [2:]. U prvom slučaju
referenciramo sve znakove od nultog do trećeg a u
drugom sve znakove od drugog do zadnjeg.

>>> string
'Dobar dan!'
>>> string[:5]
'Dobar'
>>> string[6:]
'dan!'
Stringovi i operatori
• Operator konkatencaije ili spajanja: +
• Spaja dva ili više stringova. Oba operatora moraju biti klase str.

>>> a="Ana"
>>> b="Iva"
>>> a+b
'AnaIva'
• Operator repeticije ili ponavljanja: *
• Ponavlja string x puta. Lijevi operator mora biti klase str a desni
int.
>>> a="Ana"
>>> a*4
'AnaAnaAnaAna'
Stringovi i operatori (2)
• Operator uspoređivanja (pripadnosti): in
• in operater uspoređivanja provjerava je li neki znak
dio nekog stringa. Rezultat je bool vrijednost
(true/false).
• Sintaksa je:
znak in string >>> a
'Ana'
>>> "a" in a
True
>>> "n" in a
True
Posebni znakovi u stringovima
• Posebni znakovi u stringu su znakovi koji nose neko
posebno značenje pri ISPISU stringa (funkcija print)
i zapisu u datoteku. Svi posebni znakovi počinju sa
znakom \ (engl. backslash, escape character).

• Mi ćemo spomenuti samo dva, često korištena pri


oblikovanju stringa, posebna znaka:
• \n – newline, ovaj znak je ekvivalentan tipki enter, tj.
prebacuje daljnji ispis u idući red.
• \t - tab, ovaj znak je ekvivalentan tipki tab, tj. prebacuje
kursor na položaj idućeg tabulatora.
Posebni znakovi u stringovima (2)
>>> a="prvi red \ndrugi red \ntreci red"
>>> a
'prvi red \ndrugi red \ntreci red'
>>> print (a)
prvi red
drugi red
treci red

>>> a="var:\ta\tb\nval:\t3\t1"
>>> a
'var:\ta\tb\nval:\t3\t1'
>>> print (a)
var: a b
val: 3 1
Mijenjanje stringova
• U Pythonu stringovi su nepromjenjivi. Pod ovim
podrazumijevamo promjene individualnih znakova.
Cijelu varijablu je, naravno, moguće promijeniti.
• Ovo znači da promjene u stringovima ostvarujemo
stvaranjem novog stringa.

>>> a="Ana" >>> b="B"+a[1:]


>>> a[0] >>> b
'A' 'Bna'
>>> a[0]="B"
Traceback (most recent call >>> b="Matko"
last): >>> b
File "<pyshell#151>", line 1, 'Matko'
in <module>
a[0]="B"
TypeError: 'str' object does
not support item assignment
Funkcija len
• Funkcija len vraća „dužinu” stringa tj. broj znakova
u stringu. Ova funkcija je posebno korisna kada
želimo kroz proći kroz znakove u stringu upotrebom
while petlje.

>>> a
'Ana'
>>> len(a)
3
Metode stringa
• Kao i u slučaju metodi liste (npr. append ili sort)
metode se pozivaju tako da ih navedemo iza imena
stringa.

ImeStringa.ImeMetode(parametriMetode)

• Metode mogu ali ne moraju primati parametre ali


su uvijek popraćene zagradama.
Metoda startswith
• Provjerava počinje li string s znakom ili stringom koji je
parametar metode. Sintaksa je:

string.startswith(str,[pocetak],[kraj])

• Parametri [pocetak] i [kraj] su opcionalni cijeli brojevi.


U slučaju da se predaje i [pocetak] i/ili [kraj] pretražuje
se samo isječak stringa.

• Metoda vraća bool vrijednost (true ili false)


Metoda startswith(2)

>>> a="Dobar dan!"


>>> a.startswith("d")
False
>>> a.startswith("D")
True
>>> a.startswith("dan")
False
>>> a.startswith("dan",6)
True
Metoda endswith
• Provjerava završava li string sa znakom ili stringom
koji je parametar metode. Sintaksa je:

string.startswith(str,[pocetak],[kraj])

• U slučaju da se predaje i [početak] i/ili [kraj]


pretražuje se samo isječak stringa.

• Metoda vraća bool vrijednost (true ili false).


Metoda endswith (2)

>>> a="Dobar dan!"


>>> a.endswith("!")
True
>>> a.endswith("r")
False
>>> a.endswith("r",0,5)
True
Metoda upper
• Mijenja sva slova u stringu iz malih u velika.
Sintaksa je:
string.upper()

>>> a
'Dobar dan!'
>>> a.upper()
'DOBAR DAN!'
Metoda lower
• Mijenja sva slova u stringu iz velikih u mala.
Sintaksa je:
string.lower()

>>> a
'Dobar dan!'
>>> a.lower()
'dobar dan!'
Metoda split
• Dijeli string u više manjih stringova, granica dijeljenja je
string ili znak predan u parametrima. Sintaksa je:

string.split(granicniZnak,[maxBrojPodjela])

• Ako je predan maksimalni broj podjela granični znakovi


nakon maksimuma će se zanemariti.

• Ukoliko nije metodi nije predan granični znak, granica će biti


razmak.

• Metoda rezultira listom stringova.


Metoda split (2)
>>> a
'Dobar dan!'
>>> a.split()
['Dobar', 'dan!']
>>> a.split("a")
['Dob', 'r d', 'n!']
>>> a.split("a",2)
['Dob', 'r d', 'n!']
>>> a.split("a",1)
['Dob', 'r dan!']
Metoda replace
• Mijenja sve pojave predanog parametra s novim
parmetrom. Stinkasa je:

string.replace(stariString, noviString, [maxBrojIzmj])

• U slučaju da je predan i maksimalni broj zamjena,


pronađeni stringovi nakon ostvarenog maksimalnog
broja izmjena se zanemaruju.
Metoda replace (2)

>>> a
'Dobar dan!'
>>> a.replace("a","e")
'Dober den!'
>>> a.replace("a","e",1)
'Dober dan!'
>>> a.replace("ar","erman")
'Doberman dan!'
Metoda strip
• Metoda briše početne i zadnje znakove u stringu
ako odgovaraju predanom parametru. Sintaksa je:

string.strip([znakoviKojiSeBrisu])

• U slučaju da nije predan parametarski string brišu


se razmaci s početka i kraja.
Metoda strip (2)
>>> a
' Dobar dan '
>>> a.strip()
'Dobar dan'
>>> b
'DDobar danD'
>>> b.strip("D")
'obar dan'
Metoda count
• Broji koliko se puta predani parametar pojavljuje u
stringu. Sintaksa je:

string.count(stringKojiSeTrazi)

>>> a
'Dobar dan'
>>> a.count('a')
2
Metoda find
• Provjerava pojavljuje li se predani parametar u stringu.
Sintaksa je:

string.find(stringKojiSeTrazi,[pocetak],[kraj])

• Ako su predani početak i kraj pretražuje se samo


iskječak stringa.
• Metoda vraća indeks na kojem traženi string počinje.
• U slučaju da string nije nađen metoda vraća -1.
Metoda find (2)
>>> a
'Dobar dan'
>>> a.find('a')
3
>>> a.find('da')
6
>>> a.find('jutro')
-1
>>> a.find('a',6,10)
7
Metoda index
• Radi isto kao i metoda find. Ali vraća grešku ako ne
nađe traženi string. Sintaksa je:

string.index(stringKojiSeTrazi,[pocetak],[kraj])

>>> a
'Dobar dan'
>>> a.index('a')
3
Metoda isalnum
• Provjerava sastoji li se string samo od slova i brojki.
Sintaksa je:
string.isalnum()
• Metoda vraća bool vrijednost.
>>> b
'Sretni5'
>>> b.isalnum()
True
>>> c
'DobarDan!'
>>> c.isalnum()
False
Metoda isalpha
• Provjerava sastoji li se string samo od slova.
Sintaksa je:
string.isalpha()
• Metoda vraća bool vrijednost.
>>> a
'Dobar dan'
>>> a.isalpha()
False
>>> a="DobarDan"
>>> a.isalpha()
True
Metoda isdigit
• Provjerava sastoji li se string samo od brojki.
Sintaksa je:
string.isdigit()
• Metoda vraća bool vrijednost.

>>> a
'Dobar3'
>>> a.isdigit()
False
>>> a="23"
>>> a.isdigit()
True
Metoda isupper
• Provjerava sastoji li se string samo od velikih slova.
Sintaksa je:
string.isupper()
• Metoda vraća bool vrijednost.

>>> a='DOBARDAN'
>>> a.isupper()
True
Metoda islower
• Provjerava sastoji li se string samo od malih slova.
Sintaksa je:
string.islower()
• Metoda vraća bool vrijednost.

>>> a
'DOBARDAN'
>>> a.islower()
False
Metoda isspace
• Provjerava sastoji li se string samo od razmaka.
Sintaksa je:
string.isspace()
• Metoda vraća bool vrijednost.

>>> a
' '
>>> a.isspace()
True
Metoda join
• Spaja niz stringova u jednistveni string. String nad
kojim je pozvana metoda postaje separator za
perdane stringove. Sintaksa je:
string.join(niz)
• Metoda vraća string vrijednost.
>>> " ".join(["1","2","3",str(4),str(5)])
'1 2 3 4 5'
Metoda join (2)
• Ako je join metodi predan samo jedan string ona će
ga tretirati kao niz, tj. sve znakove u predanom
stringu će odvojiti sa stringom nad kojim je
pozvana.

>>> a=" separator "


>>> b="NIZ"
>>> a.join(b)
'N separator I separator Z'
1. zadatak
Napišite program koji s tipkovnice učitava ime grada.
Program ime sprema u novu varijablu kojoj na
početak dodaje „grad „ i ispisuje rezultat.
2. zadatak
Napišite program koji upotrebom input naredbe
učitava dva cijela broja sa tipkovnice. Program
provjerava jesu li zaista uneseni brojevi te ako jesu ih
zbraja i ispisuje rezultat. U suprotnom program
ispisuje obavijest o grešci.
3. zadatak
Napišite program koji sa tipkovnice učitava string.
Program mora prebrojati koliko u stringu ima malih
slova engleske abecede.
4. zadatak
Napišite program koji će pomoći pri evidenciji
uzvanika na neki događaj. Program omogućava
korisniku da unosi imena gostiju dok ne unese riječ
"kraj". Program provjerava imena gostiju,
zanemaruje goste čija imena se sastoje od znakova
koji nisu slova ili razmaci te briše vodeće i prateće
razmake.

Kada je unesen kraj program prestaje sa izvršavanjem


i ispisuje listu gostiju. Pri ovom ispisu svaki gost mora
biti ispisan u novom redu.
5. zadatak
Nadogradite prethodni zadatak tako da u slučaju da
ime ili prezime gosta počinje malim slovom program
ispravi grešku i promjeni početna slova u velika.
6. zadatak
Nadogradite prethodni zadatak tako da nakon kraja
unosa program ispiše tablicu s odvojenim imenima i
prezimenima gostiju.
Hvala na pažnji!

Pitanja?

You might also like