Osa 4

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:

Esimerkkitulostus

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")
Esimerkkitulostus

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!")
Esimerkkitulostus

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}")
Esimerkkitulostus

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}")
Esimerkkitulostus

Hei Pekka, olet 59-vuotias, asuinpaikkasi on Lappeenranta

F-merkkijonon voi ajatella olevan eräänlainen funktio, joka tuottaa normaalin merkkijonon aaltosuluissa olevien "parametrien" perusteella.

Loading
Loading...
:
Loading...

Log in to view the quiz