Egendefinerte funksjoner i Python
Denne artikkelen er i et fag som følger en utgått læreplan. Versjonen du ser på, kan inneholde utdatert informasjon eller ha andre feil.
Problemstilling
Vi tenker oss nå en bedrift som har en funksjon som modell for kostnadene K i kroner ved å produsere x enheter av en vare lik
Siden prisen på en enhet er 45 kroner, blir inntektsfunksjonen
Oppgave – regning
Finn en funksjon O for overskuddet ut ifra de to funksjonene over.
Vi går nå ut ifra at bedriften produserer 60 enheter per dag. De vurderer å øke produksjonen til 100 enheter per dag, og de lurer på hvor mye overskuddet endrer seg. Oppdraget vårt blir å lage et program som kan regne ut forskjellen i overskudd ved to ulike antall produserte enheter.
Koding uten å bruke egendefinert funksjon
Programmet må regne ut hva overskuddet er når det produseres 100 enheter, og trekke fra overskuddet når det produseres 60 enheter. Så må svaret skrives til skjermen.
🤔 Tenk over: Hvordan skriver vi regnestykket over matematisk ved hjelp av funksjonen O?
Oppgave – algoritme
Over har vi beskrevet hva programmet skal gjøre. Skriv en litt mer detaljert algoritme til et slikt program der du bruker variabler for den nåværende og for den nye produksjonsmengden. Husk å få med gode, forklarende tekster.
Oppgave – koding
Skriv koden til programmet etter algoritmen over i en programeditor for Python. Kontroller at programmet regner riktig ved for eksempel å skrive funksjonen inn i GeoGebra og regne ut .
Koding med egendefinert funksjon
I utregningene i linje 3 og 4 har vi brukt den matematiske funksjonen O for overskuddet som vi kom fram til lenger opp på siden. Innholdet i linjene er vanskelig å lese. Tenk om vi kunne ha brukt skrivemåten fra matematikken her! Matematisk skriver vi
for å finne endringen i overskuddet ved å endre produksjonen fra 60 enheter til 100. Dette kan kan vi heldigvis gjøre i Python også. Vi kan fjerne linje 3 og 4, og i linje 6 kan vi erstatte O_ny - O_gml med
O(x_ny) - O(x_gml)
For å kunne gjøre det må vi lage oss funksjonen O, og hvordan gjør vi det i Python? Jo, vi kan definere funksjonen med kodeordet def. Funksjonen O blir med dette en såkalt egendefinert funksjon. Det betyr at vi øverst i programmet vårt skriver følgende:
1def O(x): 2 return -0.25*x**2 + 45*x - 500
Disse to kodelinjene blir ikke utført i første omgang når vi kjører programmet fordi de utgjør en definisjon. Kodelinjene blir ikke utført før vi kaller på den egendefinerte funksjonen O første gang ved å skrive O(x_ny) i koden nedenfor funksjonsdefinisjonen. Da skjer følgende:
Programmet vil lete opp definisjonen av funksjonen
O.Programmet erstatter
xi definisjonen med innholdet av variabelenx_ny.Vi får regnet ut overskuddet ved denne produksjonsmengden.
Oppgave – koding
Endre på programmet ved å definere funksjonen O, fjerne variablene O_gml og O_ny og i stedet kalle på funksjonen O. Kontroller at programmet fungerer som før.
b) Hvilke endringer blir det i algoritmen til programmet når vi bruker den egendefinerte funksjonen O i stedet for å regne ut overskuddsendringen direkte?
Spørsmål – vurdering
Hvorfor er det lurt å endre programkoden ved å lage en egendefinert funksjon?

Pythonkode å lære seg
Aktiviteter
a) Algoritme
Bedriften ønsker å få testet hvor stort overskuddet er ved flere ulike produksjonsmengder: 40, 80, 120, 160, 200 og 240.
Skriv en algoritme for et slikt program. Bruk den egendefinerte funksjonen O fra over.
b) Koding
Skriv en kode som passer til algoritmen ovenfor.