-
Notifications
You must be signed in to change notification settings - Fork 0
2021_2022_deeltoets_1
Harry Broeders edited this page Jan 6, 2023
·
3 revisions
De opgaven kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2021-2022_Deeltoets_1.pdf
def bereken_bmi(l, g):
bmi = g / (l / 100) ** 2
return bmiDe lokale variabele bmi is niet echt nodig:
def bereken_bmi(l, g):
return g / (l / 100) ** 2Een 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: '))))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 + 1Een 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))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 totaalTestcode 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.