Att återanvända sin kod

REPETITION

Förra veckan lärde vi oss om if-satser och lite mer om datatypen boolean, vi gick igenom följande:

  • boolean- typ som bara kan ha två lägen, True eller False
  • if-satser – man ger datorn förmågan att ta beslut beroende på om villkor är sanna eller ej
  • elif-sats – bygger på if-satsen med fler villkor som kan testas
  • else-sats – om inget villkor är sant gör vi det som står i else-satsen
  • boolesk algebra – lite om de booleska operatorerna and, or , not
  • jämförelser – vilka operatorer använder man i sina villkor för att testa värden mot varandra:
    < , > , <= , >= , == , !=

Denna veckan ska vi se hur man kan återanvända sin kod genom att skapa s.k funktioner som utför en uppgift och som man kan anropa flera gånger.

 

FUNKTIONER– ATT ÅTERANVÄNDA SIN KOD

Ibland hamnar man i situationer där man upprepar liknande kod på flera olika ställen. För att banta ner koden och göra den mer överskådlig kan man därför definiera s.k. funktioner, som sedan kan användas flera gånger. På så sätt så kan vi minska antalet rader kod och göra vårt program mer lättläst. Den här veckan ska vi lära oss hur man skapar funktioner för att kunna återanvända kod som man redan skrivit.

Vad är då en funktion?

En funktion är en bit återanvändbar kod som utför en specifik uppgift. Först definierar man sin funktion och sedan kan man använda den, eller anropa den som det även kallas.

 

HUR MAN DEFINIERAR EN FUNKTION

En funktion kan delas in i två delar, huvud(header) och kroppen(body). Header är funktionshuvudet, där skapar vi vår funktion. Först använder vi nyckleordet i detta fallet, def, som berättar att detta är en funktion. Sedan gör vi ett mellanslag och namnger vår funktion. Efter det så gör vi två parenteser och bestämmer vad för slags parametrar som vår funktion skall kunna arbeta med(men den måste inte ha några).

Ex. på huvud:

hello_world():

Kroppen är den kod som kommer att köras då funktionen anropas. Den skrivs indenterad under huvudet, för att visa att den tillhör funktionen.

Ex. på kroppen man kan lägga till under funktionshuvudet:

hello_world():
  print("Hello World!")

ANROPA EN FUNKTION

För att få koden i en funktion att köras måste man anropa funktionen. För att göra det skriver man helt enkelt funktionens namn med paranteser, någonstans i koden efter att funktionen har definierats.

def hello_world():
  print("Hello World!")

hello_world()

Vi kan också anropa en funktion med parametrar, alltså skicka in värden till en funktion som den kan jobba med. Hur gör man då detta?

ANVÄNDA PARAMETRAR OCH ARGUMENT

Låt oss ta en titt på definitionen av funktionen kvadrera:

def kvadrera(n):
  kvadrera = n ** 2
 print str(n) + ” i kvadrat är ” + str(kvadrera)

kvadrera(10)

Här är n en parameter för funktionen. En parameter är en variabel som är input till funktionen. Om man skulle läsa ut det så står det: “Senare, när kvadrera används, kan du ange vilket värde du vill, men för tillfället kallar vi det värdet för n”. En funktion kan ha hur många parametrar du vill. Värdena för parametrarna som skickats till en funktion kallas för argument.

Se:

kvadrera(10)

Här kallas funktionen kvadrera med parametern n inställd på argumentet 10. Vanligtvis, när du anropar en funktion, ska du skicka med samma antal argument som det finns parametrar

def kvadrera(n):
  return n ** 2

print(kvadrera(10))

Och om man vill göra utskriften lite snyggare kan man skriva:

def kvadrera(n):
  return n ** 2  

talet = 10 #för att slippa skriva in 10 på två ställen
print(str(talet) + ” i kvadrat är ” + str(kvadrera(talet))) 

För att sammanfatta:

  • När man definierar en funktion kallas placeholder-variabler för parametrar.
  • När man använder, eller anropar, en funktion, kallas inmatningar i funktionen argument.

 

FUNKTIONER SOM ANROPAR FUNKTIONER

Vi har sett funktioner som kan skriva ut text eller göra enkel aritmetik, men funktioner kan vara mycket kraftfullare än så! Till exempel kan en funktion anropa en annan funktion:

import math

def kvadrera(n):
  return n ** 2

def pythagoras(b, h):
  return math.sqrt(kvadrera(b) + kvadrera(h))

print(pythagoras(5, 8))

 

VECKANS ÖVNING – RESERÄKNAREN

Denna veckas övning tar oss iväg på en resa! Vi vill skapa ett program där man kan mata in vilken stad man vill flyga till, hur många dagar man övernattar på hotell samt hur mycket fickpengar man tar med sig. Programmet kommer sedan att skriva ut totalkostnaden för resan!

  1. Vi vill ha en funktion för kostnaden för hotellnätter, vi kan kalla den för kostnad_hotell och ge den en parameter vi kallar för natter. Funktionen skall returnera kostnaden för en natt(som ni väljer själv) multiplicerat med parametern natter.
  2. Sedan vill vi ha en funktion som räknar ut kostnaden för flygresan till vår stad. Vi kan kalla den funktionen för  kostnad_flygresa och den har en parameter vi kallar stad.
  3. Vi skall sedan använda en if-sats för att se vilken stad vår användare valt att besöka, vi har smygstartat lite, du kan själv bygga ut if-satsen med elif-satser med andra städer. Varje stad returnerar sedan en siffra som representerar den kostnaden flygresan.
  4. Sedan vill vi skapa en funktion som lägger samman dessa kostnader, genom att anropa de andra funktionerna vi skapat. Vi kan kalla den funktionen för kostnad_resa, den skall ha parametrarna stad, dagar, fickpengar.  Vi har smygstartat lite igen, se om du kan fylla i resten.
  5. Allra sist så vill vi skriva ut vårt resultat, det gör vi med print-funktionen. Där anropar vi vår funktion kostnad_resa med argumenten från vår input, nämligen vilken_stad, antal_dagar och pengar.

Lycka till!

SEE ALL Add a note
YOU
Add your Comment