25
Oblikovanje ispisa u Pythonu 3

Formatiranje ispisa u Pythonu 3 - srolija.comsrolija.com/formatiranje_stringova.pdf–određuje broj decimala pri ispisu realnih brojeva, ima par iznimka ... b – binarni zapis (baza

Embed Size (px)

Citation preview

Oblikovanje ispisa u Pythonu 3

PASCAL:

writeln(varijabla:broj_mjesta:decimala, varijabla2:broj_mjesta:decimala,...);

PYTHON:

print(varijabla, varijabla2,...)

Oblikovanje ispisa u Pythonu 3

sablona.format(parametri)

print(sablona.format(parametri)) formatiran_string = sablona.format(parametri)

"{broj:~=+17.5f}".format(broj=pi) > '+~~~~~~~~~3.14159'

• formatiran_string / print() – string koji je oblikovan prema zadanoj šabloni

– možemo ga spremiti u neku varijablu, ispisati ili ved nekako dalje obrađivati

• šablona – string koji sadrži {} -- "abc", 'abc' ili varijabla tipa string

• .format() – funkcija koja de prema šabloni zamijeniti {} sa

vrijednostima parametara

• parametri – mogu biti bilo koji objekt koji ima reprezentaciju u

obliku stringa (integer, float, string i dr.)

– prvo moramo navesti normalne pa onda imenske: format(a, b, ime=c) OK, format("bok", g, ime=5) OK, format(ime=a, b) ERROR, format(12, p="a", b) ERROR

Šablona • string koji sadrži {}

• pomodu funkcije format se {} zamjenjuju sa pripadajudim parametrima

1. {} se zamijenjuju po redosljedu po kojem su varijable poredane kao parametri funkcije format

"{} je {}!".format("Danas", "petak") > 'Danas je petak!' "{} je {}!".format("Sutra", "subota") > 'Sutra je subota!'

2. {} se zamjenjuju ovisno o rednom broju (kao i vedina u programiranju, počinje od 0) ili nazivu parametra, imena i redni brojevi se mogu ponavljati

"{0} je {1}!".format("Python", "cool") > 'Python je cool!' "{1} je {0}!".format("Python", "cool") > 'cool je Python!' "{0} je {0}!".format("Python", "cool") > 'Python je Python!'

"{sto} je {kakve} boje!".format(sto="Auto", kakve="žute") > 'Auto je žute boje!' "{tko} je {}!".format("Python", tko="On") > 'On je Python!'

Možemo mješati imenske parametre sa ručnim numeriranjem parametara kao i sa automatskim numeriranjem parametara. ALI ne možemo istovremeno mješati automatsko i ručno numeriranje parametara (ili {} ili {0}...)! Također automatsko numeriranje parametara ne radi za imenske parametre. "{} ima {0}.".format("Ivan", "psa") > ERROR - cannot switch from automatic field numbering to manual field specification

"{} je {kakvo}!".format(kakvo="metal", "bakar") > ERROR - non-keyword arg after keyword arg

"{} * {} = {}!".format(a=5, b=3, ab= 15) > ERROR - tuple index out of range

"{1} + {0} = {rezultat}!".format(1, 2, rezultat= 3) > "2 + 1 = 3!"

{ime/pozicija:format_prikaza}

Ime/pozicija

• ukoliko nije navedeno python de automatski uzimati parametre kako dolaze po redu (pritom ne uzima imenske parametre)

• može biti:

– prazno – uzima automatski po redu ("{}")

– redni broj – počevši od 0 ("{0}", "{1}"...)

– naziv uz varijablu ("{ime}", "{prezime}"...)

Format prikaza

• određuje kako de pojedinačan parametar biti prikazan

• svi elementi formatiranja su opcionalni

[[punjenje]centriranje][predznak][#][0] [širina][,][.preciznost][tip]

• Punjenje:

– određuje kojim de se znakovima puniti "prazan prostor" oko parametra kojeg ispisujemo

– može biti bilo koji znak osim '{' i '}'

– prikazuje se jedino ukoliko je širina ispisa veda od samog parametra kada je ispisan

• Centriranje:

< lijevo

> desno

^ sredina

= predznak lijevo, broj desno (samo za brojeve)

• Predznak: – isključivo za brojeve, može biti:

+ ukoliko je broj ≥ 0 predznak je +, u suprotnom -

– ukoliko je broj < 0 predznak je -, inade ga nema

(razmak) ukoliko je broj ≥ 0 ispred broja je razmak, u suprotnom -, potrebno je navesti tip

• #: – ukoliko ispisujemo integere u binarnom, oktalnom ili

heksadekadskom sustavu onda de se prikazati '0b', '0o' ili '0x' ispred pripdajuceg prikaza broja

• 0: – isto kao da smo napisali 0= za vrijednost punjenja i

centriranja

• Širina:

– određuje koliko prostora zauzima ispis parametra

– neophodno za korištenje punjenja i centriranja

• ,:

– ukoliko ga se stavi svake 3 znamenke cijelog broja de biti odvojene zarezom (1000000 de se ispisati kao 1,000,000)

• Preciznost:

– određuje broj decimala pri ispisu realnih brojeva, ima par iznimka (zanemarivo), stringovima određuje koliko de znakova bit prikazano

• Tip:

– određuje kako de se ispisivati vrijednosti parametara

– integer:

b – binarni zapis (baza 2)

c – kao znak – pretvoreno prema UTF-8 tablici

d – normalno (dekadski zapis, baza 10, uobičajeno)

o – oktalni zapis (baza 8)

x – heksadekadski zapis (baza 16)

X – heksadekadski zapis (baza 16) sa velkim slovima

n – slično kao d

– float:

e – znanstveni zapis

E – znanstveni zapis sa velikim slovima

f – cijeli broj

F – cijeli broj sa velikim slovima

g – cijeli broj, ukoliko je broj velik onda u znanstvenom zapisu (uobičajeno)

G - isto kao g ali sa velikim slovima

n – slično kao g

% – prikazuje kao postotak

– string:

s - jedini tip ispisa stringa (uobičajeno)

Primjeri: "{:^10}".format(15)

> ' 15 '– razmaci su jer je standardno punjenje praznog prostora razmak

"{:#>10}".format(15)

> '########15'

"{:#=+10}".format(15)

> '+#######15'

"{:.10}".format(15.142)

> '15.142' – trebamo staviti f kao tip

"{:.2}".format(15.162)

> '1.5e+01'

"{:.2f}".format(15.162)

> '15.16'

"{:010}".format(15.162) "{:0=10}".format(15.162)

> '000015.162'

"{:b}".format(15)

> '1111'

"{:#b}".format(15)

> '0b1111'

• oblikovanje stringa: sablona.format(parametri) "šablona sa {}, {imenski}".format(a, imenski=b)

• parametri u šabloni: • {} –automatski

• {0}, {1}... – redni broj parametra

• {ime}, {test}... – imenski parametri

• ili automatski ili ručno za redne brojeve

• šablona: "{prazno/redni_broj/ime:format_prikaza}..."

Oblikovanje stringova

[[punjenje]centriranje][predznak][#] [0][širina][,][.preciznost][tip]

punjenje: bilo koji znak osim '{' i '}', ovisi o centriranju

centriranje: '<', '>', '=' i '^'

predznak: '+', '-' i ' '

#: za binarne, oktalne i heksadekadske prikaze

0: jednako kao 0=

širina: koliko mjesta zauzima prikaz

,: prikazati svake 3 znamenke cijelog broja zareze

.preciznost: broj znamenka kod decimalnih brojeva

tip: b (binarno), o (oktalno), x (heksadekadski), c (znak), e (znanstveni zapis), f (cijeli broj), % (postotak)

[[znak za punjenje]<, >, ̂ , =][+, -, (razmak)][širina][.decimala][b, d, o, c, e, f, %]

#>5 praznine su #, desno, 5 mjesta

=+10.3f predznak lijevo, broj desno, predznak prikazan, 10 mjesta, 3 decimale u ispisu, realni broj

~^4b praznine su ~, centrirano, 4 mjesta, binarno

širina 10 mjesta, ispisano u znanstvenom zapisu, centrirano lijevo

<10e prikazan predznak, predznak lijevo, broj desno, 2 decimale, za praznine su točke, u 18 mjesta

.=+18.2f

integer float

ispis = "{:<15}|{:>14,.2f}kn |{:8} |{:>16,.2f}kn" print("Račun:") print("-"*62) print("{:^15}|{:^17}|{:^9}|{:^18}".format('Proizvod', 'Cijena', 'Komada', 'Ukupno')) print("-"*62) print(ispis.format('Čoksa', 5.49, 10, 54.9)) print(ispis.format('Bananko 20 g', 2.39, 10000, 23900)) print(ispis.format('Čunga Lunga', 0.5, 1, 0.5)) print("UKUPNO:{:_>53,.2f}kn".format(54.9+23900+0.5))

Račun:

--------------------------------------------------------------

Proizvod | Cijena | Komada | Ukupno

--------------------------------------------------------------

Čoksa | 5.49kn | 10 | 54.90kn

Bananko 20 g | 2.39kn | 10000 | 23,900.00kn

Čunga Lunga | 0.50kn | 1 | 0.50kn

UKUPNO:____________________________________________23,955.40kn

ispis = "{:<15}|{:>14,.2f}kn |{:8} |{:>16,.2f}kn" print("Račun:") print("-"*62) print("{:^15}|{:^17}|{:^9}|{:^18}".format('Proizvod', 'Cijena', 'Komada', 'Ukupno')) print("-"*62) print(ispis.format('Čoksa', 5.49, 10, 54.9)) print(ispis.format('Bananko 20 g', 2.39, 10000, 23900)) print(ispis.format('Čunga Lunga', 0.5, 1, 0.5)) print("UKUPNO:{:_>53,.2f}kn".format(54.9+23900+0.5))