Gå till innehållet

Funktioner (Python)

En funktion är som ett litet miniprogram som gör en sak. Du kan ge den ett namn, skicka in värden och få tillbaka ett svar.

Mål för denna sida

  • Skapa egna funktioner med def
  • Skicka in värden (parametrar)
  • Få tillbaka resultat med return

Varför funktioner?

  • Gör koden kortare och lättare att läsa
  • Återanvänd samma kod på flera ställen

Din första funktion

Python
1
2
3
4
def hälsa():
    print("Hej från en funktion!")

hälsa()  # anropa (kör) funktionen

Funktion med parametrar

Python
1
2
3
4
5
def hälsa_namn(namn):
    print(f"Hej {namn}!")

hälsa_namn("Ava")
hälsa_namn("Noah")

Returnera ett värde

Python
1
2
3
4
5
def plus(a, b):
    return a + b

resultat = plus(3, 4)
print(resultat)  # 7

Sammansatt exempel

Python
def fråga_int(prompt):
    while True:
        text = input(prompt)
        if text.strip().isdigit():
            return int(text)
        print("Skriv ett heltal, tack!")

def medelvärde(a, b, c):
    return (a + b + c) / 3

x = fråga_int("Tal 1: ")
y = fråga_int("Tal 2: ")
z = fråga_int("Tal 3: ")
print(f"Medelvärde: {medelvärde(x, y, z)}")

Vanliga misstag

  • Glömma att anropa funktionen: att bara skriva namnet kör den inte.
  • Glömma return när du vill få tillbaka ett värde.
  • Parameternamn och argument i fel ordning.

Övningar

1) Skriv en funktion dubbel(text) som skriver ut texten två gånger på samma rad, separerade med mellanslag.

2) Skriv en funktion max3(a, b, c) som returnerar det största av tre tal (utan att använda max).

3) Skriv en funktion is_giltigt_svar(s) som returnerar True om s är "j" eller "n" (skiftlägesokänsligt), annars False.

4) Skriv funktionen c_to_f(c) som omvandlar Celsius till Fahrenheit och tvärtom f_to_c(f). Använd dem i ett litet program.

5) Bonus: Skriv fråga(prompt, giltiga) som tar en lista med giltiga svar och frågar tills användaren skriver något som finns i listan. Returnera svaret.


Små steg – från enkel funktion till återanvändning

1) Skriv en funktion utan parametrar som skriver en rad. 2) Lägg till en parameter och skriv ut den. 3) Lägg till return och spara resultatet i en variabel.

Python
1
2
3
4
5
def kvadrat(x):
    return x * x

tal = int(input("Tal: "))
print(kvadrat(tal))

Mini-projekt: Meny-miniräknare

Skriv funktioner addera(a,b), subtrahera(a,b), multiplicera(a,b), dividera(a,b). Gör en meny som frågar vilket räknesätt och två tal.

Utmaningar: - Hantera division med noll med if b == 0. - Lägg till funktion medelvärde(lista) och låt användaren skriva flera tal (separera med mellanslag).

Felsökning

  • Får du None i utskrift? Du kanske glömde return.
  • Inget händer? Har du anropat funktionen (med ())?

Hitta felen! (5 fel)

Koden ska definiera och använda funktioner korrekt. Rätta fem fel.

Python
1
2
3
4
5
6
7
8
9
def area_rektangel(bredd, höjd):
    a = bredd * höjd

def skriv_area(b, h):
    print("Area är", area_rektangel(h, b))

skriv_area = skriv_area(3, 4)
skriv_area(5, 6)
print(omkrets(2, 3))

Facit

Python
# Fix 1: Returnera resultatet från area_rektangel
def area_rektangel(bredd, höjd):
    return bredd * höjd

# Fix 2: Anropa med rätt ordning på parametrarna
def skriv_area(b, h):
    print("Area är", area_rektangel(b, h))

# Fix 3: Anropa funktionen utan att skriva över namnet
skriv_area(3, 4)

# Fix 4: Anropa inte en variabel som funktion
# (ingen extra anrop rad behövs här)

# Fix 5: Definiera omkrets-funktion innan den används
def omkrets(bredd, höjd):
    return 2 * (bredd + höjd)

print(omkrets(2, 3))