# Les 6: Functies

Functies heb je inmiddels al een paar keer gezien, maar niet echt zelf gemaakt! Een functie is een stuk code die je kan aanroepen en zo steeds dezelfde acties kan uitvoeren door de naam ervan aan te roepen. Je hebt al heel vaak inmiddels functies gebruikt als `print()`, `len(), input()`etc. Maar nu gaan we kijken hoe we dit soort dingen zelf kunnen maken!

Voorbeeld:

```python
def groet_gebruiker():
	print("Welkom bij dit mooie programma!")
	print("We hopen dat je het leuk vindt om dit programma te gebruiken.")
```

Het programma doet niets… Dit komt omdat we wel de functie gemaakt hebben, maar hem niet gebruiken.

Wil je dat de functie wordt gebruikt, dan moet je hem aanroepen.

```python
def groet_gebruiker():
	print("Welkom bij dit mooie programma!")
	print("We hopen dat je het leuk vindt om dit programma te gebruiken.")

groet_gebruiker()
groet_gebruiker()
```

Test de code in je eigen compiler.&#x20;

Voorbeeld #2

Stel je wilt van drie verschillende getallen steeds weten welke de grootste is, dan kan je daar een functie voor schrijven

```python
def max_van_drie ():
  a = int(input("Geef me een getal!"))
  b = int(input("Geef me nog een getal!"))
  c = int(input("Geef me nog een laatste getal!"))
  grootste = 0
  
  if a > b and a > c:
      grootste = a
  elif b > c: # a is niet het grootste, dus b
      grootste = b
  else:
      grootste = c

  print (grootste, "is het grootste getal!")      
```

Hier stopt de functie. Hieronder kan je dan vervolgens de functie aanroepen en dan wordt het bovenstaande uitgevoerd, zonder het aanroepen van de functie wordt deze dus ook niet uitgevoerd.

`max_van_drie()`

Hier zie je dat alles wat onder de def staat ingesprongen is (een tab ervoor heeft) bij de functie hoort. Zo kan je voor vrijwel alles een functie schrijven, die je later simpelweg alleen maar hoeft aan te roepen om hem meerdere keren te kunnen gebruiken! Handuuuuuuuugh!

### Parameters meegeven aan een functie

Verder kan je ook nog een variabele aan een functie mee geven, zo kunnen we bijvoorbeeld de max\_van\_drie functie ook omschrijven zodat er geen input van de gebruiker gevraagd wordt. Dit werkt als volgt:

```python
def max_van_drie (a, b, c):
  grootste = 0
  
  if a > b and a > c:
      grootste = a
  elif b > c: # a is niet het grootste, dus b
      grootste = b
  else:
      grootste = c

  print (grootste, "is het grootste getal!")
```

Als we de functie nu aanroepen, kunnen we de waarden van a, b en c meer geven tussen de haakjes. Zoals dit:

`max_van_drie(4, 9, 23)`

Hier wordt de 4 als het eerste argument gezien dat meegegeven wordt aan de functie, en zal dus als “a” in de functie zelf gebruikt kunnen worden . Test dit maar in je eigen compiler.

### Opdracht 6

Schrijf een functie die een zin vraagt aan de gebruiker en deze vervolgens achterstevoren print. Dit kan met de slicing techniek!

### Opdracht 7

Schrijf een functie die steeds om een aantal getallen vraagt, en deze allemaal bij elkaar optelt en de som ervan uiteindelijk uit print.

### Opdracht 8

Schrijf een functie die checkt of de input van een gebruiker binnen een bepaalde range valt. Dus of deze tussen twee verschillende getallen past.

`>>> Hallo, wilt u mij een getal geven?`\
`>>> 38`\
`>>> 38 valt niet tussen de 3 en de 9`

### Opdracht 9

Schrijf een functie die drie verschillende strings vraagt aan de gebruiker, de lengte ervan berekend, deze lengte vervolgens bij elkaar op telt, dit getal dan deelt door 2.5, en het dat uiteindelijke getal afgerond naar boven en naar beneden print.

### Opdracht 11

Schrijf een functie die de laagste van vijf cijfers terug print.

### Opdracht 12

Schrijf een functie die drie variabelen mee krijgt, en vervolgens deze allemaal met elkaar vermenigvuldigt en het totaal print.
