Python: Forskjell mellom sideversjoner

Fra Matematikk.net
Hopp til: navigasjon, søk
 
(85 mellomliggende sideversjoner av samme bruker vises ikke)
Linje 1: Linje 1:


Her vil det etter hvert komme en del stoff om programmering i vgs. Dersom du har kunnskaper er det fint om du bidrar.


Det som kommer her er ment for personer som ikke kjenner Python og ikke har noen programmeringserfaring fra før.


Du skal nå lære å skrive en oppskrift på noe som skal utføres, i et språk som datamaskinen forstår. Datamaskinen og oppskriften vil da kunne utføre store arbeidsoppgaver på kort tid. En datamaskin kan forstå mange språk. Du skal brukket  et som heter Pyton. Nedenfor har du lenker til to serier med videokurs. Vi anbefaler at du koder / programmerer parallelt med at du ser videoene. Bruk pauseknappen.  
Python er et moderne, lettlest og kraftig programmeringsspråk. Denne artikklen tar deg steg for steg gjennom grunnleggende programmering, med vekt på klasser, funksjoner, inn- og ut-data, løkker og valg.
 
Python er et språk som er laget for å være enkelt å lese og skrive. Koden ligner på naturlig språk, og det er derfor mye brukt i utdanning, vitenskap og webutvikling.
 
Du skal nå lære å skrive en oppskrift på noe som skal utføres, i et språk som datamaskinen forstår. Datamaskinen og oppskriften vil da kunne utføre store arbeidsoppgaver på kort tid. En datamaskin kan forstå mange språk. Her bruker vi Pyton (Python). Nedenfor har du lenker til to serier med videokurs. Vi anbefaler at du koder / programmerer parallelt med at du ser videoene. Bruk pauseknappen.  


Denne serien anbefales først:
Denne serien anbefales først:
Linje 14: Linje 16:
===Kom i gang===
===Kom i gang===


