Tilbake
2.2
Variabler og datatyper

2.2 Variabler og datatyper

Lær om variabler, grunnleggende datatyper i Python, typekonvertering og input/output.

50 min
8 oppgaver
VariabelDatatypeintfloat
Du leser den tradisjonelle versjonen
Din fremgang i kapitlet
0 / 8 oppgaver

Variabler og datatyper

I det forrige kapittelet skrev vi programmer der alle verdier var skrevet direkte i koden. Men hva om vi vil at programmet skal huske verdier, endre dem, eller bruke verdier som brukeren skriver inn? Da trenger vi variabler.

Variabler er en av de mest grunnleggende byggesteinene i programmering. En variabel er som en merket boks der du kan lagre data. Boksen har et navn (variabelnavnet), og inne i boksen ligger en verdi. Du kan når som helst se hva som er i boksen, bytte ut innholdet, eller bruke innholdet i beregninger.

I dette kapittelet skal du lære å opprette variabler, forstå de forskjellige datatypene Python tilbyr, konvertere mellom typer, og bruke input/output for å lage interaktive programmer.

Variabel

En variabel er en navngitt referanse til en verdi lagret i datamaskinens minne. I Python oppretter du en variabel ved å gi den et navn etterfulgt av likhetstegnet og verdien du vil lagre. For eksempel oppretter alder = 17 en variabel med navnet alder som inneholder verdien 17. Variabelnavnet er som en etikett på en boks, og verdien er innholdet i boksen. Du kan når som helst endre verdien ved å tilordne en ny verdi til variabelen.

Opprette variabler i Python

I Python oppretter du en variabel ved å skrive variabelnavnet, etterfulgt av et likhetstegn (=), etterfulgt av verdien:

navn = "Kari"
alder = 17
høyde = 1.72
er_elev = True

Her har vi opprettet fire variabler med forskjellige typer verdier. Likhetstegnet i programmering betyr ikke «er lik» slik som i matematikk. Det betyr «tilordne verdien til høyre til variabelen til venstre». Vi sier at vi tilordner verdien "Kari" til variabelen navn.

Regler for variabelnavn i Python:

- Navnet kan inneholde bokstaver, tall og understrek (_)
- Navnet kan ikke starte med et tall (2navn er ugyldig)
- Navnet kan ikke inneholde mellomrom (bruk understrek i stedet: mitt_navn)
- Navnet kan ikke være et av Pythons reserverte nøkkelord (som if, for, while, True, False)
- Python skiller mellom store og små bokstaver (Navn og navn er to forskjellige variabler)

Gode variabelnavn:

# Gode, beskrivende navn:
fornavn = "Erik"
antall_elever = 28
gjennomsnittskarakter = 4.5

# Dårlige, uforståelige navn:
x = "Erik"
n = 28
g = 4.5

Bruk alltid beskrivende variabelnavn som forteller hva variabelen inneholder. Det gjør koden mye lettere å lese og forstå.

Endre verdier

En variabel kan endre verdi i løpet av programmet. Den nye verdien overskriver den gamle:

poeng = 0
print("Poeng:", poeng)  # Skriver ut: Poeng: 0

poeng = 10
print("Poeng:", poeng)  # Skriver ut: Poeng: 10

poeng = poeng + 5
print("Poeng:", poeng)  # Skriver ut: Poeng: 15

Linjen poeng = poeng + 5 kan virke merkelig. Men husk at = betyr «tilordne». Python regner først ut uttrykket på høyre side (15 + 5 = 20... nei, 10 + 5 = 15), og tilordner deretter resultatet til variabelen poeng. Dette er et svært vanlig mønster i programmering.

Python har også forkortede skrivemåter for å oppdatere variabler:

poeng = 100

poeng += 10    # Samme som: poeng = poeng + 10  (nå er poeng 110)
poeng -= 20    # Samme som: poeng = poeng - 20  (nå er poeng 90)
poeng *= 2     # Samme som: poeng = poeng * 2   (nå er poeng 180)
poeng /= 3     # Samme som: poeng = poeng / 3   (nå er poeng 60.0)

print("Poeng:", poeng)  # Skriver ut: Poeng: 60.0

