Hoofdstuk 4 - Variabelen
Meteen naar de Afsluitende Opgaven over Variabelen
Terug naar de cursus pagina
Als je met code werkt, ben je vaak bezig met het ontwerpen van een procedure (of “algoritme”) dat een probleem op een algemeen toepasbare manier oplost. Bijvoorbeeld, in opgave 3.2 moest je de prijs van 60 boeken uitrekenen. Als je dat doet door 24.95*60 uit te rekenen, dan los je het probleem alleen op voor precies 60 boeken voor een bepaalde prijs. Als je een dergelijk probleem algemener wilt oplossen, moet je variabelen gebruiken om waardes in op te slaan, zoals aantal_boeken en prijs_boek.
Variabelen en waarden
Een variabele is een plaats in het geheugen van de computer die een naam heeft gekregen, en waarin je een waarde kunt opslaan. De naam mag je zelf kiezen, en wordt over het algemeen de “variabele naam” genoemd.
Om een variabele te creëren in Python (dus om een variabele naam te kiezen) moet je een waarde “toekennen” aan gekozen naam middels het is-gelijk (=) symbool. Aan de linkerkant van het is-gelijk symbool zet je de variabele naam, en aan de rechterkant de waarde die je wilt opslaan in de variabele. Dit kan ik het beste uitleggen aan de hand van een voorbeeld:
De eerste keer in je programma dat je een waarde toekent aan een specifieke variabele naam, wordt de bijbehorende variabele gecreëerd. Als je later een andere waarde aan dezelfde variabele toekent, wordt de eerste waarde “overschreven.” In de metafoor van de doos: je maakt de doos leeg en stopt er iets nieuws in. Een variabele bevat altijd de laatst-verkregen waarde.
Als een variabele is aangemaakt (en dus een waarde heeft) kun je hem overal in je code gebruiken waar je waardes gebruikt. Je kunt bijvoorbeeld de variabele gebruiken in een berekening.
Je kunt de inhoud van een variabele kopiëren in een andere variabele, via de assignment operator.
Als je een waarde toekent aan een variabele, mag je zelfs de variabele zelf gebruiken aan de rechterkant van de toekenning, zolang de variabele maar bestaat op het moment dat je dat doet. De rechterkant van een toekenning wordt altijd geheel geëvalueerd voordat de toekenning plaatsvindt.
Merk op dat de variabele eerst moet declareren (aanmaken) voordat je hem kunt gebruiken. De volgende code geeft een fout, omdat dagen_per_jaar nog niet gedeclareerd is voordat hij gebruikt wordt in de eerste regel:
Opgave 4.1 Variabelen toekennen
Klik hier voor de uitwerking.Waarden van variabelen traceren
Python voert de eerste regel uit, dan de tweede regel, en zo voort totdat de laatste regel is uitgevoerd.
Opgave 4.1b Waarden van variabelen traceren
Klik hier voor de uitwerking.We gebruikten hierboven voor het eerst de operator plus (+), waardoor twee getallen worden opgeteld. Er zijn ook operatoren voor aftrekken (-), vermenigvuldigen (*), en delen (/). Daar komen we later op terug.
Opgave 4.1.1 Waarden van variabelen nalopen.
Klik hier voor de uitwerking.Trace tabel
Je kunt het geheugen van een computer nabootsen met potlood en papier, door de opgeslagen waarden bij te houden in een tabel. Hier volgt een voorbeeld; denk eraan dat * in Python vermenigvuldigen betekent.
getal1 = 2 getal2 = 3 getal3 = getal1 * getal2 getal2 = getal3 - getal1 getal1 = getal1 + getal2 + getal3 getal3 = getal2 * getal1
Antwoord:
| Waarde nadat de opdracht is uitgevoerd | |||
|---|---|---|---|
getal1 |
getal2 |
getal3 |
|
getal1 = 2 |
2 |
||
| getal2 = 3 | 2 | 3 | |
Opdracht
getal1 getal2 getal3
getal1 = 2 2
getal2 = 3 2 3
getal3 = getal1 * getal2 2 3 6
getal2 = getal3 - getal1 2 4 6
getal1 = getal1 + getal2 + getal3 12 4 6
getal3 = getal2 * getal1 12 4 48
Dus aan het einde van het programma is de waarde van getal1 gelijk aan 12, de waarde van getal2 gelijk aan 4, en de waarde van getal3 gelijk aan 48.
Opgave 4.1.2 Waarden van variabelen traceren
Klik hier voor de uitwerking.Debuggen met variabelen
Een veelvoorkomende oorzaak van functionele fouten in programma’s is dat variabelen blijken niet de waardes te bevatten waarvan je dacht dat ze bevatten. Een goede manier om je code te "debuggen" (dat wil zeggen, uit te vinden waar in je code fouten staan en die te verbeteren) is het printen van variabelen op handige plaatsen in je code. Bijvoorbeeld, de volgende code geeft een foutmelding op regel 11 als je hem uitvoert.
Misschien zie je wat het probleem is, maar stel dat je het niet ziet, hoe vind je dan uit wat er mis is? Je ziet dat de fout ontdekt wordt op regel 10, wat wil zeggen dat alles nog steeds werkte op regel 9. Als je een extra regel code zet tussen regel 9 en 10, die de waarde afdrukt van getal1, getal2, getal3 en misschien ook getal1 % getal2, dan ontdek je waarschijnlijk snel wat er misloopt. print() statements veranderen niks aan de variabelen, dus je kunt ze veilig toevoegen.
Opgave 4.3 Debuggen
Klik hier voor de uitwerking.Soft typing
Alle variabelen hebben een data type. In Python geef je niet een vast type aan een variabele, maar de variabele heeft wel een type, namelijk het type van de waarde die erin is opgeslagen. Dit betekent dat als een variabele een nieuwe waarde krijgt, het type ook kan veranderen. Dit wordt “soft typing” genoemd.
De data types die je tot nu toe gezien hebt zijn integer, float, en string. Je kunt het data type van een waarde of variabele zien met behulp van de functie type().
Omdat variabelen een type hebben, past het effect van operatoren die tussen variabelen staan zich aan aan de types van de variabelen. Bijvoorbeeld, in de code hieronder wordt de optelling (+) twee keer gebruikt, en het effect verandert naar gelang de variabele types.
Omdat a en b beide getallen zijn, is de + in a + b de numerieke optelling. Omdat c en d beide strings zijn, is de + in c + d de “concatenatie” (“vastplak”) operator.
Opgave 4.4a String afdrukken
Klik hier voor de uitwerking.Opgave 4.4b Beste school afdrukken
Klik hier voor de uitwerking.Verkorte operatoren
Middels de operatoren die ik heb uitgelegd, kun je de inhoud van variabelen zo vaak wijzigen in je code als je nodig hebt. Je kunt nieuwe waardes in bestaande variabelen stoppen. Vaak wil je dat inderdaad doen. Bijvoorbeeld, het komt in code vaak voor dat er 1 moet worden opgeteld bij een numerieke variabele (waarom dat zo vaak voorkomt zul je zien in hoofdstuk 7). Omdat dit zo vaak gebeurt, bevat Python een aantal “ verkorte notaties” om de inhoud van variabelen aan te passen.
De volgende code:
aantal_bananen = 100 aantal_bananen = aantal_bananen + 1 # aantal_bananen ophogen met één print( aantal_bananen )
is hetzelfde als:
aantal_bananen = 100 aantal_bananen += 1 # aantal_bananen ophogen met één print( aantal_bananen )
Het verschil is de tweede regel. Als je iets wilt optellen bij een variabele, kun je += gebruiken als assignment operator, met de variabele aan de linkerkant en wat je erbij op wilt tellen aan de rechterkant. Dit bespaart de moeite van het twee keer typen van de variabele naam, en maakt je code over het algemeen leesbaarder (omdat programmeurs ervan uitgaan dat je de += operator gebruikt als je ergens iets bij wilt optellen).
Op vergelijkbare manier kun je -= gebruiken om iets af te trekken van een variabele, *= voor vermenigvuldiging, /= voor deling, **= voor machtsverheffing, etcetera. De meeste verkorte versies worden weinig gebruikt, behalve +=, die juist heel veel gebruikt wordt, en -=, die zo nu en dan gebruikt wordt.
Opgave 4.5a Verkorte operatoren
Klik hier voor de uitwerking.Opgave 4.5b Waarde ophogen
Klik hier voor de uitwerking.Commentaar (herhaling)
Commentaarregels zijn teksten in code die Python negeert tijdens de uitvoering, maar die bedoeld zijn om specifieke delen van de code uit te leggen. Commentaar is niet alleen van nut voor andere mensen die je code moeten bestuderen en/of wijzigen, maar ook voor jezelf, aangezien je soms je eigen code moet wijzigen weken of maanden nadat je de code oorspronkelijk geschreven hebt, en je niet meer precies weet wat je gedaan hebt.
Er zijn twee manieren om commentaar op te nemen in Python code.
De eerste manier is door gebruik te maken van een hekje (#), die aangeeft dat alles dat op dezelfde regel code rechts van de markering staat, commentaar is (mits het hekje niet in een string staat).
#Commentaar: schrijf je code hier... #Valt het je op dat alles rechts van de #commentaar is? print( "Iets..." ) #Commmentaar wordt door Python genegeerd print( "en iets anders.." ) #Geef zo commentaar op je code!
Wil je in Python meerdere regels code in één keer in commentaar zetten? Selecteer de regels en druk gelijktijdig op Ctrl en /.
De tweede manier is door een stuk commentaar tekst, dat meerdere regels mag beslaan, vooraf te gaan door drie aanhalingstekens (dubbel of enkel), en dezelfde markering aan het einde van de tekst te zetten. In dit geval moet je de drievoudige aanhalingstekens aan het begin ook aan het begin van een regel zetten, en je kunt deze manier van commentaar geven niet gebruiken in een blok code dat inspringt. De reden is dat je feitelijk een string die uit meerdere regels bestaat in je code plaatst (meer hierover in hoofdstuk 10).
Opgave 4.6 Commentaar toevoegen
Klik hier voor de uitwerking.Wat je geleerd hebt over variabelen
In dit hoofdstuk is het volgende besproken:
- Wat variabelen zijn
- Het toekennen van een waarde aan een variabele
- Correcte namen voor variabelen
- Conventies met betrekking tot variabele namen
- Soft typing
- Het debuggen van code waarin variabelen onverwachte waardes hebben
- Verkorte operatoren
- Commentaar
Verder naar de Afsluitende Opgaven over Variabelen
Terug naar de cursus pagina