Je hebt zojuist geleerd hoe je een subtotaal kan bijhouden in een for-lus. Je kan hieronder nog eends de uitleg lezen.

Herhaling informatie over een for-lus met een subtotaal

Stel dat je een lijst hebt met prijzen van producten die je in een winkelmandje hebt gedaan, en je wilt weten wat het totaalbedrag is dat je moet betalen. Je kan dan een variabele gebruiken om het subtotaal bij te houden terwijl je door de lijst van prijzen loopt.

We kunnen dit vergelijken met hoe je dit in je hoofd zou doen als je in de supermakt zou zijn. Je begint met een totaal van 0 euro, en elke keer dat je een nieuw product ziet, tel je de prijs van dat product op bij het totaal dat je al hebt. Op die manier houd je een lopend totaal bij van hoeveel je moet betalen. Je doet dus bij ieder nieuw product dat je ziet de volgende berkening:

(nieuw) totaal = (oud) totaal + prijs (van nieuw product).

Hier zie je hoe dit eruit ziet in Python met een gegeven lijst van prijzen:

prijzen = [10.99, 5.49, 3.50]

totaal = 0
for prijs in prijzen:
    totaal = totaal + prijs

print(totaal)

Wat gebeurt hier?

  • De lijst [10.99, 5.49, 3.50] wordt opgeslagen in de variabele prijzen.
  • De variabele totaal wordt geïnitialiseerd met de waarde 0.
  • De for-lus begint met de lijst die is opgeslagen in prijzen.
  • In het begin krijgt prijs de waarde 10.99.
  • De code binnen de lus, totaal = totaal + prijs, wordt uitgevoerd, waardoor totaal nu de waarde 0 + 10.99 = 10.99 heeft.
  • Daarna krijgt prijs de volgende waarde, namelijk 5.49.
  • De code binnen de lus, totaal = totaal + prijs, wordt uitgevoerd, waardoor totaal nu de waarde 10.99 + 5.49 = 16.48 heeft.
  • Vervolgens krijgt prijs de volgende waarde, namelijk 3.50.
  • De code binnen de lus, totaal = totaal + prijs, wordt uitgevoerd, waardoor totaal nu de waarde 16.48 + 3.50 = 19.98 heeft.
  • Nu zijn er geen prijzen meer in de lijst die we hadden gegeven, dus stopt de lus.
  • , wordt uitgevoerd, waardoor het totaalbedrag van alle prijzen op het scherm wordt afgedrukt.

Op het scherm zie je dus verschijnen:

19.98

Je hebt ook al geleerd hoe je een functie kan maken. Hieronder kan je nog twee voorbeelden teruglezen.

Voorbeeld van een simpele functie
def PlusVijf(x):
    y = x + 5
    return y

Wat doet deze functie?

  • De functie heet PlusVijf.
  • De functie heeft één invoer, namelijk x.
  • Binnen de functie wordt een nieuwe variabele y gemaakt, die de waarde van x + 5 krijgt.
  • De functie geeft de waarde van y terug als uitvoer.

Kortom, deze functie neemt een getal als invoer, telt er 5 bij op, en geeft het resultaat terug. Dus als je bijvoorbeeld PlusVijf(10) zou aanroepen, zou het 15 teruggeven.

Voorbeeld van een functie met een for-lus en een print-opdracht

Deze functie, genaamd zal steeds één getal als invoer nemen. Vervolgens drukt het op het scherm exact zo vaak de zin Hallo wereld! af. Hier is die functie:

def BegroetVaak(aantal_keer):
    for i in range(aantal_keer):
        print("Hallo wereld!")

Wanneer iemand deze functie gebruikt, kan die zelf kiezen welke waarde voor aantal_keer die als invoer geeft. Als iemand bijvoorbeeld 3 als invoer geeft door te typen, dan krijgt die het volgende op het scherm te zien:

Hallo wereld!
Hallo wereld!
Hallo wereld!

Zo ook krijgt iemand die typt het volgende op het scherm te zien:

Hallo wereld!
Hallo wereld!
Hallo wereld!
Hallo wereld!
Hallo wereld!
Hallo wereld!
Hallo wereld!

We gaan nu het bijhouden van een subtotaal in een functie met een for-lus verwerken. Op die manier kan de gebruiker zelf een lijst van prijzen geven, en zal de functie het totaalbedrag teruggeven.

Beschouw de functie hieronder als een voorbeeld van hoe dat eruit zou kunnen zien.

def Totaalbedrag(prijzen):
    totaal = 0
    for prijs in prijzen:
        totaal = totaal + prijs
    return totaal

Wat doet deze functie?



Opdracht

Maak een functie genaamd die één invoer heeft, namelijk een lijst van prijzen (floats of integers). De functie zal met een for-lus het totaalbedrag van alle prijzen in de lijst berekenen en teruggeven.

input-output verwachtingen
Invoer Verwachte returnwaarde
19.98
63
27.82
0