Del 1 - Hva er en funksjon?
Som nevnt før, en funksjon er bare noe som gjør noe spesifikt. Vi har sett noen innebygde funksjoner allerede: print()
, input()
, int()
. Disse gjør spesifikke ting, som å skrive ut, hente ut, eller gjør om fra tekst til tall.
Nå skal vi lage våre egne funksjoner.
Oppgave 1.1a
Lag en funksjon som skriver ut "Hallo!"
. Deretter bruk den ved å kalle funksjonen.
def hello():
print("Hallo!")
# her bruker (kaller) vi funskjonen
hello()
Viktig! 🤯
Som i if
og else
må det være mellomrom på begynnelsen av linjene inne i funksjonen. Du kan jo prøve å se hva som skjer dersom du tar vekk dette mellomrommet. Fungerer koden?
Hva betyr alt dette?
Først og fremst, funksjoner i Python begynner alltid med def
. Dette er kort for “define”, eller definer på Norsk. Deretter må vi ha et mellomrom, deretter navnet på funksjonen, dette kan være hva som helst. Til slutt må vi ha paranteser ()
og en kolon :
, akkurat som i if
, else
og elif
.
Når vi skal bruke funksjoner må vi da enkelt skrive navnet på funksjonen etterfulgt av paranteser ()
. Hvorfor må vi ha disse parantesene?
Dette er en simpel funksjon uten argumenter. Hva er et argument? Jo, et argument er noe du kan hive inn i en funsksjon for å få dem til å gjøre noe.
Oppgave 1.1b
Hvis du endrer navnet på funksjonen til noe annet, for eksempel, yoloswag
, hva må du da gjøre for å bruke funksjonen? 🤨
Funksjonsnavn?
Helst gi funksjonene dine navn som er beskrivende. For eksempel, hvis du har en funskjon som skal regne ut omkretsen til en sirkel, ikke kall funksjonen bare “A
” eller “asdhagd
” eller “epicfunction
”, kall den for eksempel: sirkel_omkrets
eller circle_circumference
, slik at du vet hva funksjonen kommer til å gjøre bare ved å se på navnet!
Del 2 - Funksjoner med argumenter
Vi skal ikke begynne å krangle med funksjoner (🤬), det er ikke det argumenter betyr, men funksjoner har mulighet til å ta inn verdier som vi kan bruke i funksjonen.
Du har allerede sett dette før med print()
. I print kan du hive inn en string
, tekst, og det er det som blir skrevet ut. Som eksemspel: print("Hello there!")
skriver ut “Hello there!”.
Oppgave 2.1
Lag en funksjon som tar inn et navn og skriver ut en melding med navnet.
def hello_name(name):
print("Hallo", name)
# Skriver ut "Hallo Bob Kåre"
hello_name("Bob Kåre")
Hva betyr alt dette?
Som før må vi ha def
for å lage en funksjon, men mellom parentesene ()
står det nå name
. Dette er et argument. Dette er egentlig bare en variabel som går an å bruke inne i en funksjon.
Da, når vi skal bruke funksjonen, må vi hive inn en verdi som dette:
hello_name("Bob Kåre")
Oppgave 2.2 - Flere argumenter samtidig
Du kan ha så mange argumenter som du vil for en funksjon. Prøv å lage en funksjon som tar inn et dyr og et adjektiv som beskriver dyret.
Svaret
def describe(animal, adjective):
print("Du har en", adjective, animal)
Her kan du for eksempel skrive describe("elefant", "rosa")
for å skrive "Du har en rosa elefant"
. 🐘
Del 3 - return
Hva er return
? 💪
return
er et kraftig nøkkelord som lar deg sende noe tilbake fra en funksjon. Du kan se på det som at du spør programmet et spørsmål, “Hva er arealet til en firkant” (bruk funksjonen), så gir funksjonen deg et svar, som er det som kommer fra return
.
Oppgave 3.1
Lag en funksjon som regner ut arealet til en firkant, ved å ta inn sidelengden som argument.
Svaret
def square_area(side):
return side * side
# Slik brukes funksjonen
area = square_area(5)
print(area)
Mer om koden
Hva skjer her?
area = square_area(5)
area
er en variabel vi har lyst til å lagre arealet ireturn
vil lagre verdien som blir sendt tilbake fra funksjonen i denne variabelen.square_area(5)
vil regne ut arealet med side-lengde 5. Som vi kan se i funksjons-definisjonen står det:def square_area(side):
. Her kan vi ta inn enside
-lengde.
Oppgave 3.2
Lag nå en funksjon som regner ut omkretsen til en firkant, omkretsen til en firkant er bare å ta side-lengden ganget med 4. Du kan ha flere funksjoner i samme fil. 👍
Svaret
# funksjon fra før
def square_area(side):
return side * side
# ny funksjon
def square_circumference(side):
return side * 4
Rektangel
Til slutt så kan vi kombinere alt vi har lært så langt for å lage en funksjon som regner ut arealet og omkretsen til et rektangel.
Hvis dere er usikre på hvordan dette gjøres, her er formlene for dette:
- Rektangel Areal:
lengde * bredde
- Rektangel Omkrets:
(2 * lengde) + (2 * bredde)
Oppgave 3.3a - Arealet til et rektangel
Ta inn to argumenter, en for lengde og en for bredde og regn ut arealet til rektangelet.
Svaret
def rectangle_area(length, width):
return length * width
Oppgave 3.3b - Omkretsen til et rektangel
Som i Oppgave 3.3a ta inn to argumenter, deretter, regn ut omkretsen til et rektangel.
Svaret
def rectangle_circumference(length, width):
return (2 * length) + (2 * width)
Del 4 - Mer kompliserte funksjoner 😎
Så langt har alle funksjonene i denne delen hatt en linje med kode. Det som er det mest moro med funksjoner er at du kan ha flere linjer med kode i en funksjon!
Oppgave
Lag en funksjon som tar inn et tall og returner forskjellige meldinger basert på hva tallet er. For eksempel, putter du inn 0
, så får du “Hello there!” som svar.
Svaret
def get_message(number):
if number == 0:
return "Hello there!"
elif number == 1:
return "How is it going?"
elif number == 2:
return "That's amazing!"
else:
return "I don't know about that."
message = get_message(0)
# Skriver ut "Hello there!"
print(message)
Ja! Du kan faktisk ha mer enn bare en return
i en funksjon. Når en return
blir nådd, stopper funksjonen der og sender tilbake svaret. Resten av koden vil ikke kjøre. Dette kan du teste ved å putte for eksempel print("YOLO")
inne i en av if
setningene.