$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

Tekstualne vrednosti

Pored celih i realnih brojeva, jedan od osnovnih tipova podataka u programiranju je tekst. Tekstualni podaci se nazivaju niske ili stringovi. U njima pored slova mogu da se nađu i svi ostali znaci koji se koriste u tekstu: interpukcija, zagrade, cifre, znaci matematičkih operacija, razni specijalni znaci poput %, $, ^, & itd. Svi ovi znaci koji mogu da se pojave u tekstu nazivaju se karakteri.

Tekstualne vrednosti se pišu između navodnika. Tekst pod navodnicima zovemo tekstualna konstanta ili literal. U pajtonu mogu ravnopravno da se koriste jednostruki '...' i dvostruki "..." navodnici (važno je samo da su na početku i na kraju stringa navodnici iste vrste). Na primer:

s1 = 'Jedan tekst'
s2 = "Drugi tekst"

U daljem tekstu reč string ćemo koristiti za tekstualni tip podataka, kao i za svaki izraz čija je vrednost tog tipa. Najvažniji primeri izraza tipa string su tekstualne konstante (literali) i promenljive koje sadrže tekst.

Ispisivanje teksta

Stringovi se prikazuju na ekranu na isti način kao i brojčani podaci. String koji želimo da ispišemo jednostavno navodimo kao argument funkcije print().

Kada funkcija print() ima više argumenata, ti agrumenti mogu da budu različitog tipa:

Kada navodimo više argumenata, pišemo ih razdvojene zarezima (kao kod svake funkcije). Vrednosti svih navedenih argumenata će biti prikazane jedna za drugom, i biće razdvojene po jednim razmakom.

Još o ispisivanju brojeva

Ponekad ispisani rezultat izgleda nepregledno:

Najčešće nam nije važno da vidimo sve ove decimale. Pregledniji prikaz realnih vrednosti možemo da dobijemo koristeći funkciju format. Pomoću ove funkcije možemo na primer da zadamo koliko decimala želimo da bude prikazano:

Da bismo zadali broj decimala koje ćemo da prikažemo, funkciju format smo pozvali ovako: prvi agrument funkcije je vrednost koju ispisujemo, a drugi argument je opis prikaza. U ovom opisu deo ’.2’ znači da želimo dva decimalna mesta, a deo ’f’, skraćeno od float, znači da dajemo opis za prikazivanje realanog broja (tip realnih brojeva se zove float). Funkcija vraća string u kome je broj x zapisan na traženi način.

Istaknimo da ovo podešavanje prikaza ne utiče na vrednost promenljive x, koja i dalje ima sve svoje decimale.

Primer smo razložili na korake da bi bio jasniji, mada je mogao da bude napisan i u jednoj liniji koda, na primer za ispis sa 4 decimale:


Kada prikazujemo više realnih brojeva jedan ispod drugog, da bi prikaz bio pregledniji poželjno je da decimalne tačke budu poravnate. Na primer, ovakav prikaz nije naročito pregledan:

Da bismo dobili pregledniji prikaz, možemo funkciju format da upotrebimo ovako:

U opisu ’8.2f’ broj 8 znači da želimo da prikaz broja zauzme ukupno 8 mesta. U tih 8 mesta se broje cifre, decimalna tačka, eventualni znak broja i razmaci ispred broja. Delovi opisa ’.2’ i ’f’ imaju isto značenje kao i ranije.

Funkcija format ima i mnoge druge mogućnosti, od kojih ćemo još neke upoznati usput.

Operacije sa stringovima

Nadovezivanje stringova

Stringovi se mogu nadovezivati jedan na drugi operacijom nadovezivanja stringova, koja poznata i pod imenom konkatenacija stringova. Ova operacija se označava znakom +, isto kao i operacija sabiranja brojeva, pa se u programiranju ona često neformalno naziva i sabiranje stringova.

Povremeno se dešava da u stringu imamo zapis celog ili realnog broja, pa je važno je da razumemo kada se u programima znak + odnosi na sabiranje brojeva, a kada na nadovezivanje stringova. Na primer, u sledećem programu prvo a + b je sabiranje brojeva, a drugo je sabiranje (nadovezivanje) stringova. U skladu sa time se razlikuju i ispisani rezultati (isprobajte).

Verovatno će se povremeno događati da kasnije pri izvršavanju nekog svog prorgama budete zbunjeni rezultatom. Rezultat može da bude različit od očekivanog iz mnogo razloga, a jedna mogućnost je i da ste slučajno sabirali stringove umesto brojeva.

Znak + može da stoji između dva brojčana izraza ili između dva stringa, ali ne i između stringa i broja. Ovakve kombinacije dovode do greške tipa (TypeError), bilo da se sabira broj sa stringom, ili string sa brojem (isprobajte).

Umnožavanje stringova

Stringovi se mogu i umnožavati (multiplicirati). To znači da je dozvoljeno pomnožiti string celim brojem (bilo sleva ili sdesna), a rezultat je novi string, koji se dobija ponavljanjem datog stringa zadati broj puta.

U sledećem primeru, crta kojom podvlačimo sabirke je dobijena množenjem stringa ’-’ sa 12.

Pitanja i zadaci

    Q-9: Uparite pozive funkcije *format* sa rezultatima. Razmaci su predstavljeni znakom '_' pošto inače ne bi bili vidljivi. Pokušajte ponovo!
  • '12.34'
  • format(12.34, '.2f')
  • '__12.34'
  • format(12.34, '7.2f')
  • '_12.34'
  • format(12.34, '6.2f')
  • '__12.3'
  • format(12.34, '6.1f')
  • '12.3'
  • format(12.34, '.1f')

    Q-10: Koja od naredbi je neispravna?

  • s = 'a' + "b"
  • Pokušajte ponovo
  • s = 'ab"
  • Tačno
  • s = 'ab'
  • Pokušajte ponovo

    Q-11: Koja naredba ispisuje tra-la-la? (Označite sve tačne odgovore)

  • print('tra' + 2 * '-la')
  • print('tra-' + 2 * 'la-')
  • print('tra-' + 'la-' + 'la')
  • print('tra-' + 'la-la')
  • print('tra-la-' + '-la')
    Q-12: Uparite izraze sa njihovim vrednostima. Pokušajte ponovo!
  • 'NA' * 3
  • 'NANANA'
  • 'N' + 3 * 'A'
  • 'NAAA'
  • 'N' * 3 + 'A'
  • 'NNNA'
  • 'N' * 3 + 3 * 'A'
  • 'NNNAAA'

Šta ispisuje naredba print(('N' + 'A') * 2)?

Zadatak - Deljenje zarade

Tri prijatelja su se dogovorila da zaradu od zajedničkog posla podele tako da prvom pripadne 2/7 zarade, drugom 1/3, a trećem preostala svota. Ukupna zarada je bila 40000. Dovršite program, koji će na dve decimale prikazati zaradu svakog od trojice prijatelja.