formatiranje ispisa u pythonu 3 - srolija.comsrolija.com/formatiranje_stringova.pdf–određuje broj...
TRANSCRIPT
PASCAL:
writeln(varijabla:broj_mjesta:decimala, varijabla2:broj_mjesta:decimala,...);
PYTHON:
print(varijabla, varijabla2,...)
sablona.format(parametri)
print(sablona.format(parametri)) formatiran_string = sablona.format(parametri)
• 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
• 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:
– 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))