Lær om variabler, grunnleggende datatyper i Python, typekonvertering og input/output.
Variablar og datatypar
I det førre kapittelet skreiv vi program der alle verdiar var skrivne direkte i koden. Men kva om vi vil at programmet skal hugse verdiar, endre dei, eller bruke verdiar som brukaren skriv inn? Då treng vi variablar.
Variablar er ein av dei mest grunnleggjande byggesteinane i programmering. Ein variabel er som ein merkt boks der du kan lagre data. Boksen har eit namn (variabelnamnet), og inne i boksen ligg ein verdi. Du kan når som helst sjå kva som er i boksen, byte ut innhaldet, eller bruke innhaldet i berekningar.
I dette kapittelet skal du lære å opprette variablar, forstå dei ulike datatypane Python tilbyr, konvertere mellom typar, og bruke input/output for å lage interaktive program.
Ein variabel er ein namngjeven referanse til ein verdi lagra i minnet til datamaskina. I Python opprettar du ein variabel ved å gi han eit namn etterfølgt av likskapsteiknet og verdien du vil lagre. Til dømes opprettar alder = 17 ein variabel med namnet alder som inneheld verdien 17. Variabelnamnet er som ein etikett på ein boks, og verdien er innhaldet i boksen. Du kan når som helst endre verdien ved å tilordne ein ny verdi til variabelen.
Opprette variablar i Python
I Python opprettar du ein variabel ved å skrive variabelnamnet, etterfølgt av eit likskapsteikn (=), etterfølgt av verdien:
navn = "Kari"
alder = 17
høyde = 1.72
er_elev = TrueHer har vi oppretta fire variablar med ulike typar verdiar. Likskapsteiknet i programmering tyder ikkje «er lik» slik som i matematikk. Det tyder «tilordne verdien til høgre til variabelen til venstre». Vi seier at vi tilordnar verdien "Kari" til variabelen navn.
Reglar for variabelnamn i Python:
- Namnet kan innehalde bokstavar, tal og understrek (_)
- Namnet kan ikkje starte med eit tal (2navn er ugyldig)
- Namnet kan ikkje innehalde mellomrom (bruk understrek i staden: mitt_navn)
- Namnet kan ikkje vere eit av Pythons reserverte nøkkelord (som if, for, while, True, False)
- Python skil mellom store og små bokstavar (Navn og navn er to ulike variablar)
Gode variabelnamn:
# Gode, beskrivende navn:
fornavn = "Erik"
antall_elever = 28
gjennomsnittskarakter = 4.5
# Dårlige, uforståelige navn:
x = "Erik"
n = 28
g = 4.5Bruk alltid skildrande variabelnamn som fortel kva variabelen inneheld. Det gjer koden mykje lettare å lese og forstå.
Endre verdiar
Ein variabel kan endre verdi i løpet av programmet. Den nye verdien overskriv 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: 15Linja poeng = poeng + 5 kan verke merkeleg. Men hugs at = tyder «tilordne». Python reknar først ut uttrykket på høgre side (15 + 5 = 20... nei, 10 + 5 = 15), og tilordnar deretter resultatet til variabelen poeng. Dette er eit svært vanleg mønster i programmering.
Python har òg forkorta skrivemåtar for å oppdatere variablar:
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.0Legg merke til at etter divisjon med /= blei resultatet 60.0 (eit desimaltal), ikkje 60 (eit heiltal). Dette bringar oss til eit viktig tema: datatypar.
Ein datatype angir kva slags data ein variabel inneheld, og avgjer kva operasjonar som kan utførast på dataa. Dei fire grunnleggjande datatypane i Python er: int (heiltal som 42), float (desimaltal som 3.14), str (tekststrengar som "Hei"), og bool (sanningsverdiar: True eller False). Python avgjer automatisk datatypen basert på verdien du tilordnar, noko som blir kalla dynamisk typing. Du kan sjekke datatypen med funksjonen type().
Datatypane i detalj
int - Heiltal
Heiltal er heile tal utan desimalar. Dei kan vere positive, negative eller null:
alder = 17
temperatur = -5
antall = 0
stort_tall = 1000000
print(type(alder)) # <class 'int'>Du kan utføre matematiske operasjonar med heiltal:
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: 1000float - Desimaltal
Desimaltal blir brukte når du treng presisjon utover heile tal:
pris = 49.90
pi = 3.14159
temperatur = -2.5
print(type(pris)) # <class 'float'>str - Tekststrengar
Tekst blir omslutta av enkle eller doble hermeteikn:
fornavn = "Kari"
etternavn = 'Nordmann'
setning = "Hei, jeg heter Kari!"
# Sette sammen tekst (konkatenering)
fullt_navn = fornavn + " " + etternavn
print(fullt_navn) # Skriver ut: Kari Nordmannbool - Sanningsverdiar
Boolske verdiar er anten True (sant) eller False (usant):
er_elev = True
har_bil = False
print(type(er_elev)) # <class 'bool'>Boolske verdiar er spesielt viktige når vi jobbar med vilkår (if-setningar), som vi lærer om i neste kapittel.
Opprett variablar med dei fire datatypane og bruk type() til å sjekke kva type dei 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))Køyring 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å kva type ein variabel har.
Typekonvertering
Nokre gonger treng du å konvertere ein verdi frå éin datatype til ein annan. Python har innebygde funksjonar 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 jobbar med input(), fordi input() alltid returnerer ein tekststreng. Dersom brukaren skriv inn eit tal, må du konvertere det til int eller float for å kunne rekne med det.
Vanlege konverteringsfunksjonar:
| Funksjon | Konverterer til | Døme |
|---|---|---|
int() | Heiltal | int("42") gir 42 |
float() | Desimaltal | float("3.14") gir 3.14 |
str() | Tekst | str(42) gir "42" |
bool() | Sanningsverdi | bool(1) gir True |
input() og print() - Kommunisere med brukaren
For å lage interaktive program treng du å kunne ta imot data frå brukaren og vise resultat. Python brukar input() for å lese data og print() for å skrive ut data.
input() - Lese frå brukaren
navn = input("Hva heter du? ")
print("Hei, " + navn + "!")Køyring:
Hva heter du? Sara
Hei, Sara!Viktig: input() returnerer alltid ein tekststreng (str). Dersom du vil ha eit tal, 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 brukaren
print() kan ta fleire argument skilde 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 gammelf-strengar - Den beste måten å formatere tekst
f-strengar (f-strings) er den tilrådde måten å setje inn variablar i tekst. Set f framfor hermeteiknet og variabelnamnet i krøllparentesar:
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 desimalerKøyring gir:
Du kjøpte 3 varer til 49.9 kr stykket
Total: 149.7 kr
Total avrundet: 149.70 krLag eit program som spør brukaren om to tal 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!")Døme på køyring:
=== 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.75Vi brukar float() for typekonvertering slik at brukaren kan skrive inn både heiltal og desimaltal. f-strengane gjer utskrifta ryddig og lesbar.
Dersom du prøver å konvertere ein tekst som ikkje inneheld eit gyldig tal til int eller float, vil Python krasje med ei feilmelding:
tall = int("hei") # ValueError: invalid literal for int()Ver forsiktig med kva brukaren skriv inn. I kapittel 2.6 lærer du å handtere slike feil med try/except.
f-strengar er den mest lesbare og effektive måten å kombinere tekst og variablar i Python. I staden for å bruke + for å setje saman strengar, bruk f"tekst {variabel} mer tekst". Det gjer koden mykje enklare å lese, og du slepp å tenkje på typekonvertering inne i print-setninga.
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
| Begrep | Forklaring |
|---|---|
| Variabel | Navngitt lagringssted for en verdi |
| int | Heltall |
| float | Desimaltall |
| str | Tekststreng |
| bool | Sannhetsverdi (True/False) |
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.