H6 - Functies (deel 2): UITWERKINGEN

Opdracht 6.1 Onderdelen van een functie benoemen

  1. naam van de functie: berekenOppervlakte
  2. code die bij de functie hoort: regels 2 en 3
  3. parameters: breedte en hoogte
  4. type van parameters: twee ints (gehele getallen) of twee floats (kommagetallen)
  5. retourwaarde: 20 (namelijk de oppervlakte is 4*5)
  6. 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.

p>

Opdracht 6.3 Dobbelen

Stappenplan voor functie en hoofdprogramma:

  1. Functie:
    • Definieer gooiDobbelsteen()
    • Bepaal worp tussen 1 en 6: random.randint(1,6)
    • Return worp
  2. Hoofdprogramma:
    • Importeer random
    • eersteWorp wordt waarde gooiDobbelsteen()
    • tweedeWorp wordt waarde gooiDobbelsteen()
    • Print de worpen

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

  1. 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.
  2. Parameter a kan beter oude_prijs heten; lokale variabele b kan beter nieuwe_prijs heten.berekenKorting. Zie de code hieronder.
  3. De variabele korting wordt 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 de nieuwe_prijs te 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

  1. Het probleem is dat berekend_aantal_wielen niet bestaat in het hoofdprogramma.
  2. Stap 1. plaats op regel 4: return aantal_wielen in plaats van print (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

  1. De fout in de code betreft het ontbreken van een returnwaarde in de functie.
  2. De variabele berekendeOppervlakte krijgt geen waarde vanwege de reden die bij de vorige onderdeel genoemd is. Daarom wordt None afgedrukt.

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()

Hoofdprogramma:

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:

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)