Tulostuksen muotoilu
Olemme tähän mennessä yhdistelleet tulostettavaa tietoa print
-komennossa kolmella eri tavalla.
Ensimmäinen tapa on käyttää merkkijonojen +
-operaattoria ja muodostaa näin yksittäinen merkkijono, jonka print saa parametrikseen:
nimi = "Erkki"
ika = 39
print("Hei " + nimi + " ikäsi on " + str(ika) + " vuotta" )
Tämä tapa edellyttää, että kaikki yhdistettävät osat ovat merkkijonoja. Koska muuttuja ika
on tyypiltään kokonaisluku, se on muutettu yhdistämistä varten merkkijonoksi funktiolla str
.
Toinen käyttämämme tapa on eritellä tulostuksen osat pilkulla:
print("Hei", nimi, "ikäsi on", ika, "vuotta" )
Tämän koodin lopputulos on sama kuin edellisen esimerkin. Näin käytettynä print
tulostaa kaikki parametrinsa välilyönnillä eroteltuna. Etuna tässä tavassa on, että tulostettavat osat voivat olla eri tyyppisiä eli tyyppimuunnosta merkkijonoksi ei tarvita.
Automaattisesta välilyönnistä pilkulla eriteltyjen osien välillä on mahdollista päästä eroon antamalla funktiolle parametri sep
:
print("Hei", nimi, "ikäsi on", ika, "vuotta", sep="")
Tulostus on nyt seuraava:
HeiErkkiikäsi on39vuotta
Parametri sep=""
on nimetty parametri, joka määrittelee, että pilkulla eroteltujen osien väliin laitetaan ainoastaan tyhjä merkkijono. Voisimme myös saada jokaisen osan tulostumaan omalle rivilleen määrittelemällä erottimeksi "\n"
eli rivinvaihtoa kuvaavan merkin:
print("Hei", nimi, "ikäsi on", ika, "vuotta", sep="\n")
Hei Erkki ikäsi on 39 vuotta
Oletusarvoisesti print-komento päättyy rivinvaihtoon, mutta tätä voidaan muokata parametrin end
avulla. Esim. jos end
saa arvoksi tyhjän merkkijonon, print
-komento ei aiheuta automaattista rivinvaihtoa:
print("Moi ", end="")
print("kaikki!")
Moi kaikki!
f-merkkijonot
Kolmas käyttämämme tapa on f-merkkijonot. Aiempi nimen ja iän tulostava esimerkki tehtäisiin f-merkkijonojen avulla seuraavasti:
nimi = "Erkki"
ika = 39
print(f"Hei {nimi} ikäsi on {ika} vuotta")
Olemme toistaiseksi käyttäneet f-merkkijonoja vain niiden yksinkertaisimmassa muodossa. F-merkkijonot tarjoavat kuitenkin monia muitakin mahdollisuuksia tulostuksen muotoiluun. Yksi tavallinen käyttötapa on antaa liukuluvun tulostuksessa näytettävien desimaalien määrä. Oletusarvoisesti tulostuu jokin määrä desimaaleja:
luku = 1/3
print(f"Luku on {luku}")
Luku on 0.333333333333333
Saamme määriteltyä tulostuvien desimaalien määrän f-merkkijonon avulla. Tulostuksen muoto määritellään lisäämällä aaltosulkeiden sisään tulostettavan muuttujan jälkeen kaksoispiste ja muotoiluohje:
luku = 1/3
print(f"Luku on {luku:.2f}")
Luku on 0.33
Muotoiluohje .2f
siis määrittelee, että desimaaliluku tulostetaan kahden desimaalin tarkkuudella. Kirjain f luvun 2 jälkeen tarkoittaa, että muotoiluohje koskee desimaalilukua eli float
-tyyppistä arvoa!
Tässä on vielä toisenlainen esimerkki, jossa tulostetaan nimiä 15 merkin levyiseen tekstialueeseen, ensin vasemmalle sisennettynä ja sen jälkeen oikealle sisennettynä:
nimet = [ "Antti", "Emilia", "Juha-Pekka", "Maya" ]
for nimi in nimet:
print(f"{nimi:15} keskellä {nimi:>15}")
Antti keskellä Antti
Emilia keskellä Emilia
Juha-Pekka keskellä Juha-Pekka
Maya keskellä Maya
F-merkkijonoja voi käyttää muuallakin kuin tulostuskomennossa. Niitä voi esimerkiksi sijoittaa muuttujiin ja sekä yhdistellä normaaleihin merkkijonoihin:
nimi = "Pekka"
ika = 59
kaupunki = "Lappeenranta"
tervehdys = f"Hei {nimi}, olet {ika}-vuotias"
print(tervehdys + f", asuinpaikkasi on {kaupunki}")
Hei Pekka, olet 59-vuotias, asuinpaikkasi on Lappeenranta
F-merkkijonon voi ajatella olevan eräänlainen funktio, joka tuottaa normaalin merkkijonon aaltosuluissa olevien "parametrien" perusteella.
Log in to view the quiz