Skip to content

proeftoets

HarryBroeders edited this page Feb 14, 2024 · 4 revisions

2023-2024 Proeftoets

Opgaven

De opgaven kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Opdrachten/Proeftoets.pdf

Uitwerkingen

Toetsvraag 1a

De onderstaande functie volgt de methode die in de opgave beschreven wordt:

def som_van_de_cijfers(getal):
    som = 0
    while getal != 0:
        som = som + getal % 10
        getal = getal // 10
    return som

De onderstaande functie volgt dezelfde methode, maar slaat de afzonderlijke cijfers eerst op in een lijst en telt deze pas aan het einde op met behulp van de standaard functie sum:

def som_van_de_cijfers(getal):
    cijfers = []
    while getal != 0:
        cijfers.append(getal % 10)
        getal = getal // 10
    return sum(cijfers)

De onderstaande functie volgt dezelfde methode, maar gebruikt een recursieve in plaats van een iteratieve aanpak:

def som_van_de_cijfers(getal):
    if (getal == 0): 
        return 0
    return getal % 10 + som_van_de_cijfer(getal // 10)

In de onderstaande recursieve functie is één recursieve aanroep minder nodig dan in de bovenstaande functie:

def som_van_de_cijfers(getal):
    if (getal < 10): 
        return getal
    return getal % 10 + som_van_de_cijfer(getal // 10)

De onderstaande functie zet het getal eerst om in een string. Daarna worden de afzonderlijke karakters van de string één voor één omgezet naar een getal en gesommeerd:

def som_van_de_cijfers(getal):
    som = 0
    for digit in str(getal):
        som = som + int(digit)
    return som

De onderstaande functie volgt dezelfde methode, maar slaat de afzonderlijke cijfers eerst op in een lijst en telt deze pas aan het einde op met behulp van de standaard functie sum:

def som_van_de_cijfers(getal):
    lijst = []
    for digit in str(getal):
        lijst.append(int(digit))
    return sum(lijst)

De onderstaande functie volgt dezelfde methode, maar gebruikt een recursieve in plaats van een iteratieve aanpak:

def som_van_de_cijfers(getal):
    if (getal < 10): 
        return getal
    return int(str(getal)[0]) + som_van_de_cijfers(int(str(getal)[1:]))

De onderstaande functie zet het getal ook eerst om in een string. Daarna wordt indexering gebruikt om de afzonderlijke karakters van de string één voor één om te zetten naar een getal en te sommeren:

def som_van_de_cijfers(getal):
    som = 0
    for i in range(len(str(getal))):
        som = som + int(str(getal)[i])
    return som

Alle acht tot nog toe gepresenteerde functies maakten gebruik van taalconstructies die in de les zijn behandeld. De onderstaande twee functies maken gebruik van nog niet behandelde taalconstructies uit Python.

De onderstaande functie maakt gebruik van een zogenoemde list comprehension, zie paragraaf 19.2 van het boek.

def som_van_de_cijfers(getal):
    return sum(int(cijfer) for cijfer in str(getal))

De onderstaande functie maakt gebruik van de standaard functie map, zie Python documentatie.

def som_van_de_cijfers(getal):
    return sum(map(int, str(getal)))

Toetsvraag 1b

def is_Harshadgetal(getal):
    return getal % som_van_de_cijfers(getal) == 0

Toetsvraag 1c

for i in range(81, 110):
    if is_Harshadgetal(i):
        print(i)

Clone this wiki locally