Python 3 kan du laste ned  her: [https://www.python.org/downloads/ Python 3].  Du trenger et egnet sted for å skrive programmer.En grei editor for begynnere heter [https://codewith.mu Mu]. Her er noen andre muligheter : [https://www.programiz.com/python-programming/ide noen editorer]
Python 3 kan du laste ned  her: [https://www.python.org/downloads/ Python 3].   
 
Du trenger et egnet sted for å skrive programmer. En grei editor for begynnere heter [https://codewith.mu Mu].  
 
Her er noen andre muligheter : [https://www.programiz.com/python-programming/ide noen editorer]
 
Før vi begynner på selve programmet trenger man å lage en plan, flytskjema.
 
=====1. Flytskjema=====
 
Et flytskjema er en disposisjon eller oversikt over det programmet skal gjøre. Det er en hjelp til å holde oversikt og til å strukturere egne tanker. Det er flere symboler som brukes og vi ser her på fem av dem.
 
[[File: flyt1.png|centre|300px  ]]
 
 
'''Oval boks :''' start eller slutt
 
'''Parallellogram:''' Her skal noe inn eller ut
 
'''Rektangel:''' Programmet gjør noe
 
'''Diamant:''' Her utføres et valg
 
'''Pilene:'''  brukes til å angi rekkefølgen på prosessen ved at de går fra en boks til neste.
 
Det enkleste når man skal lage flytskjema er papir og blyant, men det er også en mulighet i Word, og annen software, men det tar normalt lengre tid men ser kanskje litt penere ut.
 
=====Eksempel på bruk av flytskjema=====
 
Vi ønsker å lage et program som tar kvadratroten av en differanse. For eksempel $ \sqrt d = \sqrt{a-b}$ Et flytskjema kan se slik ut:
 
[[File: kvadflyt.png|centre ]]
 
Flytskjemaet vil hjelpe deg til å sortere de algoritmisk tankene og til en dypere forståelse av det du skal gjøre. En god vane er å lage et flytskjema før du begynner selve programmeringen.
 
La oss se litt nærmere på flytskjemaet før vi omsetter det i ett program.
 
 
1. I starten av programmet er det fint med informasjon om hva programmet gjør, når det ble laget, og hvem som har laget det. Bruk tegnet # i starten av hver programlinje, Det vil ikke bli lest av datamaskinen, men er kun informasjon til den som skal lese programmet.
 
2. Her kommuniserer vi med maskinen. Vi må legge inn verdier for tallene a og b
 
3. Her regner man ut verdien av a - b.
 
4 / 5. Vi får nå 3 muligheter. Svaret vi får kan bli negativt, null eller positivt. Dersom det blir negativt har vi ingen løsning. Dersom a -b = 0 er svaret null.
 
7. Dersom a - b er et positivt tall kan vi ta kvadratroten av det.
 
8. Vi skriver ut svaret, dersom det d> 0, og avslutter.
 
Før vi kan lage programmet må vi kjenne syntaxen. Syntax er språkets gramatikk, hvordan de forskjellige delene av språket virker sammen og kan danne et fungerende  dataprogram.


=== Syntaks===
=== Syntaks===
* Pyton har linjenummer som gjør det lett å referere til en kommando.
*En eller flere linjer kan godt være tomme dersom du synes det øker lesbarheten til programmet.


*Python utfører instruksjonene i ordnet rekkefølge. Kommandoen på linje 4 blir utført. Så blir kommandoen på linje 5 utført, osv.
*Python utfører instruksjonene i ordnet rekkefølge. Kommandoen på linje 4 blir utført. Så blir kommandoen på linje 5 utført, osv.
Linje 22: Linje 78:
*Python skiller mellom store og SMÅ bokstaver.
*Python skiller mellom store og SMÅ bokstaver.


*Matematisk notasjon
*Innrykk betyr noe, og må kun utføres når syntax krever det (  )
 
*Når du får en feilmelding (det skjer ofte) er der referert til et linjenummer. Dersom du ikke finner feilen på den angitte linje, sjekk linjen før og etter også.
 
* En programlinje som starter med # er informasjon til den som leser programmet og har ingen påvirkning i koden.
 
 
 
 
=====1. Matematisk notasjon=====
 
 
 
[[ File:07112025-02.png|centre|450px]]


INN--------------------------$\rightarrow$ UT
'''Linje:'''


[[ File:py3.png]]  [[ File:py4.png]]
'''1''' Kun en forklaring til leser.


Man bruke * for multiplikasjon og ** for "opphøyd i", $10^3$ skrives 10 ** 3. Linje 7 viser heltallsdivisjon. Tallet tre går 3 ganger opp i 10. Linje 8 viser resten vi får når 10 deles på tre. Det kalles modulo.
'''2''' Tilordner a verdien 10.
.
===Flytskjema===


Et flytskjema er en disposisjon eller oversikt over det programmet skal gjøre. Det er en hjelp til å holde oversikt og til å strukturere egne tanker. Det er flere symboler som brukes og vi ser her på fem av dem.  
'''3''' Tilordner b verdien 3.
 
'''4''' c er summen av a og b, altså 13.


[[File: flyt1.png  ]]
'''5''' d er differansen mellom a og b, 7.




Oval boks : start eller slutt
'''6''' e er produktet av a og b, 30.


Paralellogram: Her skal noe inn eller ut
'''7''' f er a opphøyd i b, altså $10^3$ som er 1000.


Rektangel: Programmet gjør noe
'''8''' g er desimaltallet vi får fra divisjonen a:b. Legg merke til hvordan vi styrer antall desimaler i utskriften, linje 11.


Diamant: Her utføres et valg
'''9''' Heltallsdivisjon. Returnerer hvor mange ganger b går opp i a.


Pilene brukes til å angi rekkefølgen prosessen ved at de går fra en boks til neste. Det enkleste når man skal lage flytskjema er papir og blyant, men det er også en mulighet i Word, og annen software, men det tar normalt lengre tid men ser kanskje litt penere ut.
'''10''' Resten som blir til overs når 10 deles 3. Kalles modulo


===Eksempel på bruk av flytskjema===
'''11''' Legg merke til hvordan "f- string" brukes for å kontrolere antall desimaler i utskriften til g.
 
=====2. Sammenligningsoperatorer =====
{| class="wikitable" style="margin:auto;"
! Operator !! Betydning !! Eksempel
|-
| == || lik || a == b
|-
| != || ulik || a != b
|-
| < || mindre enn || a < b
|-
| > || større enn || a > b
|-
| <= || mindre eller lik || a <= b
|-
| >= || større eller lik || a >= b
|}
 
===== 3. Inn- og ut-data =====


Vi ønsker å lage et program som tar kvadratroten av en differanse. For eksempel $ \sqrt d = \sqrt{a-b}$ Et flytskjema kan se slik ut:


[[File: kvadflyt.png ]]


Flytskjemaet vil hjelpe deg til å sortere de algoritmisk tankene og til en dypere forståelse av det du skal gjøre. En god vane er å lage et flytskjema før du begynner selve programmeringen.


La oss se litt nærmere på flytskjemaet før vi omsetter det i ett program.
Når vi programmerer ønsker vi ofte å hente informasjon fra brukeren (inn-data), gjøre noe med den, og vise resultatet (ut-data). I Python bruker vi blant annet funksjonene '''input()''' for å ta imot data og '''print()''' for å vise data.


=====UT, print=====


1. I starten av programmet er det fint med informasjon om hva programmet gjør, når det ble laget, og hvem som har laget det. Bruk tegnet # i starten av hver programlinje, Det vil ikke bli lest av datamaskinen, men er kun informasjon til den som skal lese programmet.
[[File: 06112025-01.png |centre|400px]]


2. Her kommuniserer vi med maskinen. Vi må legge inn verdier for tallene a og b


3. Her regner man ut verdien av a - b. Vi får nå 3 muligheter. Svaret vi får kan bli negativt, null eller positivt. Dersom det blir negativt har vi ingen løsning. Dersom a -b = 0 er svaret null. Dersom a - b er et positivt tall kan vi ta kvadratroten av det.
* '''Linje 1 ''' Starte med # og er kun informasjon til bruker, påvirker ikke programmet
* '''Linje 2''' Skriver ut det som står i anførselstegn i ''print ()'' setningen


=====INN, input=====
[[File: progflyt.png ]]
[[File: progflyt.png ]]
=====4. Biblioteker=====
Generelle matematikk biblioteker
{| class="wikitable"
! Bibliotek
! Hva det er bra for
! Kommentar
|-
| '''math''' (innebygget)
| Grunnleggende matematikk (sin, cos, log, etc.)
| Lett, raskt, ingen ekstra installasjon.
|-
| '''NumPy'''
| Effektive matriser og vektorisert matematikk
| Fundament for mye vitenskapelig Python.
|-
| '''SciPy'''
| Numerisk analyse: integrasjon, optimalisering, statistikk
| Bygger videre på NumPy, veldig kraftig.
|-
| '''SymPy'''
| Symbolsk matematikk (lignende Mathematica)
| Perfekt for algebra, forenkling, derivert, etc.
|-
| '''Pandas'''
| Databehandling og analyse
| Ikke primært matematikk, men håndterer tall effektivt.
|-
| '''Numba'''
| Akselererer Python med JIT-kompilering
| Gir fart uten å endre koden for mye.
|-
| '''JAX'''
| Automatisk derivasjon og GPU/TPU-akselerasjon
| For maskinlæring og numeriske beregninger.
|-
| '''PyTorch''' / '''TensorFlow'''
| Differensierbare tensorer (ML)
| Hvis du gjør avansert matematikk med læringsmodeller.
|}
Biblioteker mot plotting
{| class="wikitable"
! Bibliotek
! Hva det er bra for
! Kommentar
|-
| '''Matplotlib'''
| Standard 2D/3D plotting (linjer, punkter, figurer)
| Stabil, fleksibel og grunnlaget for mange andre biblioteker.
|-
| '''Seaborn'''
| Statistiske grafer (fordelinger, heatmaps, regresjon osv.)
| Bygger på Matplotlib, gir pene grafer med mindre kode.
|-
| '''Plotly'''
| Interaktive grafer med zoom, hover og web-/notebook-støtte
| Perfekt for presentasjoner og interaktive rapporter.
|-
| '''Bokeh'''
| Interaktive instrumentpaneler og visuelle apper
| Egen "web-følelse", fint for dashboards.
|-
| '''PyPlot (Matplotlib API)'''
| Enklere grensesnitt til Matplotlib
| Ofte brukt i undervisning og Jupyter Notebooks.
|-
| '''PyVista'''
| 3D visualisering av mesh- og volumdata
| Kjempegod for vitenskapelige modeller og simulering.
|-
| '''Mayavi'''
| Avansert 3D vitenskapelig visualisering
| Sterk innen fysikk, væskedynamikk og feltvisualisering.
|-
| '''Holoviews'''
| Deklarativ visualisering av datastrukturer
| Samhandler godt med både Bokeh og Matplotlib.
|}
Hvordan importere "lett" — uten å dra inn for mye
Hvis du vil unngå å laste inn hele biblioteket (for minne- og oppstartsytelse), kan du importere kun det du trenger:
from math import sin, cos, pi
Dette er mye lettere enn:
import math
For større biblioteker (som NumPy), er det vanlig å importere med alias:
import numpy as np
'''Alias'''
Å importere med alias er egentlig bare å gi et bibliotek et kortere og mer praktisk navn i koden din. Det påvirker ikke funksjonalitet, bare hvor mye du må skrive for å bruke det.
For eksempel:
import numpy as np
Her sier du:
«Jeg vil bruke numpy, men jeg kaller det np i stedet.»
=====5. valg=====
'''If - elif'''
[[File: py1-valg.png |centre ]]
I dette lille programmet taster man inn antall flyreiser man har i løpet av året. Avhengig av hvor mange man har får man en kommentar fra programmet.
===== 6. Løkker =====
Løkker brukes til å gjenta kode flere ganger.
===== For-løkke =====
=====Telle med range()=====
[[File: 04112025-02.png |centre|400px]]
Output
[[File: 04112025-03.png |centre|200px]]
=====Gå gjennom en liste=====
[[File: 04112025-04.png |centre|350px]]
=====Gå gjennom en tekst streng=====
[[File: 04112025-05.png |centre|350px]]
=====Med betingelse=====
[[File: 04112025-06.png |centre|300px]]
For å unngå å  si at null er et partall kan man legge til en ekstra betingelse i if setningen:
[[File: 04112025-07.png |centre|300px]]
===== While-løkke =====
En while-løkke gjentar en blokk kode så lenge en betingelse er sann. Du bruker while når du ikke nødvendigvis vet på forhånd hvor mange iterasjoner som trengs — bare når du skal slutte (når betingelsen blir usann).
=====Struktur=====
[[File: 04112025-08.png |centre|400px]]
=====Teller (til 5)=====
[[File: 04112025-09.png |centre|200px]]
Forklaring:
*i = 1 starter telleren.
*while i <= 5: sjekker før hver iterasjon.
*i += 1 øker telleren — viktig for å unngå uendelig løkke.
===== 7. Funksjoner=====
I Python (og andre programmeringsspråk) er en funksjon en liten "maskin" som utfører en bestemt oppgave. Du kan gi funksjonen informasjon (kalt argumenter), og noen ganger gir funksjonen noe tilbake (kalt return-verdi).
Tenk på en funksjon som en brødskivegrill:
input (brødskive) → TOASTER (funksjon) → output (ristet brød)
Noen funksjoner rister bare brødet (gjør noe), andre gir deg ristet brød tilbake (returnerer noe).
Hvorfor bruke funksjoner?
*For å gjenta kode uten å skrive alt flere ganger
*For å gjøre kode ryddigere og enklere å forstå
*For å kunne dele opp store problemer i mindre deler
------------------------------
------------------------------
------------------------------


=== Ett par eksempler med kommentarer===
=== Ett par eksempler med kommentarer===
Linje 89: Linje 388:
De tre første linjene i svaret er et resultat av at jeg valgte a =1, b = -4 og c = 2. Tilsvarer programlinjene 4 - 6.
De tre første linjene i svaret er et resultat av at jeg valgte a =1, b = -4 og c = 2. Tilsvarer programlinjene 4 - 6.


===VALG===
===LØKKER===
 
Et dataprogram er godt egnet til å gjøre kjedelige ting som for eksempel mange gjentakende operasjoner. Vi kan for eksempel lage et program som regner ut summen av alle heltall mellom 1 og 1 000 000.
 
Dette er jo et ganske ubrukelig program for alt annet enn å regne ut summen at heltallene fra 1 til 1 000 000. Vi han modifisere programmet slik at vi selv bestemmer den øvre grensen.
 
== Ut-data: Å vise tekst med print() ==
 
For å vise noe på skjermen i Python bruker vi funksjonen '''print()'''.
 
Eksempel:
 
<source lang="python">
print("Hei verden!")
</source>
 
Når programmet kjører, vil det skrive:
 
<pre>
Hei verden!
</pre>
 
Du kan skrive ut tall, tekst, og variabler:
 
<source lang="python">
navn = "Anna"
alder = 14
print("Hei", navn, "du er", alder, "år gammel.")
</source>
 
== Inn-data: Å hente tekst med input() ==
 
Med '''input()''' kan vi spørre brukeren om noe og lagre svaret i en variabel.
 
<source lang="python">
navn = input("Hva heter du? ")
print("Hei", navn)
</source>
 
Når programmet kjører:
 
<pre>
Hva heter du? Eva
Hei Eva
</pre>
 
=== Viktig: input() gir alltid tekst ===
 
Hvis du vil jobbe med tall, må du gjøre om teksten til et tall med '''int()''' eller '''float()'''.
 
==== Eksempel med heltall (int) ====
 
<source lang="python">
alder = input("Hvor gammel er du? ")
alder = int(alder)
print("Neste år blir du", alder + 1)
</source>
 
==== Eksempel med desimaltall (float) ====
 
<source lang="python">
lengde = input("Hvor lang er planken i meter? ")
lengde = float(lengde)
print("Planken er", lengde, "meter lang.")
</source>
 
== Kombinere inn- og ut-data ==


If - elif
Her er et program som regner ut arealet av et rektangel:


[[File: py1-valg.png ]]
<source lang="python">
bredde = float(input("Skriv inn bredden: "))
høyde = float(input("Skriv inn høyden: "))


I dette lille programmet taster man inn antall flyreiser man har i løpet av året. Avhengig av hvor mange man har får man en kommentar fra programmet.
areal = bredde * høyde
 
print("Arealet er:", areal)
</source>


== Formatering av tekst ==


===LØKKER===
Python lar oss formatere utskriften på en ryddig måte.


Et dataprogram er godt egnet til å gjøre kjedelige ting som for eksempel mange gjentakende operasjoner. Vi kan for eksempel lage et program som regner ut summen av alle heltall mellom 1 og 1 000 000.
== Flere eksempler ==


Dette er jo et ganske ubrukelig program for alt annet enn å regne ut summen at heltallene fra 1 til 1 000 000. Vi han modifisere programmet slik at vi selv bestemmer den øvre grensen.
=== 1. Legge sammen to tall ===
<source lang="python">
a = int(input("Skriv et tall: "))
b = int(input("Skriv et nytt tall: "))


sum = a + b
print(f"Summen av tallene er {sum}")
</source>


= Lærebok i Python =
=== 2. Hilse på mange personer ===
<source lang="python">
for i in range(3):
    navn = input("Skriv et navn: ")
    print(f"Hei {navn}!")
</source>


Python er et moderne, lettlest og kraftig programmeringsspråk. Denne boka tar deg steg for steg gjennom grunnleggende programmering, med vekt på **klasser, funksjoner, inn- og ut-data, løkker og valg**.
=== 3. Liten kalkulator ===
<source lang="python">
tall1 = float(input("Første tall: "))
tall2 = float(input("Andre tall: "))


----
print("Velg operasjon (+, -, *, /)")
operasjon = input("Skriv operasjon: ")


== 1. Introduksjon ==
if operasjon == "+":
    print(tall1 + tall2)
elif operasjon == "-":
    print(tall1 - tall2)
elif operasjon == "*":
    print(tall1 * tall2)
elif operasjon == "/":
    print(tall1 / tall2)
else:
    print("Ukjent operasjon.")
</source>


Python er et språk som er laget for å være enkelt å lese og skrive. Koden ligner på naturlig språk, og det er derfor mye brukt i utdanning, vitenskap og webutvikling.
== Oppsummering ==
* '''print()''' brukes for å vise tekst eller tall.
* '''input()''' brukes for å hente tekst fra brukeren.
* For å bruke tall må vi konvertere med '''int()''' eller '''float()'''.
* Vi kan kombinere inn- og ut-data for å lage interaktive programmer.


Eksempel:
== Se også ==
<syntaxhighlight lang="python">
* [[Python variabler]]
print("Hei, verden!")
* [[Betingelser (if-setninger)]]
</syntaxhighlight>
* [[Løkker i Python]]


Dette programmet skriver:
<syntaxhighlight lang="text">
Hei, verden!
</syntaxhighlight>


----


== 2. Inn- og ut-data ==


Python bruker `input()` for å lese data fra brukeren, og `print()` for å skrive ut tekst til skjermen.
Python bruker `input()` for å lese data fra brukeren, og `print()` for å skrive ut tekst til skjermen.
Linje 176: Linje 570:
If-setninger brukes for å velge hva programmet skal gjøre.
If-setninger brukes for å velge hva programmet skal gjøre.


<syntaxhighlight lang="python">
alder = int(input("Hvor gammel er du? "))


if alder < 18:
[[File: 04112025-01.png |centre|400px]]
    print("Du er mindreårig.")
 
elif alder < 67:
 
    print("Du er voksen.")
 
else:
 
    print("Du er pensjonist.")
----
</syntaxhighlight>


=== Sammenligningsoperatorer ===
{| class="wikitable"
! Operator !! Betydning !! Eksempel
|-
| == || lik || a == b
|-
| != || ulik || a != b
|-
| < || mindre enn || a < b
|-
| > || større enn || a > b
|-
| <= || mindre eller lik || a <= b
|-
| >= || større eller lik || a >= b
|}


----
----


== 5. Løkker ==
== 6. Funksjoner ==
 
= Funksjoner i Python =
 
Funksjoner er en viktig del av programmering. De hjelper oss med å gjøre kode enklere å forstå, mer organisert, og lettere å gjenbruke. Her lærer du hva funksjoner er, hvordan de brukes og hvordan du lager dine egne.
 
== Hva er en funksjon? ==
En funksjon kan ses som en liten "maskin" som utfører en bestemt oppgave.
 
Tenk:
input (data) → FUNKSJON → output (resultat)
 
Noen funksjoner viser bare noe på skjermen, andre gir et resultat tilbake som vi kan bruke senere.
 
== Hvorfor bruke funksjoner? ==
* For å unngå å skrive den samme koden mange ganger.
* For å dele opp store problemer i mindre deler.
* For å gjøre programmet oversiktlig og lettere å forstå.
 
== Lage en enkel funksjon ==
Vi lager funksjoner med nøkkelordet <code>def</code>.
 
<pre>
def si_hei():
    print("Hei!")
</pre>
 
Kalle funksjonen:
<pre>
si_hei()
</pre>
 
Output:
<pre>
Hei!
</pre>
 
== Funksjoner med argumenter ==
Argumenter er data funksjonen får for å jobbe med.
 
<pre>
def si_hei_til(navn):
    print("Hei,", navn)
 
si_hei_til("Fatima")
si_hei_til("Jonas")
</pre>
 
Output:
<pre>
Hei, Fatima
Hei, Jonas
</pre>
 
Flere argumenter:
<pre>
def legg_sammen(a, b):
    print(a + b)
 
legg_sammen(3, 5)
</pre>
 
Output:
<pre>
8
</pre>
 
== Funksjoner som returnerer verdier ==
<code>return</code> sender data tilbake.
 
<pre>
def dobbel(x):
    return x * 2
 
resultat = dobbel(10)
print(resultat)
</pre>
 
Output:
<pre>
20
</pre>
 
Forskjellen:
* <code>print()</code> viser noe til brukeren.
* <code>return</code> gir data tilbake til programmet.
 
== Standardverdier (default argumenter) ==
En funksjon kan ha standardverdi for argumenter.
 
<pre>
def hils(navn="ukjent person"):
    print("Hei", navn)
 
hils()
hils("Emma")
</pre>
 
Output:
<pre>
Hei ukjent person
Hei Emma
</pre>
 
== Funksjoner som bruker andre funksjoner ==
<pre>
def kvadrat(x):
    return x * x
 
def sum_av_kvadrater(a, b):
    return kvadrat(a) + kvadrat(b)
 
print(sum_av_kvadrater(2, 3))
</pre>


Løkker brukes til å gjenta kode flere ganger.
Output:
<pre>
13
</pre>
 
== Eksempel fra virkeligheten ==
Beregn arealet av en sirkel:
 
<pre>
import math
 
def areal_sirkel(radius):
    return math.pi * radius**2


=== For-løkke ===
print(areal_sirkel(5))
<syntaxhighlight lang="python">
</pre>
for i in range(5):
    print("Tallet er", i)
</syntaxhighlight>


Utdata:
Output (ca.):
<syntaxhighlight lang="text">
<pre>
Tallet er 0
78.53981633974483
Tallet er 1
</pre>
Tallet er 2
Tallet er 3
Tallet er 4
</syntaxhighlight>


=== While-løkke ===
== Vanlige feil ==
<syntaxhighlight lang="python">
{| class="wikitable"
teller = 0
! Feil !! Eksempel !! Forklaring
while teller < 5:
|-
    print("Teller:", teller)
| Glemmer () når funksjonen kalles || <code>si_hei</code> || Da kjøres ikke funksjonen.
    teller += 1
|-
</syntaxhighlight>
| Feil innrykk || <code>IndentationError</code> || Python må vite hva som hører til funksjonen.
|-
| Glemmer <code>return</code> || Resultat blir <code>None</code> || Funksjonen gir ikke noe tilbake.
|}


=== Kombinasjon med if ===
== Oppgaver ==
<syntaxhighlight lang="python">
# Lag en funksjon som regner ut areal av et rektangel.
for tall in range(1, 11):
# Lag en funksjon som skriver ut navn og alder i en setning.
    if tall % 2 == 0:
# Lag en funksjon som sjekker om et tall er partall eller oddetall.
        print(tall, "er partall")
# Lag en enkel kalkulator med funksjoner for +, -, * og /.
    else:
        print(tall, "er oddetall")
</syntaxhighlight>


----
== Oppsummering ==
{| class="wikitable"
! Begrep !! Forklaring
|-
| Funksjon || En kode-del som utfører en bestemt oppgave
|-
| Argument || Data som sendes inn til funksjonen
|-
| Return || Data som funksjonen sender tilbake
|-
| print() || Viser data
|-
| return || Gir data tilbake til programmet
|}


== 6. Funksjoner ==


Funksjoner brukes for å organisere koden og gjøre den gjenbrukbar.
Funksjoner brukes for å organisere koden og gjøre den gjenbrukbar.
Linje 359: Linje 864:
----
----


== 10. Oppsummering ==


I denne boka har du lært om:
* Variabler og datatyper
* Inn- og ut-data
* Valg (if-setninger)
* Løkker (for og while)
* Funksjoner
* Klasser og objekter
* Filbehandling
Videre kan du lære mer om:
* Feilhåndtering (try/except)
* Moduler og pakker
* Arv og polymorfi
* Biblioteker som `math`, `datetime`, `random` og `pandas`


----
----
Linje 387: Linje 877:
----
----
''Sist oppdatert: 2025''
''Sist oppdatert: 2025''
= Lærebok i Python (Del 2) =
Denne delen bygger videre på grunnleggende Python, og går dypere inn i **datastrukturer, feilhåndtering, moduler og filformat**. 
Du bør kunne variabler, løkker, valg, funksjoner og klasser før du begynner her.
----
== 12. Lister ==
Lister brukes til å lagre flere verdier i én variabel.
<syntaxhighlight lang="python">
frukt = ["eple", "banan", "appelsin"]
print(frukt)
</syntaxhighlight>
=== Tilgang til elementer ===
<syntaxhighlight lang="python">
print(frukt[0])  # eple
print(frukt[-1]) # appelsin
</syntaxhighlight>
=== Legge til og fjerne elementer ===
<syntaxhighlight lang="python">
frukt.append("druer")  # Legg til på slutten
frukt.remove("banan")  # Fjern element
print(frukt)
</syntaxhighlight>
=== Løkke gjennom liste ===
<syntaxhighlight lang="python">
for vare in frukt:
    print("Jeg liker", vare)
</syntaxhighlight>
=== Listeforståelser (list comprehensions) ===
<syntaxhighlight lang="python">
tall = [x * 2 for x in range(5)]
print(tall)  # [0, 2, 4, 6, 8]
</syntaxhighlight>
----
== 13. Tupler ==
En **tuple** er som en liste, men kan ikke endres (den er uforanderlig).
<syntaxhighlight lang="python">
person = ("Ola", 25)
print(person[0])  # Ola
</syntaxhighlight>
Du kan bruke tupler som nøkler i ordbøker (dict) fordi de er uforanderlige.
----
== 14. Dictionaries (Ordbøker) ==
En dictionary lagrer data som **nøkkel:verdi-par**.
<syntaxhighlight lang="python">
student = {
    "navn": "Kari",
    "alder": 21,
    "studie": "Informatikk"
}
print(student["navn"])
</syntaxhighlight>
=== Legge til og endre ===
<syntaxhighlight lang="python">
student["alder"] = 22
student["by"] = "Oslo"
</syntaxhighlight>
=== Løkke gjennom dictionary ===
<syntaxhighlight lang="python">
for nøkkel, verdi in student.items():
    print(nøkkel, ":", verdi)
</syntaxhighlight>
----
== 15. Feilhåndtering ==
Når noe går galt, kan programmet stoppe. 
Med **try-except** kan du fange og håndtere feil.
<syntaxhighlight lang="python">
try:
    tall = int(input("Skriv et tall: "))
    print("Kvadratet er", tall * tall)
except ValueError:
    print("Du må skrive et heltall!")
</syntaxhighlight>
=== Flere typer feil ===
<syntaxhighlight lang="python">
try:
    fil = open("data.txt", "r")
    innhold = fil.read()
    print(innhold)
except FileNotFoundError:
    print("Filen finnes ikke!")
finally:
    print("Programmet er ferdig.")
</syntaxhighlight>
* `try` – koden som kan feile 
* `except` – hva som skal skje hvis det feiler 
* `finally` – kjøres alltid, uansett 
----
== 16. Moduler og biblioteker ==
Moduler er Python-filer med funksjoner du kan gjenbruke.
=== Bruke standardbibliotek ===
<syntaxhighlight lang="python">
import math
print(math.sqrt(16))  # 4.0
</syntaxhighlight>
=== Lage egne moduler ===
Lag en fil `minmodul.py`:
<syntaxhighlight lang="python">
def hei():
    print("Hei fra min modul!")
</syntaxhighlight>
Og importer den i et annet program:
<syntaxhighlight lang="python">
import minmodul
minmodul.hei()
</syntaxhighlight>
=== Forkortelser ===
<syntaxhighlight lang="python">
import random as r
print(r.randint(1, 10))
</syntaxhighlight>
----
== 17. JSON-filer ==
JSON brukes for å lagre strukturerte data. 
Python har et innebygd bibliotek kalt `json`.
=== Skrive JSON til fil ===
<syntaxhighlight lang="python">
import json
data = {"navn": "Ola", "alder": 25, "by": "Bergen"}
with open("data.json", "w") as fil:
    json.dump(data, fil)
</syntaxhighlight>
=== Lese JSON fra fil ===
<syntaxhighlight lang="python">
with open("data.json", "r") as fil:
    innhold = json.load(fil)
    print(innhold["navn"])
</syntaxhighlight>
---
== 18. Lister av objekter ==
Du kan lagre flere objekter i en liste for enkel håndtering.
<syntaxhighlight lang="python">
class Bil:
    def __init__(self, merke, år):
        self.merke = merke
        self.år = år
    def __str__(self):
        return f"{self.merke} ({self.år})"
biler = [
    Bil("Toyota", 2015),
    Bil("Tesla", 2022),
    Bil("Volvo", 2018)
]
for bil in biler:
    print(bil)
</syntaxhighlight>
---
== 19. Arv og utvidelse av klasser ==
En klasse kan arve fra en annen klasse.
<syntaxhighlight lang="python">
class Dyr:
    def __init__(self, navn):
        self.navn = navn
    def lag_lyd(self):
        print("Ukjent lyd")
class Hund(Dyr):
    def lag_lyd(self):
        print("Voff!")
hund = Hund("Fido")
hund.lag_lyd()  # Voff!
</syntaxhighlight>
---
== 20. Lambda og anonyme funksjoner ==
Noen ganger trenger du små funksjoner "på stedet".
<syntaxhighlight lang="python">
kvadrat = lambda x: x * x
print(kvadrat(5))
</syntaxhighlight>
Kan også brukes med innebygde funksjoner:
<syntaxhighlight lang="python">
tall = [1, 2, 3, 4, 5]
doble = list(map(lambda x: x * 2, tall))
print(doble)
</syntaxhighlight>
---
== 21. Liste-, tuple- og dictionary-metoder ==
{| class="wikitable"
! Type !! Vanlige metoder !! Eksempel
|-
| Liste || append, remove, sort, reverse || <syntaxhighlight lang="python">liste.append(3)</syntaxhighlight>
|-
| Tuple || count, index || <syntaxhighlight lang="python">t.count(2)</syntaxhighlight>
|-
| Dict || keys, values, items, get, pop || <syntaxhighlight lang="python">d.get("navn")</syntaxhighlight>
|}
---
== 22. Import av eksterne pakker ==
For å installere nye moduler bruker du **pip**:
<syntaxhighlight lang="bash">
pip install requests
</syntaxhighlight>
Deretter i Python:
<syntaxhighlight lang="python">
import requests
r = requests.get("https://api.github.com")
print(r.status_code)
</syntaxhighlight>
---
== 23. Små prosjekter ==
=== Kalkulator ===
<syntaxhighlight lang="python">
def kalkulator():
    a = float(input("Tall 1: "))
    b = float(input("Tall 2: "))
    operasjon = input("Velg (+, -, *, /): ")
    if operasjon == '+':
        print(a + b)
    elif operasjon == '-':
        print(a - b)
    elif operasjon == '*':
        print(a * b)
    elif operasjon == '/':
        print(a / b)
    else:
        print("Ugyldig valg!")
kalkulator()
</syntaxhighlight>
=== Enkelt lagringssystem med JSON ===
<syntaxhighlight lang="python">
import json
filnavn = "brukere.json"
brukere = []
for i in range(2):
    navn = input("Navn: ")
    alder = int(input("Alder: "))
    brukere.append({"navn": navn, "alder": alder})
with open(filnavn, "w") as f:
    json.dump(brukere, f)
print("Lagret til brukere.json")
</syntaxhighlight>
---
== 24. Feilsøking og tips ==
* Bruk `print()` for å se hva som skjer i koden din.
* Bruk `type()` for å finne ut hva slags datatype du har.
* Bruk et IDE som Visual Studio Code eller Thonny.
* Les feilmeldinger nøye — de peker rett på problemet!
---


==Programsnutter==
==Programsnutter==

Siste sideversjon per 8. nov. 2025 kl. 06:53


Python er et moderne, lettlest og kraftig programmeringsspråk. Denne artikklen tar deg steg for steg gjennom grunnleggende programmering, med vekt på klasser, funksjoner, inn- og ut-data, løkker og valg.

Python er et språk som er laget for å være enkelt å lese og skrive. Koden ligner på naturlig språk, og det er derfor mye brukt i utdanning, vitenskap og webutvikling.

Du skal nå lære å skrive en oppskrift på noe som skal utføres, i et språk som datamaskinen forstår. Datamaskinen og oppskriften vil da kunne utføre store arbeidsoppgaver på kort tid. En datamaskin kan forstå mange språk. Her bruker vi Pyton (Python). Nedenfor har du lenker til to serier med videokurs. Vi anbefaler at du koder / programmerer parallelt med at du ser videoene. Bruk pauseknappen.

Denne serien anbefales først: Grunnkurs NTNU

Denne er noe mer omfattende; IT Grunnkus NTNU

Kom i gang

Python 3 kan du laste ned her: Python 3.

Du trenger et egnet sted for å skrive programmer. En grei editor for begynnere heter Mu.

Her er noen andre muligheter : noen editorer

Før vi begynner på selve programmet trenger man å lage en plan, flytskjema.

1. Flytskjema

Et flytskjema er en disposisjon eller oversikt over det programmet skal gjøre. Det er en hjelp til å holde oversikt og til å strukturere egne tanker. Det er flere symboler som brukes og vi ser her på fem av dem.


Oval boks : start eller slutt

Parallellogram: Her skal noe inn eller ut

Rektangel: Programmet gjør noe

Diamant: Her utføres et valg

Pilene: brukes til å angi rekkefølgen på prosessen ved at de går fra en boks til neste.

Det enkleste når man skal lage flytskjema er papir og blyant, men det er også en mulighet i Word, og annen software, men det tar normalt lengre tid men ser kanskje litt penere ut.

Eksempel på bruk av flytskjema

Vi ønsker å lage et program som tar kvadratroten av en differanse. For eksempel $ \sqrt d = \sqrt{a-b}$ Et flytskjema kan se slik ut:

Flytskjemaet vil hjelpe deg til å sortere de algoritmisk tankene og til en dypere forståelse av det du skal gjøre. En god vane er å lage et flytskjema før du begynner selve programmeringen.

La oss se litt nærmere på flytskjemaet før vi omsetter det i ett program.


1. I starten av programmet er det fint med informasjon om hva programmet gjør, når det ble laget, og hvem som har laget det. Bruk tegnet # i starten av hver programlinje, Det vil ikke bli lest av datamaskinen, men er kun informasjon til den som skal lese programmet.

2. Her kommuniserer vi med maskinen. Vi må legge inn verdier for tallene a og b

3. Her regner man ut verdien av a - b.

4 / 5. Vi får nå 3 muligheter. Svaret vi får kan bli negativt, null eller positivt. Dersom det blir negativt har vi ingen løsning. Dersom a -b = 0 er svaret null.

7. Dersom a - b er et positivt tall kan vi ta kvadratroten av det.

8. Vi skriver ut svaret, dersom det d> 0, og avslutter.

Før vi kan lage programmet må vi kjenne syntaxen. Syntax er språkets gramatikk, hvordan de forskjellige delene av språket virker sammen og kan danne et fungerende dataprogram.

Syntaks

  • Pyton har linjenummer som gjør det lett å referere til en kommando.
  • En eller flere linjer kan godt være tomme dersom du synes det øker lesbarheten til programmet.
  • Python utfører instruksjonene i ordnet rekkefølge. Kommandoen på linje 4 blir utført. Så blir kommandoen på linje 5 utført, osv.
  • Python skiller mellom store og SMÅ bokstaver.
  • Innrykk betyr noe, og må kun utføres når syntax krever det ( )
  • Når du får en feilmelding (det skjer ofte) er der referert til et linjenummer. Dersom du ikke finner feilen på den angitte linje, sjekk linjen før og etter også.
  • En programlinje som starter med # er informasjon til den som leser programmet og har ingen påvirkning i koden.



1. Matematisk notasjon

Linje:

1 Kun en forklaring til leser.

2 Tilordner a verdien 10.

3 Tilordner b verdien 3.

4 c er summen av a og b, altså 13.

5 d er differansen mellom a og b, 7.


6 e er produktet av a og b, 30.

7 f er a opphøyd i b, altså $10^3$ som er 1000.

8 g er desimaltallet vi får fra divisjonen a:b. Legg merke til hvordan vi styrer antall desimaler i utskriften, linje 11.

9 Heltallsdivisjon. Returnerer hvor mange ganger b går opp i a.

10 Resten som blir til overs når 10 deles på 3. Kalles modulo

11 Legg merke til hvordan "f- string" brukes for å kontrolere antall desimaler i utskriften til g.

2. Sammenligningsoperatorer
Operator Betydning Eksempel
== lik a == b
!= ulik a != b
< mindre enn a < b
> større enn a > b
<= mindre eller lik a <= b
>= større eller lik a >= b
3. Inn- og ut-data

Når vi programmerer ønsker vi ofte å hente informasjon fra brukeren (inn-data), gjøre noe med den, og vise resultatet (ut-data). I Python bruker vi blant annet funksjonene input() for å ta imot data og print() for å vise data.

UT, print


  • Linje 1 Starte med # og er kun informasjon til bruker, påvirker ikke programmet
  • Linje 2 Skriver ut det som står i anførselstegn i print () setningen
INN, input

4. Biblioteker

Generelle matematikk biblioteker

Bibliotek Hva det er bra for Kommentar
math (innebygget) Grunnleggende matematikk (sin, cos, log, etc.) Lett, raskt, ingen ekstra installasjon.
NumPy Effektive matriser og vektorisert matematikk Fundament for mye vitenskapelig Python.
SciPy Numerisk analyse: integrasjon, optimalisering, statistikk Bygger videre på NumPy, veldig kraftig.
SymPy Symbolsk matematikk (lignende Mathematica) Perfekt for algebra, forenkling, derivert, etc.
Pandas Databehandling og analyse Ikke primært matematikk, men håndterer tall effektivt.
Numba Akselererer Python med JIT-kompilering Gir fart uten å endre koden for mye.
JAX Automatisk derivasjon og GPU/TPU-akselerasjon For maskinlæring og numeriske beregninger.
PyTorch / TensorFlow Differensierbare tensorer (ML) Hvis du gjør avansert matematikk med læringsmodeller.


Biblioteker mot plotting

Bibliotek Hva det er bra for Kommentar
Matplotlib Standard 2D/3D plotting (linjer, punkter, figurer) Stabil, fleksibel og grunnlaget for mange andre biblioteker.
Seaborn Statistiske grafer (fordelinger, heatmaps, regresjon osv.) Bygger på Matplotlib, gir pene grafer med mindre kode.
Plotly Interaktive grafer med zoom, hover og web-/notebook-støtte Perfekt for presentasjoner og interaktive rapporter.
Bokeh Interaktive instrumentpaneler og visuelle apper Egen "web-følelse", fint for dashboards.
PyPlot (Matplotlib API) Enklere grensesnitt til Matplotlib Ofte brukt i undervisning og Jupyter Notebooks.
PyVista 3D visualisering av mesh- og volumdata Kjempegod for vitenskapelige modeller og simulering.
Mayavi Avansert 3D vitenskapelig visualisering Sterk innen fysikk, væskedynamikk og feltvisualisering.
Holoviews Deklarativ visualisering av datastrukturer Samhandler godt med både Bokeh og Matplotlib.


Hvordan importere "lett" — uten å dra inn for mye

Hvis du vil unngå å laste inn hele biblioteket (for minne- og oppstartsytelse), kan du importere kun det du trenger:

from math import sin, cos, pi


Dette er mye lettere enn:

import math


For større biblioteker (som NumPy), er det vanlig å importere med alias:

import numpy as np

Alias Å importere med alias er egentlig bare å gi et bibliotek et kortere og mer praktisk navn i koden din. Det påvirker ikke funksjonalitet, bare hvor mye du må skrive for å bruke det.

For eksempel:

import numpy as np


Her sier du: «Jeg vil bruke numpy, men jeg kaller det np i stedet.»

5. valg

If - elif

I dette lille programmet taster man inn antall flyreiser man har i løpet av året. Avhengig av hvor mange man har får man en kommentar fra programmet.

6. Løkker

Løkker brukes til å gjenta kode flere ganger.

For-løkke
Telle med range()


Output



Gå gjennom en liste
Gå gjennom en tekst streng


Med betingelse


For å unngå å si at null er et partall kan man legge til en ekstra betingelse i if setningen:


While-løkke

En while-løkke gjentar en blokk kode så lenge en betingelse er sann. Du bruker while når du ikke nødvendigvis vet på forhånd hvor mange iterasjoner som trengs — bare når du skal slutte (når betingelsen blir usann).

Struktur
Teller (til 5)


Forklaring:

  • i = 1 starter telleren.
  • while i <= 5: sjekker før hver iterasjon.
  • i += 1 øker telleren — viktig for å unngå uendelig løkke.


7. Funksjoner

I Python (og andre programmeringsspråk) er en funksjon en liten "maskin" som utfører en bestemt oppgave. Du kan gi funksjonen informasjon (kalt argumenter), og noen ganger gir funksjonen noe tilbake (kalt return-verdi).

Tenk på en funksjon som en brødskivegrill:

input (brødskive) → TOASTER (funksjon) → output (ristet brød)


Noen funksjoner rister bare brødet (gjør noe), andre gir deg ristet brød tilbake (returnerer noe).

Hvorfor bruke funksjoner?

  • For å gjenta kode uten å skrive alt flere ganger
  • For å gjøre kode ryddigere og enklere å forstå
  • For å kunne dele opp store problemer i mindre deler



Ett par eksempler med kommentarer

Eks 1.

  • Python bruker programlinjer, fint å referere til og en hjelp ved feilsøking.
  • # brukes når man ønsker å gi forklaringer på hva som skjer. Bruk kommentarer, det øker lesbarheten av programmet.
  • Det gjør ikke noe om en linje (3) er tom.
  • Linjene 4 -6 gir bruker anledning til å gi inn variablene a, b og c, som heltall (int = integer).
  • Linjene 7-11 printer ut varianter av inputen.

Når vi kjører programmet kan resultatet se slik ut:

De tre første linjene i svaret er et resultat av at jeg valgte a =1, b = -4 og c = 2. Tilsvarer programlinjene 4 - 6.

LØKKER

Et dataprogram er godt egnet til å gjøre kjedelige ting som for eksempel mange gjentakende operasjoner. Vi kan for eksempel lage et program som regner ut summen av alle heltall mellom 1 og 1 000 000.

Dette er jo et ganske ubrukelig program for alt annet enn å regne ut summen at heltallene fra 1 til 1 000 000. Vi han modifisere programmet slik at vi selv bestemmer den øvre grensen.

Ut-data: Å vise tekst med print()

For å vise noe på skjermen i Python bruker vi funksjonen print().

Eksempel:

<source lang="python"> print("Hei verden!") </source>

Når programmet kjører, vil det skrive:

Hei verden!

Du kan skrive ut tall, tekst, og variabler:

<source lang="python"> navn = "Anna" alder = 14 print("Hei", navn, "du er", alder, "år gammel.") </source>

Inn-data: Å hente tekst med input()

Med input() kan vi spørre brukeren om noe og lagre svaret i en variabel.

<source lang="python"> navn = input("Hva heter du? ") print("Hei", navn) </source>

Når programmet kjører:

Hva heter du? Eva
Hei Eva

Viktig: input() gir alltid tekst

Hvis du vil jobbe med tall, må du gjøre om teksten til et tall med int() eller float().

Eksempel med heltall (int)

<source lang="python"> alder = input("Hvor gammel er du? ") alder = int(alder) print("Neste år blir du", alder + 1) </source>

Eksempel med desimaltall (float)

<source lang="python"> lengde = input("Hvor lang er planken i meter? ") lengde = float(lengde) print("Planken er", lengde, "meter lang.") </source>

Kombinere inn- og ut-data

Her er et program som regner ut arealet av et rektangel:

<source lang="python"> bredde = float(input("Skriv inn bredden: ")) høyde = float(input("Skriv inn høyden: "))

areal = bredde * høyde

print("Arealet er:", areal) </source>

Formatering av tekst

Python lar oss formatere utskriften på en ryddig måte.

Flere eksempler

1. Legge sammen to tall

<source lang="python"> a = int(input("Skriv et tall: ")) b = int(input("Skriv et nytt tall: "))

sum = a + b print(f"Summen av tallene er {sum}") </source>

2. Hilse på mange personer

<source lang="python"> for i in range(3):

   navn = input("Skriv et navn: ")
   print(f"Hei {navn}!")

</source>

3. Liten kalkulator

<source lang="python"> tall1 = float(input("Første tall: ")) tall2 = float(input("Andre tall: "))

print("Velg operasjon (+, -, *, /)") operasjon = input("Skriv operasjon: ")

if operasjon == "+":

   print(tall1 + tall2)

elif operasjon == "-":

   print(tall1 - tall2)

elif operasjon == "*":

   print(tall1 * tall2)

elif operasjon == "/":

   print(tall1 / tall2)

else:

   print("Ukjent operasjon.")

</source>

Oppsummering

  • print() brukes for å vise tekst eller tall.
  • input() brukes for å hente tekst fra brukeren.
  • For å bruke tall må vi konvertere med int() eller float().
  • Vi kan kombinere inn- og ut-data for å lage interaktive programmer.

Se også



Python bruker `input()` for å lese data fra brukeren, og `print()` for å skrive ut tekst til skjermen.

Eksempel: Enkel input og output

<syntaxhighlight lang="python"> navn = input("Hva heter du? ") print("Hei", navn) </syntaxhighlight>

Utdata: <syntaxhighlight lang="text"> Hva heter du? Ola Hei Ola </syntaxhighlight>

Du kan også behandle tall: <syntaxhighlight lang="python"> alder = int(input("Hvor gammel er du? ")) print("Om 10 år er du", alder + 10, "år gammel.") </syntaxhighlight>


3. Variabler og datatyper

I Python trenger du ikke å spesifisere datatypen eksplisitt. Språket finner ut av det selv.

<syntaxhighlight lang="python"> heltall = 5 desimaltall = 3.14 tekst = "Python" sant_eller_usant = True </syntaxhighlight>

Du kan vise typen slik: <syntaxhighlight lang="python"> print(type(heltall)) # <class 'int'> print(type(desimaltall)) # <class 'float'> print(type(tekst)) # <class 'str'> print(type(sant_eller_usant)) # <class 'bool'> </syntaxhighlight>


4. Valg (if-setninger)

If-setninger brukes for å velge hva programmet skal gjøre.







6. Funksjoner

Funksjoner i Python

Funksjoner er en viktig del av programmering. De hjelper oss med å gjøre kode enklere å forstå, mer organisert, og lettere å gjenbruke. Her lærer du hva funksjoner er, hvordan de brukes og hvordan du lager dine egne.

Hva er en funksjon?

En funksjon kan ses som en liten "maskin" som utfører en bestemt oppgave.

Tenk:
input (data) → FUNKSJON → output (resultat)

Noen funksjoner viser bare noe på skjermen, andre gir et resultat tilbake som vi kan bruke senere.

Hvorfor bruke funksjoner?

  • For å unngå å skrive den samme koden mange ganger.
  • For å dele opp store problemer i mindre deler.
  • For å gjøre programmet oversiktlig og lettere å forstå.

Lage en enkel funksjon

Vi lager funksjoner med nøkkelordet def.

def si_hei():
    print("Hei!")

Kalle funksjonen:

si_hei()

Output:

Hei!

Funksjoner med argumenter

Argumenter er data funksjonen får for å jobbe med.

def si_hei_til(navn):
    print("Hei,", navn)

si_hei_til("Fatima")
si_hei_til("Jonas")

Output:

Hei, Fatima
Hei, Jonas

Flere argumenter:

def legg_sammen(a, b):
    print(a + b)

legg_sammen(3, 5)

Output:

8

Funksjoner som returnerer verdier

return sender data tilbake.

def dobbel(x):
    return x * 2

resultat = dobbel(10)
print(resultat)

Output:

20

Forskjellen:

  • print() viser noe til brukeren.
  • return gir data tilbake til programmet.

Standardverdier (default argumenter)

En funksjon kan ha standardverdi for argumenter.

def hils(navn="ukjent person"):
    print("Hei", navn)

hils()
hils("Emma")

Output:

Hei ukjent person
Hei Emma

Funksjoner som bruker andre funksjoner

def kvadrat(x):
    return x * x

def sum_av_kvadrater(a, b):
    return kvadrat(a) + kvadrat(b)

print(sum_av_kvadrater(2, 3))

Output:

13

Eksempel fra virkeligheten

Beregn arealet av en sirkel:

import math

def areal_sirkel(radius):
    return math.pi * radius**2

print(areal_sirkel(5))

Output (ca.):

78.53981633974483

Vanlige feil

Feil Eksempel Forklaring
Glemmer () når funksjonen kalles si_hei Da kjøres ikke funksjonen.
Feil innrykk IndentationError Python må vite hva som hører til funksjonen.
Glemmer return Resultat blir None Funksjonen gir ikke noe tilbake.

Oppgaver

  1. Lag en funksjon som regner ut areal av et rektangel.
  2. Lag en funksjon som skriver ut navn og alder i en setning.
  3. Lag en funksjon som sjekker om et tall er partall eller oddetall.
  4. Lag en enkel kalkulator med funksjoner for +, -, * og /.

Oppsummering

Begrep Forklaring
Funksjon En kode-del som utfører en bestemt oppgave
Argument Data som sendes inn til funksjonen
Return Data som funksjonen sender tilbake
print() Viser data
return Gir data tilbake til programmet


Funksjoner brukes for å organisere koden og gjøre den gjenbrukbar.

Eksempel: En enkel funksjon

<syntaxhighlight lang="python"> def hils(navn):

   print("Hei", navn)

hils("Anna") </syntaxhighlight>

Funksjon med returverdi

<syntaxhighlight lang="python"> def kvadrat(tall):

   return tall * tall

print(kvadrat(4)) # Skriver 16 </syntaxhighlight>

Flere parametre

<syntaxhighlight lang="python"> def areal_rektangel(bredde, høyde):

   return bredde * høyde

print(areal_rektangel(5, 3)) # 15 </syntaxhighlight>


7. Klasser og objekter

Python er et objektorientert språk. Du kan lage dine egne typer med **klasser**.

<syntaxhighlight lang="python"> class Person:

   def __init__(self, navn, alder):
       self.navn = navn
       self.alder = alder
   def si_hei(self):
       print(f"Hei, jeg heter {self.navn} og er {self.alder} år gammel.")
  1. Opprette objekt

p1 = Person("Ola", 25) p1.si_hei() </syntaxhighlight>

Forklaring

  • `__init__` er konstruktøren – kjøres automatisk når et objekt lages.
  • `self` peker på objektet selv (samme som *this* i andre språk).
  • Metoder defineres som vanlige funksjoner inni klassen.

Eksempel: Klasse med beregning

<syntaxhighlight lang="python"> class Sirkel:

   def __init__(self, radius):
       self.radius = radius
   def areal(self):
       return 3.14 * self.radius ** 2

sirkel1 = Sirkel(5) print("Areal:", sirkel1.areal()) </syntaxhighlight>


8. Filbehandling

Lesing og skriving av filer er enkelt i Python.

Skrive til fil

<syntaxhighlight lang="python"> with open("data.txt", "w") as fil:

   fil.write("Dette er en test.\n")

</syntaxhighlight>

Lese fra fil

<syntaxhighlight lang="python"> with open("data.txt", "r") as fil:

   innhold = fil.read()
   print(innhold)

</syntaxhighlight>


9. Kombinasjon: Alt sammen i et lite prosjekt

Her lager vi et lite program som håndterer en liste over personer:

<syntaxhighlight lang="python"> class Person:

   def __init__(self, navn, alder):
       self.navn = navn
       self.alder = alder
   def __str__(self):
       return f"{self.navn} ({self.alder} år)"

personer = []

for i in range(3):

   navn = input("Navn: ")
   alder = int(input("Alder: "))
   p = Person(navn, alder)
   personer.append(p)

print("\nRegistrerte personer:") for p in personer:

   print(p)

</syntaxhighlight>




11. Øvingsoppgaver

  1. Lag en funksjon som skriver ut alle partall mellom 1 og 100.
  2. Lag en klasse `Bil` med attributter `merke` og `år`, og en metode som skriver ut informasjonen.
  3. Lag et program som leser inn tall fra brukeren til du skriver `0`, og regner ut gjennomsnittet.
  4. Lag et program som skriver alle tall fra 1 til 100, men skriver "Fizz" for tall delelig på 3, "Buzz" for 5 og "FizzBuzz" for begge.

Sist oppdatert: 2025

Lærebok i Python (Del 2)

Denne delen bygger videre på grunnleggende Python, og går dypere inn i **datastrukturer, feilhåndtering, moduler og filformat**. Du bør kunne variabler, løkker, valg, funksjoner og klasser før du begynner her.


12. Lister

Lister brukes til å lagre flere verdier i én variabel.

<syntaxhighlight lang="python"> frukt = ["eple", "banan", "appelsin"] print(frukt) </syntaxhighlight>

Tilgang til elementer

<syntaxhighlight lang="python"> print(frukt[0]) # eple print(frukt[-1]) # appelsin </syntaxhighlight>

Legge til og fjerne elementer

<syntaxhighlight lang="python"> frukt.append("druer") # Legg til på slutten frukt.remove("banan") # Fjern element print(frukt) </syntaxhighlight>

Løkke gjennom liste

<syntaxhighlight lang="python"> for vare in frukt:

   print("Jeg liker", vare)

</syntaxhighlight>

Listeforståelser (list comprehensions)

<syntaxhighlight lang="python"> tall = [x * 2 for x in range(5)] print(tall) # [0, 2, 4, 6, 8] </syntaxhighlight>


13. Tupler

En **tuple** er som en liste, men kan ikke endres (den er uforanderlig).

<syntaxhighlight lang="python"> person = ("Ola", 25) print(person[0]) # Ola </syntaxhighlight>

Du kan bruke tupler som nøkler i ordbøker (dict) fordi de er uforanderlige.


14. Dictionaries (Ordbøker)

En dictionary lagrer data som **nøkkel:verdi-par**.

<syntaxhighlight lang="python"> student = {

   "navn": "Kari",
   "alder": 21,
   "studie": "Informatikk"

}

print(student["navn"]) </syntaxhighlight>

Legge til og endre

<syntaxhighlight lang="python"> student["alder"] = 22 student["by"] = "Oslo" </syntaxhighlight>

Løkke gjennom dictionary

<syntaxhighlight lang="python"> for nøkkel, verdi in student.items():

   print(nøkkel, ":", verdi)

</syntaxhighlight>


15. Feilhåndtering

Når noe går galt, kan programmet stoppe. Med **try-except** kan du fange og håndtere feil.

<syntaxhighlight lang="python"> try:

   tall = int(input("Skriv et tall: "))
   print("Kvadratet er", tall * tall)

except ValueError:

   print("Du må skrive et heltall!")

</syntaxhighlight>

Flere typer feil

<syntaxhighlight lang="python"> try:

   fil = open("data.txt", "r")
   innhold = fil.read()
   print(innhold)

except FileNotFoundError:

   print("Filen finnes ikke!")

finally:

   print("Programmet er ferdig.")

</syntaxhighlight>

  • `try` – koden som kan feile
  • `except` – hva som skal skje hvis det feiler
  • `finally` – kjøres alltid, uansett

16. Moduler og biblioteker

Moduler er Python-filer med funksjoner du kan gjenbruke.

Bruke standardbibliotek

<syntaxhighlight lang="python"> import math print(math.sqrt(16)) # 4.0 </syntaxhighlight>

Lage egne moduler

Lag en fil `minmodul.py`: <syntaxhighlight lang="python"> def hei():

   print("Hei fra min modul!")

</syntaxhighlight>

Og importer den i et annet program: <syntaxhighlight lang="python"> import minmodul minmodul.hei() </syntaxhighlight>

Forkortelser

<syntaxhighlight lang="python"> import random as r print(r.randint(1, 10)) </syntaxhighlight>


17. JSON-filer

JSON brukes for å lagre strukturerte data. Python har et innebygd bibliotek kalt `json`.

Skrive JSON til fil

<syntaxhighlight lang="python"> import json

data = {"navn": "Ola", "alder": 25, "by": "Bergen"}

with open("data.json", "w") as fil:

   json.dump(data, fil)

</syntaxhighlight>

Lese JSON fra fil

<syntaxhighlight lang="python"> with open("data.json", "r") as fil:

   innhold = json.load(fil)
   print(innhold["navn"])

</syntaxhighlight>

---

18. Lister av objekter

Du kan lagre flere objekter i en liste for enkel håndtering.

<syntaxhighlight lang="python"> class Bil:

   def __init__(self, merke, år):
       self.merke = merke
       self.år = år
   def __str__(self):
       return f"{self.merke} ({self.år})"

biler = [

   Bil("Toyota", 2015),
   Bil("Tesla", 2022),
   Bil("Volvo", 2018)

]

for bil in biler:

   print(bil)

</syntaxhighlight>

---

19. Arv og utvidelse av klasser

En klasse kan arve fra en annen klasse.

<syntaxhighlight lang="python"> class Dyr:

   def __init__(self, navn):
       self.navn = navn
   def lag_lyd(self):
       print("Ukjent lyd")

class Hund(Dyr):

   def lag_lyd(self):
       print("Voff!")

hund = Hund("Fido") hund.lag_lyd() # Voff! </syntaxhighlight>

---

20. Lambda og anonyme funksjoner

Noen ganger trenger du små funksjoner "på stedet".

<syntaxhighlight lang="python"> kvadrat = lambda x: x * x print(kvadrat(5)) </syntaxhighlight>

Kan også brukes med innebygde funksjoner: <syntaxhighlight lang="python"> tall = [1, 2, 3, 4, 5] doble = list(map(lambda x: x * 2, tall)) print(doble) </syntaxhighlight>

---

21. Liste-, tuple- og dictionary-metoder

Type Vanlige metoder Eksempel
Liste append, remove, sort, reverse <syntaxhighlight lang="python">liste.append(3)</syntaxhighlight>
Tuple count, index <syntaxhighlight lang="python">t.count(2)</syntaxhighlight>
Dict keys, values, items, get, pop <syntaxhighlight lang="python">d.get("navn")</syntaxhighlight>

---

22. Import av eksterne pakker

For å installere nye moduler bruker du **pip**:

<syntaxhighlight lang="bash"> pip install requests </syntaxhighlight>

Deretter i Python: <syntaxhighlight lang="python"> import requests r = requests.get("https://api.github.com") print(r.status_code) </syntaxhighlight>

---

23. Små prosjekter

Kalkulator

<syntaxhighlight lang="python"> def kalkulator():

   a = float(input("Tall 1: "))
   b = float(input("Tall 2: "))
   operasjon = input("Velg (+, -, *, /): ")
   if operasjon == '+':
       print(a + b)
   elif operasjon == '-':
       print(a - b)
   elif operasjon == '*':
       print(a * b)
   elif operasjon == '/':
       print(a / b)
   else:
       print("Ugyldig valg!")

kalkulator() </syntaxhighlight>

Enkelt lagringssystem med JSON

<syntaxhighlight lang="python"> import json

filnavn = "brukere.json" brukere = []

for i in range(2):

   navn = input("Navn: ")
   alder = int(input("Alder: "))
   brukere.append({"navn": navn, "alder": alder})

with open(filnavn, "w") as f:

   json.dump(brukere, f)

print("Lagret til brukere.json") </syntaxhighlight>

---

24. Feilsøking og tips

  • Bruk `print()` for å se hva som skjer i koden din.
  • Bruk `type()` for å finne ut hva slags datatype du har.
  • Bruk et IDE som Visual Studio Code eller Thonny.
  • Les feilmeldinger nøye — de peker rett på problemet!

---

Programsnutter

abc formel python  

Fakultet (rekursjon)


Eksterne resurser