Skip to content

2021_2022_deeltoets_1

Harry Broeders edited this page Jan 6, 2023 · 3 revisions

2021-2022 Deeltoets 1

Opgaven

De opgaven kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2021-2022_Deeltoets_1.pdf

Uitwerkingen

Toetsvraag 1a

def bereken_bmi(l, g):
    bmi = g / (l / 100) ** 2
    return bmi

De lokale variabele bmi is niet echt nodig:

def bereken_bmi(l, g):
    return g / (l / 100) ** 2

Toetsvraag 1b

Een stap-voor-stap oplossing:

lengte_string = input('Geef de lengte in cm: ')
gewicht_string = input('Geef het gewicht in kg: ')
lengte = int(lengte_string)
gewicht = int(gewicht_string)
bmi = bereken_bmi(lengte, gewicht)
print('De BMI is:', bmi)

Een compacte oplossing:

print('De BMI is:', bereken_bmi(int(input('Geef de lengte in cm: ')), int(input('Geef het gewicht in kg: '))))

Toetsvraag 1c

Met een for-loop:

def bmi_met_lengte(lengte, start, stop):
    for gewicht in range(start, stop + 1):
        print('Lengte:', lengte, 'Gewicht:', gewicht, 'BMI:', bereken_bmi(lengte, gewicht))

Met een while-loop:

def bmi_met_lengte(lengte, start, stop):
    while start <= stop:
        print('Lengte:', lengte, 'Gewicht:', start, 'BMI:', bereken_bmi(lengte, start))
        start = start + 1

Een recursieve oplossing:

def bmi_met_lengte(lengte, start, stop):
    if start <= stop:
        print('Lengte:', lengte, 'Gewicht:', start, 'BMI:', bereken_bmi(lengte, start))
        bmi_met_lengte(lengte, start + 1, stop)

Nog een recursieve oplossing (om te laten zien hoe een je een eenvoudig probleem ook met een ingewikkeld programma kunt oplossen):

def bmi_met_lengte(lengte, start, stop):
    if start < stop:
        bmi_met_lengte(lengte, start, stop - 1)
    print('Lengte:', lengte, 'Gewicht:', stop, 'BMI:', bereken_bmi(lengte, stop))

Toetsvraag 2

def totale_prijs_met_korting(prijzen):
    totaal = 0
    for prijs in prijzen:
        if prijs > 17.50:
            totaal = totaal + 0.75 * prijs
        else:
            totaal = totaal + prijs
    return totaal

Testcode waarin ook een aantal randgevallen worden getest:

artikelen = [12.50, 14.95, 65.45, 6.20, 81.90]
print("De totale prijs na korting is:", round(totale_prijs_met_korting(artikelen), 2))
artikelen = []
print("De totale prijs na korting is:", round(totale_prijs_met_korting(artikelen), 2))
artikelen = [17.50]
print("De totale prijs na korting is:", round(totale_prijs_met_korting(artikelen), 2))
artikelen = [17.51]
print("De totale prijs na korting is:", round(totale_prijs_met_korting(artikelen), 2))

Een compacte oplossing:

def totale_prijs_met_korting(prijzen):
    return sum([prijs * 0.75 if prijs > 17.50 else prijs for prijs in prijzen])

In het bovenstaande programma wordt gebruik gemaakt van list comprehension. Dit is niet behandeld in de les, maar wordt uitgelegd in paragraaf 19.2 van het boek.

Clone this wiki locally