Konstanter

La oss si at vi skal skrive kode som leser inn et antall dager, konverterer dagene til sekunder og skriver ut resultatet. Det kan vi gjøre som vist i eksempel 1:

Eksempel 1:

# Leser inn dager og konverterer til sekunder
dager = int(input("Oppgi antall dager: "))
sekunder = dager * 86400
print(f"{dager} dager utgjør {sekunder} sekunder.")

I eksempel 1 har vi imidlertid brukt et litt kryptisk tall, 86400, som er framkommet ved å multiplisere antall sekunder per minutt med antall minutter per time med antall timer per dag, 60 · 60 · 24 = 86400.

For å tydeliggjøre hva et slikt tall utgjør kan vi bruke en konstant. En konstant er et forklarende navn som vi bruker i stedet for en verdi. I eksempel 2 bruker vi konstanten SEK_PER_DAG til å representere tallet 86400.

Eksempel 2:

# Leser inn dager og konverterer til sekunder
SEK_PER_DAG = 86400
dager = int(input("Oppgi antall dager: "))
sekunder = dager * SEK_PER_DAG
print( f"{dager} dager utgjør {sekunder} sekunder.")

Vi ser at vi gir en konstant verdi på samme måte som en variabel, og teknisk sett er konstanter i Python bare variabler. Forskjellen ligger i bruksmåten. Variabler bruker vi til verdier som kan endre seg mens koden kjører, mens vi bruker konstanter til verdier som settes én gang og senere ikke endres. Det er også en konvensjon i henhold til stilguiden PEP 8 at mens vi bare bruker små bokstaver i variabelnavn, bruker vi bare store bokstaver i konstanter.

Oppgave_1

En nautisk mil (nm) er 1,852 km. Skriv Python-kode som leser inn et antall nautiske mil, konverterer til kilometer, og skriver ut resultatet. Representer konverteringsfaktoren 1,852 som en konstant i koden. Bruk 3 desimaler i utskriften.

Se løsningsforslag

Konstanter kan altså hjelpe med å gjøre koden lettere å tolke for mennesker, men kan også være en hjelp til å unngå å måtte gjøre endringer mange steder når en verdi endrer seg. Dette er vist i eksempel 3, med kode som skriver ut beløp for en del trygdeytelser i 2024-2025, basert på data fra smartepenger.no. Vi bruker 2 desimaler i utskriften, siden det er vanlig ved kronebeløp.

Eksempel 3:

# Skriver ut trygdeytelser
GRUNNBELOP = 124028
print(f"Minimumsgrense for dagpenger: kr {1.5 * GRUNNBELOP:.2f}.")
print(f"Maksimal overgangsstønad: kr {2.25 * GRUNNBELOP:.2f}.")
print(f"Minste uføretrygd for gifte og samboende: kr {2.28 * GRUNNBELOP:.2f}.")
print(f"Minste uføretrygd for enslige: kr {2.48 * GRUNNBELOP:.2f}.")
print(f"Minimum arverettighet for ektefeller: kr {4 * GRUNNBELOP:.2f}.")
print(f"Grense for opptjening av AFP: kr {7.1 * GRUNNBELOP:.2f}.")

Siden pengeverdien varierer over tid, er ikke ytelsene låst til et fast kronebeløp, men beregnes ut fra et grunnbeløp som justeres 1. mai hvert år. Ved å representere grunnbeløpet som en konstant i Python, i stedet for å gjenta beløpet i hver utregning, ser vi at vi bare trenger å endre én plass når beløpet endres. For å få tallene riktige for 2025-2026, erstatter vi bare

GRUNNBELOP = 124028

med

GRUNNBELOP = 130160

Kilder

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

Programmeringsspråk som C og JavaScript har et eget kodeord, const, som brukes til å definere en konstant, og vi får en feilmelding hvis vi forsøker å endre en konstant. Python har imidlertid ikke noe slikt kodeord. Vi indikerer at noe er en konstant ved å bruke bare store bokstaver, men vi får ikke noen feilmelding hvis vi prøver å endre en konstant, eller hvis vi ikke bruker store bokstaver.