Python-oppimateriaali (CHEM-A2600)
Muotoiltu tulostaminen str.format-funktiolla
Tähän asti olemme käyttäneet print-funktiota tulostamiseen varsin suoraviivaisesti:
alkuaine = "C" atomipaino = 12.011 print("Alkuaineen", alkuaine, "atomipaino on", atomipaino)
tulostaa
Alkuaineen C atomipaino on 12.011
Pythonissa on kuitenkin käytettävissä myös erittäin monipuolinen str.format-funktio, jolla voi muotoilla merkkijonon:
alkuaine = "C" atomipaino = 12.011 print("Alkuaineen {} atomipaino on {}".format(alkuaine, atomipaino))
tulostaa
Alkuaineen C atomipaino on 12.011
Merkkijonon "Alkuaineen {} atomipaino on {}" kaarisulut korvautuivat siis format-funktion parametreilla alkuaine ja atomipaino.
{}-kentän muotoilu
str.format-funktion {}-kenttää voi muotoilla lukuisilla eri tavoilla. Sen tyypillisin käyttötapa on {:<leveys>.<tarkkuus><tyyppi>}.
Kentän tyyppiä merkitään kirjaimella. Tällä kurssilla tärkeimpiä kentän tyyppejä ovat
- liukuluku f
- kokonaisluku d
- merkkijono s
Esimerkkejä:
- liukuluku pyöristettynä kolmen desimaalin tarkkuuteen, automaattinen kentän leveys: {:.3f}
- liukuluku, 6 merkkiä leveä kenttä, pyöristettynä nollan desimaalin tarkkuuteen: {:6.0f}
- kokonaisluku, automaattinen kentän leveys: {:d}
- kokonaisluku, 5 merkkiä leveä kenttä: {:5d}
- Merkkijono, automaattinen kentän leveys {:s}
Esimerkki 1:
T = 300 # K p = 1.12345 # atm print("Olosuhteet ovat: {:d} K, {:.3f} atm".format(T, p))
tulostaa
Olosuhteet ovat: 300 K, 1.123 atm
Esimerkki 2:
n = 0.25 # mol V = 0.00456 # m^3 T = 298.15 # K R = 8.314462618 # J/(mol K) p = n * R * T / V # Pa print("Kun n = {:7.3f} mol, V = {:7.5f} m^3, T = {:7.2f} K, on paine p = {:7.0f} Pa".format(n, V, T, p))
tulostaa (numerojonot 1234567 havainnollistavat kentän leveyttä)
Kun n = 0.250 mol, V = 0.00456 m^3, T = 298.15 K, on paine p = 135908 Pa
1234567 1234567 1234567 1234567
Huomaa, miten kaikki kentät ovat nyt 7 merkkiä leveitä.
Vaikka str.format-funktion kokoaminen voi ensi alkuun vaikuttaa työläältä, on se todella paljon kätevämpää kuin tulostuksen hoitaminen print- ja round-funktioiden avulla.
Käytä lukuarvojen tulostamiseen tästä lähtien str.format-funktiota.
str.format-funktion laajempi dokumentaatio löytyy osoitteesta https://docs.python.org/3/library/string.html#formatstrings. Dokumentaatio on hieman abstrakti, mutta sisältää myös esimerkkejä.
Muita str.format-funktion käyttötapoja
Ennen kaarisulkujen sisältämän muotoilukentän kaksoispistettä voi käyttää tunnistetta, joka yhdistää kentän str.format-funktion parametriin:
print("Olosuhteet ovat: {T_K:d} K, {p_atm:.3f} atm".format(T_K=300, p_atm=1.12345))
tulostaa
Olosuhteet ovat: 300 K, 1.123 atm
str.format-funktion parametreja voi toistaa helposti käyttämällä kaarisulkujen sisällä tunnisteita:
alkuaine = "C" atomipaino = 12.011 naapuri = "N" print("Alkuaineen {aine} atomipaino on {paino:.3f}. " "Alkuaineen {aine} naapuri on {aine2}".format(aine=alkuaine, paino=atomipaino, aine2=naapuri))
tulostaa
Alkuaineen C atomipaino on 12.011. Alkuaineen C naapuri on N
Huomaa myös esimerkistä, miten pitkää merkkijonoa voi jatkaa koodissa toiselle riville yksinkertaisesti sulkemalla lainausmerkit ja aloittamalla uudet seuraavalla rivillä.