{"id":1084,"date":"2020-08-06T12:38:17","date_gmt":"2020-08-06T09:38:17","guid":{"rendered":"http:\/\/www.hanectica.net\/kasvit\/?p=1084"},"modified":"2020-08-20T15:19:02","modified_gmt":"2020-08-20T12:19:02","slug":"python-tulostuksen-muotoilu","status":"publish","type":"post","link":"https:\/\/www.hanectica.net\/kasvit\/2020\/08\/06\/python-tulostuksen-muotoilu\/","title":{"rendered":"Python: tulostuksen muotoilu"},"content":{"rendered":"<p>Python-ohjelmoinnin peruskurssi Helsingin avoimessa yliopistossa on takanap\u00e4in, ja ajattelin kirjoitella muutamia tietoiskun kaltaisia artikkeleja Python-ohjelmointikielest\u00e4 itse\u00e4ni ja asiasta kiinnostuneita varten. \ud83d\ude00 T\u00e4m\u00e4 on ensimm\u00e4inen, ja k\u00e4sittelee tulostuksen muotoilun perusjuttuja.<\/p>\n<p>Pythonissa on eri tapoja, joilla tulostuksen ulkon\u00e4k\u00f6\u00e4 voi muotoilla. Riippuen tapauksesta voi valita itselleen mieluisimman tai helpoimman.<\/p>\n<h2>Yhden rivin tulostus<\/h2>\n<p>T\u00e4m\u00e4 on se kaikkein helpoin tapaus, jossa ei tarvita mit\u00e4\u00e4n sen kummempaa, ja monissa tapauksissa t\u00e4m\u00e4 riitt\u00e4\u00e4, eli ei tarvita kuin print-komento.<\/p>\n<p><code><span style=\"color: #800080;\">print<\/span>(<span style=\"color: #008000;\">\"Huomenta!\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Huomenta!<\/span><\/code><\/p>\n<p><code><span style=\"color: #800080;\">print<\/span>(<span style=\"color: #008000;\">\"Huomenta! Mit\u00e4 kuuluu? Kuinka voit t\u00e4n\u00e4\u00e4n?\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Huomenta! Mit\u00e4 kuuluu? Kuinka voit t\u00e4n\u00e4\u00e4n?<\/span><\/code><\/p>\n<h2>Kahden tai useamman rivin tulostus<\/h2>\n<p>T\u00e4h\u00e4n on kaksikin mahdollisuutta. Ensimm\u00e4inen: print-komennot voi laittaa alekkain, jolloin jokainen rivi tulostuu omalle rivilleen. Tyhj\u00e4n rivin voi tulostaa komennolla print().<\/p>\n<p><code><span style=\"color: #800080;\">print<\/span>(<span style=\"color: #008000;\">\"Huomenta!\"<\/span>)<br \/>\n<span style=\"color: #800080;\">print<\/span>(<span style=\"color: #008000;\">\"Mit\u00e4 kuuluu?\"<\/span>)<br \/>\n<span style=\"color: #800080;\">print<\/span>()<br \/>\n<span style=\"color: #800080;\">print<\/span>(<span style=\"color: #008000;\">\"Ihan hyv\u00e4\u00e4.\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Huomenta!<\/span><span style=\"color: #0000ff;\"><br \/>\nMit\u00e4 kuuluu?<\/span><\/code><\/p>\n<p><code><span style=\"color: #0000ff;\">Ihan hyv\u00e4\u00e4.<\/span><\/code><\/p>\n<p>Toisessa vaihtoehdossa voidaan k\u00e4ytt\u00e4\u00e4 yht\u00e4 print-komentoa ja ilmaista rivinvaihdot <span style=\"color: #800080;\">\\n<\/span>-merkill\u00e4 ilman v\u00e4lily\u00f6ntej\u00e4. Ja jos haluaa tyhj\u00e4n rivin v\u00e4liin, niin <span style=\"color: #800080;\">\\n\\n<\/span> tuo t\u00e4h\u00e4n ratkaisun.<\/p>\n<p><code><span style=\"color: #800080;\">print<\/span>(<span style=\"color: #008000;\">\"Huomenta!\\nMit\u00e4 kuuluu?\\nKuinka voit t\u00e4n\u00e4\u00e4n?\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Huomenta!<\/span><span style=\"color: #0000ff;\"><br \/>\nMit\u00e4 kuuluu?<\/span><span style=\"color: #0000ff;\"><br \/>\nKuinka voit t\u00e4n\u00e4\u00e4n?<\/span><\/code><\/p>\n<h2>Tulostus muuttujien kanssa<\/h2>\n<p>Pelk\u00e4n muuttujan tulostaminen k\u00e4y my\u00f6s helposti.<\/p>\n<p><code>nimi = <span style=\"color: #008000;\">\"Seija\"<\/span><br \/>\n<span style=\"color: #800080;\">print<\/span>(nimi)<br \/>\n<span style=\"color: #0000ff;\">Seija<\/span><\/code><\/p>\n<p>Kun tulostuksessa on muuttujia ja merkkijonoja, tarvitaan muita ratkaisuja.<\/p>\n<h2>Tulostus pilkkujen kanssa<\/h2>\n<p>Muuttujat ja merkkijonot voidaan tulostaa samalla print-komennolla, kun ne yhdistet\u00e4\u00e4n pilkulla.<\/p>\n<p><code>nimi = <span style=\"color: #008000;\">\"Helmi\"<\/span><br \/>\n<span style=\"color: #800080;\">print<\/span>(nimi, <span style=\"color: #008000;\">\"j\u00e4i eilen el\u00e4kkeelle.\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Helmi j\u00e4i eilen el\u00e4kkeelle.<\/span><\/code><\/p>\n<p><code>nimi = <span style=\"color: #008000;\">\"Hannu\"<\/span><br \/>\nika = 60<br \/>\n<span style=\"color: #800080;\">print<\/span>(nimi, <span style=\"color: #008000;\">\"t\u00e4ytt\u00e4\u00e4 maanantaina\"<\/span>, ika, <span style=\"color: #008000;\">\"vuotta.\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Hannu t\u00e4ytt\u00e4\u00e4 maanantaina 60 vuotta.<\/span><\/code><\/p>\n<p>Pilkku luo automaattisesti v\u00e4lily\u00f6nnin muuttujan ja merkkijonon v\u00e4liin, joten koodaajan ei tarvitse v\u00e4lily\u00f6nti\u00e4 napauttaa, ellei halua tehd\u00e4 koodista luettavampaa, kuten yll\u00e4. Sellaisissa tilanteissa, joissa muuttuja halutaan suomen kielioppis\u00e4\u00e4nt\u00f6jen mukaan liitt\u00e4\u00e4 ilman v\u00e4lily\u00f6nti\u00e4 merkkijonoon, pilkku-muotoilu ei k\u00e4y, kuten tilanteessa 60-vuotias, jossa 60 olisi muuttujan arvo.<\/p>\n<h2>Tulostus k\u00e4ytt\u00e4en merkki\u00e4 +<\/h2>\n<p>Kun tulostuksessa yhdistet\u00e4\u00e4n muuttujia ja merkkijonoja +-merkill\u00e4, t\u00e4ytyy koodaajan muistaa lis\u00e4t\u00e4 v\u00e4lily\u00f6nnit lainausmerkkien sis\u00e4\u00e4n, joko alkuun tai loppuun tai molempiin, riippuen tilanteesta. +-merkki ei luo v\u00e4lej\u00e4, kuten pilkku tekee. Alla olevasta esimerkist\u00e4 n\u00e4kee, milloin koodaajan t\u00e4ytyy laittaa v\u00e4lily\u00f6nti ja milloin se on syyt\u00e4 j\u00e4tt\u00e4\u00e4 pois. Esimerkiksi \u201dn iso\u00e4iti\u201d-kohdassa ennen n-kirjainta ei laiteta v\u00e4lily\u00f6nti\u00e4, koska sill\u00e4 ilmaistaan nimi1:n eli Seija-merkkijonon genetiivimuotoa.<\/p>\n<p><code>nimi1 = <span style=\"color: #008000;\">\"Seija\"<\/span><br \/>\nnimi2 = <span style=\"color: #008000;\">\"Helmi\"<\/span><br \/>\n<span style=\"color: #800080;\">print<\/span>(nimi1 + <span style=\"color: #008000;\">\" p\u00e4\u00e4si yliopistoon opiskelemaan. \"<\/span> + nimi2 + <span style=\"color: #008000;\">\" on \"<\/span> + nimi1 + <span style=\"color: #008000;\">\"n iso\u00e4iti.\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Seija p\u00e4\u00e4si yliopistoon opiskelemaan. Helmi on Seijan iso\u00e4iti.<\/span><\/code><\/p>\n<p>+-merkin k\u00e4yt\u00f6ss\u00e4 on se ongelma tai muistettava asia, ett\u00e4 jos muuttujan arvo on jokin muu kuin merkkijono, kuten esimerkiksi kokonaisluku tai liukuluku, t\u00e4m\u00e4 t\u00e4ytyy muuttaa merkkijonoksi: str(muuttuja).<\/p>\n<p><code>nimi = <span style=\"color: #008000;\">\"Veikko\"<\/span><br \/>\nika = 73<br \/>\n<span style=\"color: #800080;\">print<\/span>(nimi + <span style=\"color: #008000;\">\" on \"<\/span> + <span style=\"color: #800080;\">str<\/span>(ika) + <span style=\"color: #008000;\">\"-vuotias.\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Veikko on 73-vuotias.<\/span><\/code><\/p>\n<h2>Tulostus f-merkkijonolla<\/h2>\n<p>\u00c4kkiselt\u00e4\u00e4n f-muotoilu saattaa n\u00e4ytt\u00e4\u00e4 kaikista hankalimmalta tulostuksen muotoilulta, mutta loppupeleiss\u00e4 se ehk\u00e4 onkin muuttujien, numeroiden ja merkkijonojen yhteistulostuksissa kaikkein vaivattomin, kunhan on ensin opetellut aaltosulkujen k\u00e4yt\u00f6n. f-muotoilussa muuttuja laitetaan aaltosulkujen sis\u00e4\u00e4n {muuttuja} ja koko tulostettava r\u00f6tl\u00e4 lainausmerkkien v\u00e4liin ja ensimm\u00e4isen lainausmerkin eteen kirjan f. Muuten voi kirjoittaa ihan normaalisti napauttaen normaalit v\u00e4lily\u00f6nnit tarvittaessa.<\/p>\n<p><code>nimi1 = <span style=\"color: #008000;\">\"Seija\"<\/span><br \/>\nnimi2 = <span style=\"color: #008000;\">\"Helmi\"<\/span><br \/>\n<span style=\"color: #800080;\">print<\/span>(<span style=\"color: #008000;\">f\"{nimi1} p\u00e4\u00e4si yliopistoon opiskelemaan. {nimi2} on {nimi1}n iso\u00e4iti.\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Seija p\u00e4\u00e4si yliopistoon opiskelemaan. Helmi on Seijan iso\u00e4iti.<\/span><\/code><\/p>\n<p>T\u00e4ss\u00e4kin tulostuksen muodossa on pieni mutta, kuinkas muuten. \ud83d\ude09 Joissakin tilanteissa voi olla, ett\u00e4 muuttujassa on lainausmerkit; t\u00e4ll\u00f6in tulee sis\u00e4kk\u00e4isten lainausmerkkien ongelma eik\u00e4 tulostus toimi. T\u00e4h\u00e4n on helppo ratkaisu: laittaa ne sisemm\u00e4t lainausmerkit yksinkertaisina \u2019 \u2019, niin ongelma poistuu.<\/p>\n<p>f-muotoilussa voidaan tulostusta muotoilla my\u00f6s monipuolisemmin; sill\u00e4 voi tehd\u00e4 vaikkapa taulukoiden n\u00e4k\u00f6isi\u00e4 ratkaisuja, mutta se on sitten jo toisen artikkelin aihe.<\/p>\n<p>Pieni erikoistapaus liukuluvun muotoilusta t\u00e4h\u00e4n loppuun. Jos haluamme tulostaa liukuluvun hieman lyhyemm\u00e4ll\u00e4 rimpsulla, voimme k\u00e4ytt\u00e4\u00e4 f-muotoilua.<\/p>\n<p><code>pii = 3.14159265358979323846<br \/>\nluku = 55.1234567891<br \/>\n<span style=\"color: #800080;\">print<\/span>(<span style=\"color: #008000;\">f\"Pii on {pii:.4f} ja luku on {luku:.2f}.\"<\/span>)<br \/>\n<span style=\"color: #0000ff;\">Pii on 3.1416 ja luku on 55.12.<\/span><\/code><\/p>\n<p>Yll\u00e4 olevassa esimerkiss\u00e4, kohdissa .2f ja .4f, kirjain f tarkoittaa liukulukua (float). Ja kuten n\u00e4kyy, piin tulostuksessa tapahtui my\u00f6s py\u00f6ristys yl\u00f6sp\u00e4in.<\/p>\n<p>T\u00e4ss\u00e4 ensimm\u00e4inen Python-pl\u00e4j\u00e4ys. Jos j\u00e4it jotain kaipaamaan tai jotain virheellist\u00e4 olen h\u00f6p\u00f6tellyt, niin pist\u00e4 <a href=\"mailto:hannele@hanectica.net\">viesti\u00e4<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Python-ohjelmoinnin peruskurssi Helsingin avoimessa yliopistossa on takanap\u00e4in, ja ajattelin kirjoitella muutamia tietoiskun kaltaisia artikkeleja Python-ohjelmointikielest\u00e4 itse\u00e4ni ja asiasta kiinnostuneita varten. \ud83d\ude00 T\u00e4m\u00e4 on ensimm\u00e4inen, ja k\u00e4sittelee tulostuksen muotoilun perusjuttuja. Pythonissa on eri tapoja, joilla tulostuksen ulkon\u00e4k\u00f6\u00e4 voi muotoilla. Riippuen tapauksesta &hellip; <a href=\"https:\/\/www.hanectica.net\/kasvit\/2020\/08\/06\/python-tulostuksen-muotoilu\/\">Lue loppuun <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":1107,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[100],"tags":[97,98,96,95,106,99],"class_list":["post-1084","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python-ohjelmointi","tag-f-merkkijono","tag-f-muotoilu","tag-ohjelmointi","tag-python","tag-python-3-8-5","tag-tulostuksen-muotoilu-pythonissa"],"_links":{"self":[{"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/posts\/1084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/comments?post=1084"}],"version-history":[{"count":20,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/posts\/1084\/revisions"}],"predecessor-version":[{"id":1108,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/posts\/1084\/revisions\/1108"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/media\/1107"}],"wp:attachment":[{"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/media?parent=1084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/categories?post=1084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hanectica.net\/kasvit\/wp-json\/wp\/v2\/tags?post=1084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}