H6 - Functies (deel 2): UITWERKINGEN
Opdracht 6.1 Onderdelen van een functie benoemen
- naam van de functie: berekenOppervlakte
- code die bij de functie hoort: regels 2 en 3
- parameters: breedte en hoogte
- type van parameters: twee ints (gehele getallen) of twee floats (kommagetallen)
- retourwaarde: 20 (namelijk de oppervlakte is 4*5)
- type van retourwaarde: int (gehele getal) of een float (kommagetal)
Opdracht 6.2 Bereik van variabelen
De variabele kleur wordt op regel 3 gedefinieerd, binnen de functie. De functie eindigt na regel 4. Dat zie je omdat daarna niet meer is ingesprongen. Na regel 4 bestaat de variabele kleur dan ook niet meer. Op regel 7 proberen we die af te drukken, maar omdat die daar buiten de functie is, bestaat die daar niet meer en kan die niet afgedrukt worden.
Opdracht 6.3 Dobbelen
Stappenplan voor functie en hoofdprogramma:
-
Functie:
- Definieer
gooiDobbelsteen() - Bepaal worp tussen 1 en 6:
random.randint(1,6) - Return worp
- Definieer
-
Hoofdprogramma:
- Importeer
random eersteWorpwordt waardegooiDobbelsteen()tweedeWorpwordt waardegooiDobbelsteen()- Print de worpen
- Importeer
De code:
import random
#FUNCTIE DEFINITIES
#gooit een willekeurige dobbelsteen
def gooiDobbelsteen():
willekeurige_worp = random.randint(1,6) #kies een willekeurig getal: 1 t/m 6
return willekeurige_worp
### HOOFDPROGRAMMA
eersteDobbelworp = gooiDobbelsteen()
tweedeDobbelworp = gooiDobbelsteen()
print("Je hebt gegooid", eersteDobbelworp, "en", tweedeDobbelworp )
Opdracht 6.4 Een berekening retourneren
- Het programma berekent de nieuwe prijs van een artikel, gegeven de oude prijs en het kortingspercentage. In regel 2 wordt een percentage korting berekend op het getal dat binnenkomt op de parameter.
- Parameter
akan beteroude_prijsheten; lokale variabelebkan beternieuwe_prijsheten.berekenKorting. Zie de code hieronder. - De variabele
kortingwordt aangemaakt op regel 3 en houdt op te bestaan na regel 5. Omdat ze binnen de functie wordt aangemaakt, bestaat ze niet meer na afloop van het programma. Dus, na regelnummer 5 bestaat ze niet meer en kun je het niet meer gebruiken. Hetzelfde geldt voor de andere variabelen die in de functie worden aangemaakt. Daarom is het nodig om denieuwe_prijste retourneren zodat deze daarna nog gebruikt kan worden (in de print).
De code:
### FUNCTIEDEFINITIE
def berekenKorting(oude_prijs, perc_korting):
korting = oude_prijs * perc_korting/100
nieuwe_prijs = oude_prijs - korting
return nieuwe_prijs
### HOOFDPROGRAMMA
prijs_met_korting = berekenKorting(20.00, 30)
print("Met korting kost het product nu " + str(prijs_met_korting) + " euro" )
Opdracht 6.5 Fietsen en wielen
-
Het probleem is dat
berekend_aantal_wielenniet bestaat in het hoofdprogramma. - Stap 1. plaats op regel 4:
return aantal_wielenin plaats vanprint (aantal_wielen)
Stap 2. wijzig regel 7 in:berekend_aantal_wielen = telAantalWielen( 10 )
### FUNCTIEDEFINITIE
def telAantalWielen( aantal_fietsen ):
aantal_wielen = aantal_fietsen * 2
return aantal_wielen
### HOOFDPROGRAMMA
berekend_aantal_wielen = telAantalWielen( 10 ) # roep functie aan
print("Je hebt", berekend_aantal_wielen, "wielen." )
Opdracht 6.6 Toetscijfer berekenen
### FUNCTIEDEFINITIE
def berekenCijfer(aantal_punten): # functiedefinitie
cijfer = (aantal_punten*9) / 60 + 1 # Bereken cijfer op grond van invoer
return(cijfer) # retourneer het resultaat (werkt ook zonder haakjes)
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
jouwScore = berekenCijfer(40) # roep hier je functie aan en sla het resultaat op in een variabele
print("Je scoort een: ",jouwScore) # print jouw cijfer
Opdracht 6.7 Volume van een balk
Stappenplan met Code
| Stappenplan | Code |
|---|---|
| FUNCTIEDEFINITIE | |
|
geef drie parameters mee: de lengte, breedte en hoogte. |
def berekenBalkvolume(lengte, breedte, hoogte):
|
| bereken volume door de lengte × breedte × hoogte |
volume = lengte * breedte * hoogte
|
| retourneer uitkomst |
return volume
|
| HOOFDPROGRAMMA | |
| roep de functie aan en sla de retourwaarde op in een variabele. |
balkvolume = berekenBalkvolume(3, 4, 5)
|
| druk daarna het berekende volume af. |
print("Het volume van de balk is:", balkvolume)
|
De code:
### FUNCTIEDEFINITIE
#deze functie levert het volume van een balk op
def berekenBalkvolume(lengte, breedte, hoogte): # geef drie parameters mee: de lengte, breedte en hoogte.
volume = lengte*breedte*hoogte # bereken volume door de lengte x breedte x hoogte
return volume
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
balkvolume = berekenBalkvolume(3,4,5) # roep de functie aan en sla je de retourwaarde op in een variabele.
print("Het volume van de balk is:", balkvolume) # Druk daarna het berekende volume af
Opdracht 6.8 Constanten
Constanten zijn de namen van de spelers. De variabelen zijn de scores van de spelers. Je kunt het beste een tabel gebruiken:
| NAAM_SPELER_1 | NAAM_SPELER_2 | |
|---|---|---|
| winst | ||
| gelijkspel | ||
In Python zou je dan als constanten NAAM_SPELER_1 en
NAAM_SPELER_2 kunnen gebruiken.
De variabelen, die immers van waarde moeten kunnen veranderen, zijn dan:
winst_speler_1, winst_speler_2 en
gelijkspel.
H6 - Afsluitende opdrachten: UITWERKINGEN
Afsluitende opdracht 6.1 Vind de fout
- De fout in de code betreft het ontbreken van een returnwaarde in de functie.
- De variabele
berekendeOppervlaktekrijgt geen waarde vanwege de reden die bij de vorige onderdeel genoemd is. Daarom wordtNoneafgedrukt.
De code:
### FUNCTIEDEFINITIE
def oppervlakte_van_driehoek( basis, hoogte ):
opp = 0.5 * basis * hoogte
print( "Een driehoek met basis", basis, "en hoogte", hoogte, "heeft een oppervlakte van", opp )
return opp
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
berekende_oppervlakte = oppervlakte_van_driehoek( 5, 4 )
print( "De berekende oppervlakte is:", berekende_oppervlakte )
Afsluitende opdracht 6.2 Munt opgooien
Antwoord:
Er is een functiedefinitie nodig voor gooiMunt()
- Kies willekeurig getal tussen 0 en 1 en zet dit op variabele
getal. Importeerrandomhiervoor. - Als
getalnul is:- Variabele
worpwordt"MUNT"
- Variabele
- Anders:
- Variabele
worpwordt"KOP"
- Variabele
- Return
worp
Hoofdprogramma:
worpkrijgt de returnwaarde vangooiMunt()- Print
worp
In code, met commentaar:
import random
### FUNCTIEDEFINITIE
def gooiMunt():
# Kies een willekeurig getal: 0 of 1
random_getal = random.randint (0, 1)
# Controleer of het getal nul is
if random_getal == 0:
return("KOP")
else:
return("MUNT")
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
opgegooid = gooiMunt()
print( "Er is gegooid:", opgegooid )
Afsluitende opdracht 6.3 Geldig emailadres
Stappenplan:
- Definieer een functie voor controle met een parameter
emailadres:controleEmailadres( emailadres ) - Als de parameter een lengte heeft van
< 5of> 20:- print lengte niet goed
- return
false
- Anders als:
"?","%","&"voorkomen in de parameter:- print verkeerde tekens op invoer
- return
false
- Anders als: geen
@of punt op invoer:- Er ontbreekt een
@of punt - return
false
- Er ontbreekt een
- Anders:
- Print: het adres is oké.
- Return
true
De code:
### FUNCTIEDEFINITIES
def vraagInvoer():
print("Geef je e-mailadres op:")
invoer = input()
print("Je hebt ingevoerd:", invoer)
return invoer
def controleEmailadres( emailadres ):
if len(emailadres) <= 5 or len(emailadres) >= 20:
print("De lengte van de gebruikersnaam is niet goed.")
return False
elif ("?" in emailadres) or ("%" in emailadres) or ("&" in emailadres):
print("De volgende vreemde tekens mogen niet voorkomen: ?, %, & ")
return False
elif ("@" not in emailadres or "." not in emailadres):
print("Een emailadres moet een @ en een . bevatten. ")
return False
else:
print("Jouw email adres voldoet aan de eisen.")
return True
### HOOFDPROGRAMMA
emailadres = vraagInvoer()
email_is_geldig = controleEmailadres(emailadres)
if email_is_geldig:
print("Toegang verleend")
else:
print("Jammer")
Afsluitende opdracht 6.4 Deelbaar door 7
### FUNCTIEDEFINITIE
# Doel van de functie is om te bepalen of een gegeven getal deelbaar is door 7. Werkt ook voor kommagetallen, 0 en negatieve getallen.
# Invoer: een int of float
# Uitvoer: boolean (True of False)
def isDeelbaarDoor7(getal):
if getal%7 == 0:
return True
else:
return False
### HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
antwoord = isDeelbaarDoor7(14)
print(antwoord)
antwoord = isDeelbaarDoor7(1)
print(antwoord)
antwoord = isDeelbaarDoor7(0)
print(antwoord)
antwoord = isDeelbaarDoor7(-7)
print(antwoord)
antwoord = isDeelbaarDoor7(-7.0)
print(antwoord)
Afsluitende opdracht 6.5 BMI
### FUNCTIEDEFINITIES
#schrijf hier je def voor BMI berekenen
def BMI_berekenen (aantal_m, aantal_kg):
BMI = aantal_kg/(aantal_m * aantal_m)
return BMI
#bepaal de gezondheidscategorie bij BMI
def advies_bepalen(BMI):
if BMI <= 18.5: # te licht
advies = "Je mag best wel wat aankomen"
else:
if BMI < 25: #gezond gewicht
advies = "Blijf op dit gewicht"
else: #B in het geval BMI>= 25: te zwaaar
advies = "Je kunt het beste wat afvallen"
return advies
### HOOFDPROGRAMMA
#vraag hier de gebruiker om zijn gegevens
print("Hoe lang ben je (in meters)?")
lengte = float( input() )
print("Hoeveel weeg je (in kg)?")
gewicht = float( input() )
#roep hier je functie aan voor het berekenen van de BMI
berekende_BMI = BMI_berekenen (lengte, gewicht)
print("BMI:", berekende_BMI)
advies = advies_bepalen(berekende_BMI)
print("Ons advies is:", advies)