Tie koodariksi

Programmeringens grunder

Språk:

Kapitel 16: Funktioner

Under kursen har vi gått igenom många av Pythons färdiga funktioner, till exempel print, range och len. Men tänk om vi själva vill skapa motsvarande funktioner?

Skapa en funktion

Vi kan skapa en funktion med hjälp av ordet def. Till exempel i följande program skriver funktionen test ut texten "Morjens!". Programmet anropar funktionen tre gånger.

def test():
    print("Morjens!")

testi()
testi()
testi()

Programmets utskrift är följande:

Morjens!
Morjens!
Morjens!

Parametrar

Funktioner har ofta en eller flera parametrar med hjälp av vilka data kan förmedlas till den. Till exempel i följande funktion trappa uttrycker parameter n hur höga vi vill att trapporna som skrivs ut ska vara. Vi anropar funktionen två gånger med parametrarna 3 och 5.
def trappa(n):
    for i in range(1,n+1):
        print("#"*i)

trappa(3)
trappa(5)

Programmet ger följande resultat:

#
##
###
#
##
###
####
#####

Returvärde

Funktionen kan även returnera något värde till anropspunkten. Då använder vi kommandot return i funktionen, som avlägsnas från funktionen och returnerar värdet.

Till exempel i följande program räknar funktionen summa ut summan av talen a...b:

def summa(a,b):
    s = 0
    for x in range(a,b+1):
        s += x
    return s

print(summa(1,5))
print(summa(8,9))

Programmet räknar ut summorna 1+2+3+4+5 = 15 och 8+9 = 17:

15
17

Rekursion

Vi kan även använda rekursion i funktionen, vilket betyder att funktionen anropar sig själv. Så är det i följande funktion som räknar ut den största gemensamma delaren för talen a och b med Euklides algoritm:
def sgd(a,b):
    if b == 0:
        return a
    else:
    	return sgd(b,a%b)

print(sgd(4,6))
print(sgd(9,14))
print(sgd(24,60))
Programmets utskrift är följande:
2
1
12

Uppgift 1 Olöst

Skriv en funktion rad som skriver ut en rad som har n stjärnor. Använd din funktion i följande program som också testar den.

def rad(n):
    # skriv din kod här

rad(5)
rad(10)
rad(8)

Programmets utskrift bör vara följande:

*****
**********
********

Skriv ditt program här:


Uppgift 2 Olöst

Skriv en funktion box som skriver ut text i en box vars ränder är stjärnor. Använd din funktion i följande program som också testar den:

def box(text):
    # skriv din kod här

box("apa")
box("banan")
box("cembalo")

Programmets utskrift bör vara följande:

*******
* apa *
*******
*********
* banan *
*********
***********
* cembalo *
***********

Skriv ditt program här:


Uppgift 3 Olöst

Skriv en funktion fakultet som räknar ut fakulteten av n. Använd din funktion i följande program som också testar den:

def fakultet(n):
    # skriv din kod här

print(fakultet(3))
print(fakultet(5))
print(fakultet(9))

Programmets utskrift bör vara följande:

6
120
362880

Skriv ditt program här:


Uppgift 4 Olöst

Skriv funktion summa som räknar ut summan av talen i en lista. Använd din funktion i följande program som också testar den:

def summa(lista):
    # skriv din kod här

print(summa([1,2,3]))
print(summa([5,1,7,2,5]))
print(summa([4]))

Programmets utskrift bör vara följande:

6
20
4

Skriv ditt program här:


Uppgift 5 Olöst

Skriv en funktion baklanges som returnerar en sträng baklänges. Använd din funktion i följande program som också testar den:

def baklanges(text):
    # skriv din kod här

print(baklanges("apa"))
print(baklanges("banan"))
print(baklanges("cembalo"))

Programmets utskrift bör vara följande:

apa
nanab
olabmec

Skriv ditt program här:


Uppgift 6 Olöst

Skriv en funktion delare som returnerar en lista som innehåller alla delare av talet n, från minsta till största. Använd din funktion i följande program som också testar den:

def delare(n):
    # skriv din kod här

print(delare(6))
print(delare(7))
print(delare(8))
print(delare(980))
print(delare(12345))

Programmets utskrift bör vara följande:

[2, 3]
[7]
[2, 2, 2]
[2, 2, 5, 7, 7]
[3, 5, 823]

Skriv ditt program här: