Här får du lära dig
Vi har redan använt funktioner i den här kursen, importerade från modulen turtle. Exempelvis penup() och left(vinkel). Den förstnämnda utan argument och den sistnämnda med argument. Nu ska vi lära oss hur vi kan skapa egna funktioner, både med och utan argument.
Att definiera en funktion i programmering innebär att ge ett block kod ett namn. Koden i funktionen kan köras genom att anropa funktionen, vilket görs genom att skriva namnet.
I Python definieras en funktion med def, kort för define (svenska: definiera). Till exempel kan vi skriva def funktion(): och sedan indentera kod under som ska tillhöra funktionen.
Funktioner kan användas för att slippa skriva samma kod om och om igen. Vi börjar med ett exempel och definierar en funktion kvadrat som ritar en kvadrat. Funktionen anropas sedan genom att helt enkelt skriva kvadrat().
Definierar en funktion kvadrat som ritar en kvadrat. Sist anropas funktionen.
def kvadrat():
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
kvadrat()
Vi kan förenkla exemplet ovan med en for-sats. Då slipper vi skriva samma sak fyra gånger.
Funktionen kvadrat med hjälp av en for-sats.
def kvadrat():
for i in range(4):
forward(100)
left(90)
kvadrat()
Notera indenteringen i exemplet ovan. Först är raden for i in range(4): indenterad eftersom den tillhör funktionen kvadrat. Sedan är forward(100) och left(90) i sin tur indenterade i ytterligare steg eftersom de tillhör for-satsen.
Logga in eller skapa konto för att spara dina framsteg.
Läs koden nedan och försök lista ut vad programmet ritar. Kör programmet efter du svarat och se om du fick rätt.
-- Programmets utskrifter --
Fråga: Vad kommer programmet ovan att rita ut?
Med hjälp av argument kan vi skicka in värden som sedan används när koden i funktionen körs. Om vi fortsätter med kvadrater som exempel kan vi använda kvadratens sidlängd som argument. Vi har redan har sett hur funktioner med argument anropas, som t.ex. forward(100) där argumentet är 100.
Definierar och anropar funktionen kvadrat med ett argument.
def kvadrat(sida):
for i in range(4):
forward(sida)
left(90)
kvadrat(50) #ritar kvadrat med sidan 50
kvadrat(100) #ritar kvadrat med sidan 100
Med vår nya arsenal av tekniker kan vi nu rita godtyckliga polygoner. Det vi behöver veta är att vinklarna i en polygon med n sidor är 360 / n.
Funktion för att rita en polygon med n sidor.
Klicka på testa och prova olika värden på n. Vad händer om n är stort?
def polygon(n):
for i in range(n):
forward(500 / n) # dela med n för lagom storlek
left(360 / n)
Logga in eller skapa konto för att spara dina framsteg och din kod.
Funktionen triangel tar ett argument sida som är sidan på en triangel. Funktionens uppgift är att rita en liksidig triangel med sidan sida. Övrig kod ska stå kvar.
-- Programmets utskrifter --
Säg att vi vill använda polygon-funktionen ovan och också kunna välja vilken färg polygonen är eller hur långa sidorna ska vara. Då behöver funktionen ta emot flera inputvärden och alltså ha flera argument.
I definitionen av funktionen skrivs argumenten separerade med komma.
Flera argument. Funktion för att rita en polygon med n sidor och färgen färg.
def polygon(n, färg):
color(färg)
for i in range(n):
forward(500 / n) # dela med n för lagom storlek
left(360 / n)
Polygon-funktionen ovan ger fel om vi försöker anropa den med endast ett argument. Om vi vill att funktionen fortfarande ska fungera med ett argument kan vi ge argumentet färg ett standardvärde. Ifall funktionen anropas utan det argumentet så används standardvärdet.
Polygon-funktionen med standardvärdet färg = 'red'. Nu fungerar anropet polygon(3).
def polygon(n, färg = 'red'):
color(färg)
for i in range(n):
forward(500 / n) # dela med n för lagom storlek
left(360 / n)
polygon(3) #ritar en röd triangel
Logga in eller skapa konto för att spara dina framsteg och din kod.
Skriv en funktion kvadrat(sida, färg) där sida är kvadratens sida och färg är kantens färg.
-- Programmets utskrifter --