Aanpassen — pas het algoritme aan
Leerdoel: je past het algoritme aan voor een nieuwe vraag. Een klein verschil in de eis leidt vaak tot een klein, gericht verschil in de code.
Opdracht
Pas zoek aan zodat de functie telt hoe vaak doel in de lijst
voorkomt, in plaats van de index van de eerste te returnen.
- De nieuwe functie heet
tel. - Hij geeft een geheel getal terug, nul of meer.
- Komt het doel niet voor, dan is het antwoord
0.
Voorbeeld: tel([3, 1, 4, 1, 5], 1) moet 2 returnen.
Code-omgeving wordt voorbereid…
Tip
Return niet zodra je een match vindt, want dan kun je niet verder tellen. Houd een teller bij die je bij elke match ophoogt, en geef die pas na de lus terug.
Welke bouwsteen verandert er? Welke blijft hetzelfde?
Antwoord
def tel(lijst, doel):
teller = 0
for waarde in lijst:
if waarde == doel:
teller = teller + 1
return teller
Wat is hetzelfde gebleven?
- Bouwsteen 1: door de lijst lopen.
- Bouwsteen 2: vergelijken met het doel.
Wat is veranderd?
- Bouwsteen 3: in plaats van bij match meteen return, doen we teller += 1 en doorgaan.
- Bouwsteen 4: in plaats van
-1, returnen we de teller (die is0als er niets is gevonden — dat past al bij de eis).
Kortere variant met +=:
def tel(lijst, doel):
teller = 0
for waarde in lijst:
if waarde == doel:
teller += 1
return teller
Door naar bouw zelf.