Formatere utskrifter

Desimaler i flyttall

Når vi skriver ut flyttall i Python, varierer det hvor mange desimaler som brukes. For eksempel gir koden under 1, 2, 3 eller 17 desimaler alt etter verdien til n:

for n in range(1, 11):
    print(f"{1/n}")

Vi kan bruker Python-funksjonen round() til å runde av antall desimaler, for eksempel vil round(1/n, 5) runde av 1/n til 5 desimaler. round() gir imidlertid bare gjeldende siffer, så mens 1/3 vil bli skrevet ut som 0.33333, vil 1/2 bli skrevet ut som 0.5, ikke 0.50000.

Vil vi være garantert å alltid få et bestemt antall desimaler, bruker vi i stedet en formateringskode, som vi angir etter variabelen vi skal skrive ut, inni krøllparentesen i f-strengen. Formateringskoden består av et kolon, et punktum, et tall som angir antall desimaler, og en f.

Vil vi for eksempel skrive ut med 5 desimaler, blir formateringskoden :.5f. Innarbeidet i eksemplet over, blir det som vist under, endring markert med gult:

for n in range(1, 11):
    print(f"{1/n:.5f}")

Nå skrives alle tallene ut med 5 desimaler, for eksempel 1/2 som 0.50000.

Oppgave 1:

Vi har variabelen pi = 3.14159265.

Skriv Python-kode som oppretter variabelen og skriver den ut med 4 desimaler.

Se løsningsforslag

Ledende nuller

Det er også mulig å bruke en formateringskode til å sette på ledende nuller på heltall. La oss si at vi har koden under:

for n in range(0, 101, 25):
    print(f"{n}")

Koden vil skrive ut:

0
25
50
75
100

Vil vi ha dette slik at enere og tiere kommer rett under hverandre, kan vi formatere ved å sette på ledende nuller så alle tallene blir skrevet ut med 3 siffer, formateringskoden markert med gult:

for n in range(0, 101, 25):
    print(f"{n:03d}")

Koden vil nå skrive ut:

000
025
050
075
100

På samme måte som for å styre antall desimaler i flyttall angir vi formateringskoden etter verdien vi skal skrive ut, inni krøllparentesen i f-strengen. Formateringskoden består av et kolon, en null, et tall som angir antall siffer, og en d.

Hvis vi i formateringskoden angir færre siffer enn det tallet faktisk har, blir tallet allikevel skrevet ut med alle gjeldende siffer. Skriver vi for eksempel

print(f"{1234:03d}")

blir 1234 skrevet ut, til tross for at vi angir at vi bare vil ha 3 siffer.

Alternativ til linjeskift i print()

Når vi bruker print(), avsluttes utskriften vanligvis med et linjeskift. For eksempel vil koden under skrive ut tallene fra 1 til 10, med et linjeskift mellom hvert tall:

for n in range(1, 11):
    print(n)

Vi kan imidlertid erstatte linjeskiftet med hva vi vil, ved å gi inn teksten end sammen med en streng der vi angir det vi vil ha i stedet for linjeskift. Koden under vil for eksempel skrive ut tallene fra 1 til 10 på samme linje, atskilt av et blankt tegn:

for n in range(1, 11):
    print(n, end = " ")

Bruker vi spesialtegnet "\t", avsluttes utskriften med et tabulatortegn.

En detaljert oversikt over utskriftsformater finnes her: https://python-course.eu/python-tutorial/formatted-output.php

Kilder

    • Matthes A. (2019). Python Crash Course. no starch press