Legg merke til at etter divisjon med /= ble resultatet 60.0 (et desimaltall), ikke 60 (et heltall). Dette bringer oss til et viktig tema: datatyper.

Datatyper i Python

En datatype angir hva slags data en variabel inneholder, og bestemmer hvilke operasjoner som kan utføres på dataen. De fire grunnleggende datatypene i Python er: int (heltall som 42), float (desimaltall som 3.14), str (tekststrenger som "Hei"), og bool (sannhetsverdier: True eller False). Python bestemmer automatisk datatypen basert på verdien du tilordner, noe som kalles dynamisk typing. Du kan sjekke datatypen med funksjonen type().

Datatypene i detalj

int - Heltall

Heltall er hele tall uten desimaler. De kan være positive, negative eller null:

alder = 17
temperatur = -5
antall = 0
stort_tall = 1000000

print(type(alder))  # <class 'int'>

Du kan utføre matematiske operasjoner med heltall:

a = 10
b = 3

print(a + b)   # Addisjon: 13
print(a - b)   # Subtraksjon: 7
print(a * b)   # Multiplikasjon: 30
print(a / b)   # Divisjon: 3.3333... (gir alltid float!)
print(a // b)  # Heltallsdivisjon: 3
print(a % b)   # Modulo (rest): 1
print(a ** b)  # Potens: 1000

float - Desimaltall

Desimaltall brukes når du trenger presisjon utover hele tall:

pris = 49.90
pi = 3.14159
temperatur = -2.5

print(type(pris))  # <class 'float'>

str - Tekststrenger

Tekst omsluttes av enkle eller doble anførselstegn:

fornavn = "Kari"
etternavn = 'Nordmann'
setning = "Hei, jeg heter Kari!"

# Sette sammen tekst (konkatenering)
fullt_navn = fornavn + " " + etternavn
print(fullt_navn)  # Skriver ut: Kari Nordmann

bool - Sannhetsverdier

Boolske verdier er enten True (sant) eller False (usant):

er_elev = True
har_bil = False

print(type(er_elev))  # <class 'bool'>

Boolske verdier er spesielt viktige når vi jobber med betingelser (if-setninger), som vi lærer om i neste kapittel.

✏️Sjekke datatyper med type()

Opprett variabler med de fire datatypene og bruk type() til å sjekke hvilken type de har.

# Opprett variabler med forskjellige datatyper
heltall = 42
desimaltall = 3.14
tekst = "Python er gøy"
sannhet = True

# Sjekk datatypene
print(heltall, "har typen:", type(heltall))
print(desimaltall, "har typen:", type(desimaltall))
print(tekst, "har typen:", type(tekst))
print(sannhet, "har typen:", type(sannhet))

Kjøring gir:

42 har typen: <class 'int'>
3.14 har typen: <class 'float'>
Python er gøy har typen: <class 'str'>
True har typen: <class 'bool'>

Funksjonen type() returnerer datatypen til verdien. Dette er nyttig for feilsøking når du er usikker på hvilken type en variabel har.

Typekonvertering

Noen ganger trenger du å konvertere en verdi fra én datatype til en annen. Python har innebygde funksjoner for dette:

# Konvertere til heltall
tall_som_tekst = "42"
tall = int(tall_som_tekst)
print(tall + 8)  # 50

# Konvertere til desimaltall
pris_tekst = "99.90"
pris = float(pris_tekst)
print(pris * 2)  # 199.8

# Konvertere til tekst
alder = 17
tekst = str(alder)
print("Jeg er " + tekst + " år")  # Jeg er 17 år

# Konvertere til bool
print(bool(1))     # True
print(bool(0))     # False
print(bool("Hei")) # True (ikke-tom streng)
print(bool(""))    # False (tom streng)

Typekonvertering er spesielt viktig når du jobber med input(), fordi input() alltid returnerer en tekststreng. Hvis brukeren skriver inn et tall, må du konvertere det til int eller float for å kunne regne med det.

Vanlige konverteringsfunksjoner:

FunksjonKonverterer tilEksempel
int()Heltallint("42") gir 42
float()Desimaltallfloat("3.14") gir 3.14
str()Tekststr(42) gir "42"
bool()Sannhetsverdibool(1) gir True

input() og print() - Kommunisere med brukeren

For å lage interaktive programmer trenger du å kunne ta imot data fra brukeren og vise resultater. Python bruker input() for å lese data og print() for å skrive ut data.

input() - Lese fra brukeren

navn = input("Hva heter du? ")
print("Hei, " + navn + "!")

Kjøring:

Hva heter du? Sara
Hei, Sara!

Viktig: input() returnerer alltid en tekststreng (str). Hvis du vil ha et tall, må du konvertere:

alder_tekst = input("Hvor gammel er du? ")
alder = int(alder_tekst)

# Eller kortere:
alder = int(input("Hvor gammel er du? "))

print() - Skrive ut til brukeren

print() kan ta flere argumenter adskilt med komma:

navn = "Ola"
alder = 16

# Flere argumenter (legger automatisk til mellomrom)
print("Hei,", navn, "- du er", alder, "år gammel")
# Utskrift: Hei, Ola - du er 16 år gammel

# f-strenger (anbefalt metode)
print(f"Hei, {navn} - du er {alder} år gammel")
# Utskrift: Hei, Ola - du er 16 år gammel

f-strenger - Den beste måten å formatere tekst

f-strenger (f-strings) er den anbefalte måten å sette inn variabler i tekst. Sett f foran anførselstegnet og variabelnavnet i krøllparenteser:

pris = 49.90
antall = 3
total = pris * antall

print(f"Du kjøpte {antall} varer til {pris} kr stykket")
print(f"Total: {total} kr")
print(f"Total avrundet: {total:.2f} kr")  # 2 desimaler

Kjøring gir:

Du kjøpte 3 varer til 49.9 kr stykket
Total: 149.7 kr
Total avrundet: 149.70 kr
✏️Interaktiv kalkulator

Lag et program som spør brukeren om to tall og viser summen, differansen, produktet og kvotienten.

# Interaktiv kalkulator
print("=== Enkel kalkulator ===")

# Les inn to tall fra brukeren
tall1 = float(input("Skriv inn det første tallet: "))
tall2 = float(input("Skriv inn det andre tallet: "))

# Beregn resultatene
summen = tall1 + tall2
differanse = tall1 - tall2
produkt = tall1 * tall2

# Vis resultatene med f-strenger
print(f"\n--- Resultater ---")
print(f"{tall1} + {tall2} = {summen}")
print(f"{tall1} - {tall2} = {differanse}")
print(f"{tall1} * {tall2} = {produkt}")

# Sjekk at vi ikke deler på null
if tall2 != 0:
    kvotient = tall1 / tall2
    print(f"{tall1} / {tall2} = {kvotient:.2f}")
else:
    print("Kan ikke dele på null!")

Eksempel på kjøring:

=== Enkel kalkulator ===
Skriv inn det første tallet: 15
Skriv inn det andre tallet: 4

--- Resultater ---
15.0 + 4.0 = 19.0
15.0 - 4.0 = 11.0
15.0 * 4.0 = 60.0
15.0 / 4.0 = 3.75

Vi bruker float() for typekonvertering slik at brukeren kan skrive inn både heltall og desimaltall. f-strengene gjør utskriften ryddig og lesbar.

Oppsummering

I dette kapittelet har du lært:

- Variabel: navngitt referanse til en verdi i minnet.
- Datatyper: int, float, str og bool.
- Typekonvertering: konvertere mellom datatyper med int(), float(), str().
- input() og print(): lese fra og skrive til brukeren.
- f-strenger: anbefalt måte å formatere tekst på.

Noekkelbegreper


BegrepForklaring
VariabelNavngitt lagringssted for en verdi
intHeltall
floatDesimaltall
strTekststreng
boolSannhetsverdi (True/False)

Oppgaver

Lett3 oppgaver
Medium3 oppgaver
Vanskelig2 oppgaver

Dette kapitlet er skrevet av Anthropics toppmodeller (Claude Opus og Claude Fable) og er foreløpig ikke manuelt gjennomgått — kvalitetskontrollen gjøres av uavhengige KI-agenter, og innmeldte feil rettes fortløpende. Funnet en feil? Meld fra, så retter vi den. Les mer om hvordan innholdet lages.