Hoofdstuk 2 - Variabelen & datatypes

01 - Variabelen
  • Variabelen zijn bouwstenen voor het programmeren
  • Je kunt zelf variabelen maken en een naam geven
  • Een variabele is een container waar je zelf iets in kunt doen
  • Eén variabele kan één cijfer of een tekst bevatten of een lijst met meerdere cijfers of teksten
  • De waarde van een variabele kan tijdens het verloop van het programma veranderen
my_number = 12
text_3 = "Hello World"
  • Variabele namen mogen alleen letters, getallen en liggende streepjes bevatten
  • Variabele namen mogen niet met een getal beginnen
  • Spaties mogen niet gebruikt worden (gebruik dan under_scores)
  • Gebruik geen keywords en functienamen als naam voor je variabelen (zoals de 'print' functie)
  • De variabele namen moeten kort en duidelijk zijn
  • Variabele namen zijn hoofdlettergevoelig
  • Het is een goede gewoonte om variabelen met kleine letters te schrijven
  • Pas op met de kleine letter l en het cijfer één - l 1
  • Pas op met de hoofdletter o en het cijfer nul - O 0
  • In deze cursus is gekozen voor uitsluitend Engelse namen voor variabelen

  • Gebruik een variabele en de print-functie om een tekst te printen
message = "Hello Python world"
print(message)

Hello Python world

  • Gebruik nog een variabele en de print-functie om een tweede tekst erbij te printen
message_1 = "Hello Python world"
message_2 = "Hello \"Real\" world"
print(message_1)
print(message_2)

Hello Python world
Hello "Real" world

02 - Het datatype: String
print("Dit is een string met wat @#$€çå rare tekens en wat cijfers 3210 !")
  • Een string is een reeks tekens
  • Een productcode samengesteld met cijfers en letters is een string
  • In Python wordt een string geschreven tussen aanhalingstekens
  • Alles tussen aanhalingstekens wordt beschouwd als een string
  • Met een string kun je geen wiskundige berekeningen doen
  • Je kunt enkele of dubbele aanhalingstekens gebruiken voor het maken van een string

Met een "methode" kun je een string aanpassen. Zo kun je bijvoorbeeld een string met kleine letters met een methode omzetten naar hoofdletters.

name = "Just a string about strings"
print(name.title())
Just A String About Strings

MethodeResultaat
name.title()Just A String About Strings
name.upper()JUST A STRING ABOUT STRINGS
name.lower()just a string about strings
name.count("string")2
name.split(" ")['Just', 'a', 'string', 'about', 'strings']

De methode .count() telt hoe vaak iets voorkomt in de variabele. De methode .split() zet de string om in een lijst (array). Meer over lijsten in hoofdstuk 3.



03 - Strings samenvoegen (Concatenation)
  • Python gebruikt het + teken om strings samen te voegen
  • Het samenvoegen van strings heet "to concatenate".
  • Als je twee variabelen met strings wilt samenvoegen, kun je het resultaat opslaan in een derde variabele
first_name = "Hans"
last_name = "Kazan"
full_name = first_name + " " + last_name
print(full_name)
Hans Kazan

  • Het samenvoegen van twee strings + twee methoden om de strings te bewerken + de print-functie om ze te tonen
text_01 = "Hans Kazan"
text_02 = "kan toveren"
text_03 = text_01 + " " + text_02 + "!" 
print(text_03.lower())
print(text_03.upper())
hans kazan kan toveren!
HANS KAZAN KAN TOVEREN!

04 - Escaping strings en witruimte
  • Bij het programmeren verwijzen witruimtes naar alle lege tekens, zoals spaties, tabs en enters
  • Onderstaande tekens kunnen helpen bij het makkelijker leesbaar maken van het resultaat
KaraktersEffect
\nplaatst een enter (newline)
\tplaatst een tab
\"plaatst een dubbele quote

Er zijn meer Python Escape Characters. Enkele worden ook gebruikt bij reguliere expressies.


  • Zo wordt de tekst netjes onder elkaar weergegeven.
print("Meest gebruikte programmeertalen:\n1.\tPython\n2.\tC\n3.\tJava")
Meest gebruikte programmeertalen:
1.  Python
2.  C
3.  Java

  • Bij het vergelijken van twee strings is er een verschil tussen 'Python' en 'Python '
  • Strings vergelijken kan belangrijk zijn bij het controleren van gebruikersnamen tijdens het inloggen
  • De volgende methoden kunnen helpen bij het verwijderen van witruimte
MethodeEffect
.rstrip()Haalt rechts van een string alle witruimte weg
.lstrip()Haalt links van een string alle witruimte weg
.strip()Haalt zowel rechts als links alle witruimte weg

  • De eerste twee variabelen blijven ongewijzigd
  • Een nieuwe derde variabele voegt de eerste twee samen en stript ze
text_01 = "  De meest populaire programmeer   "
text_02 = "    taal is Python    "
text_03 = text_01.strip() + text_02.strip()
print(text_03)
De meest populaire programmeertaal is Python

  • Bij het programmeren worden variabelen vaak tijdens het programmaverloop gewijzigd
text_01 = "  De meest populaire programmeer   "
text_02 = "    taal is Python    "
text_01 = text_01.strip()
text_02 = text_02.strip()
print(text_01 + text_02)
De meest populaire programmeertaal is Python
05 - Het datatype: Integer
  • Gehele getallen noemen we een integer (afgekort int.)
  • Met integers kun je berekeningen uitvoeren
  • Spaties in onderstaande voorbeelden hebben geen effect op de berekening
print(2 + 3)
number_01 = 16
number_02 = 10
print(number_01 - number_02)
number_03 = 1
print(number_03 * 7)
5
6
7
  • De voorrangsregels van hoe Python een som oplost noemen we Order of Operations
  • De Order of Operations kun je onthouden met BODMAS
  • De onderstaande tabel laat de juiste volgorde zien
VolgordeNederlandsEngelsPython
1HaakjesBrackets()
2Machtsverheffen / WorteltrekkenPowers / Roots**    sqrt(x)
3Vermenigvuldigen / DelenMultiply / Divide*    /
4Optellen / AftrekkenAdd / Subtract+    -

De verouderde regel "Meneer van Dalen wacht op antwoord" is sinds de jaren '80 van de vorige eeuw niet meer correct. Tegenwoordig leert men "Hoe moeten wij van de onvoldoende af komen". Bij de nieuwe regel is de volgorde anders.


Machtsverheffen en worteltrekken
  • Het kwadraat (van Latijn: quadratus = vierkant) van een getal is de tweede macht van een getal - x2
  • Het kwadraat wordt verkregen door het getal met zichzelf te vermenigvuldigen
  • In het Engels is kwadraat - squared
  • Voor machtsverheffen gebruikt Python de operator **
  • Het kwadraat van 4 betekent 4 x 4
number = 4**2
print(number)
16

  • Het tegenovergestelde van machtsverheffen is worteltrekken - √x
  • Bij worteltrekken zoek je welk getal zichzelf moet vermenigvuldigen om het oorspronkelijke getal te vormen.
  • Voor het worteltrekken heeft Python geen aparte operator. Hiervoor is een functie nodig
  • Om de functie sqrt() te gebruiken moet eerst de module math geïmporteerd worden
  • sqrt() komt van Square Root en dat is hetzelfde als vierkantswortel / tweedemachtswortel / kwadraatwortel of gewoon eenvoudig 'wortel'.
import math
print(math.sqrt(49))
7.0

  • Als we nog een stap verder gaan...
  • Als je een getal drie keer met zichzelf vermenigvuldigt, heb je de derde macht van een getal - x3
  • In het Engels heet dit “cubed” (kubus)
  • Python gebruikt hiervoor ook de ** operator
number = 3**3
print(number)
27

3 × 3 × 3 = 27


  • Het tegenovergestelde van een derdemacht is de kubuswortel
  • Voor een derdemachtswortel (kubuswortel - cube root) gebruik je de machts-operator ** met exponent 1/3
number = 64
cube_root = number ** (1/3)
print(cube_root)
4.0

4 × 4 × 4 = 64 -> Dus de kubuswortel van 64 is 4
Door afrondfouten in floats is het resultaat niet altijd precies 4
Als je wilt afronden gebruik dan de functie round() - cube_root = round(number ** (1/3))
4**2 = integer → integer = 16
math.sqrt(49) = float → float = 7.0 (zie voldende item)


BewerkingSymboolBetekenisGebruik in praktijk
Kwadraatx**2getal × zichzelf70%
Vierkantswortelmath.sqrt(x)getal waarvan het kwadraat x is25%
Kubus / derde machtx**3getal × zichzelf × zichzelf4%
Kubuswortelx**(1/3)getal waarvan de derde macht x is1%

Waarom zou je in Python het kwadraat nodig hebben?

  • Afstand berekenen tussen twee punten (bijv. games: afstandsformule gebaseerd op de stelling van Pythagoras)
  • Berekenen van kinetische energie in de natuurkunde (formule: E = 0.5 × m × v2)
  • Oppervlakte berekenen (bijv. het oppervlak van een vierkant = zijde2)
  • Licht, geluid en straling nemen af met het kwadraat van de afstand (inverse-square law)
  • Cirkelberekeningen (oppervlakte van een cirkel = π × r2)
  • Geluidsgolven & audiosynthese (pitch-shifting, filters en modulatie gebruiken vaak kwadratische functies)
  • Computer graphics en animaties gebruiken kwadratische functies voor vloeiende bewegingen (easing curves)
  • Statistiek en data-analyse (variantie en standaardafwijking gebruiken afwijkingen die gekwadrateerd worden)

  • Nu de volgorde van de wiskundige operators bekend is zal de uitkomst van onderstaande som logisch zijn
print(16+8/2*12-44/2)
42.0

06 - Het datatype: Float
  • Python noemt elk getal met een decimale komma een float
  • Let op: in de code wordt er een punt gebruikt voor decimalen
  • Soms krijg je bij een berekening veel decimalen, daar besteden we later aandacht aan
number = (0.1 + 0.1) ** 5
print(number)
0.0003200000000000001
07 - De functie: str( )
  • In een print-statement met strings verwacht Python geen integers
  • Geef je een integer op in een print-statement met strings dan krijg je een foutmelding (TypeError)
  • Wil je toch een integer in een print-statement met strings plaatsen, gebruik dan de str( )-functie
number = 18
print("Nummer " + number + " is een mooi getal")
TypeError: can only concatenate str (not "int") to str

number = 18
print("Nummer " + str(number) + " is een mooi getal")
Nummer 18 is een mooi getal
08 - Commentaar in de code
  • Met commentaar kun je notities toevoegen in je programmacode
  • In Python markeer je een regel commentaar met een hekje ( # )
  • Alles wat in Python op een regel achter # staat, wordt genegeerd
  • Het schrijven van duidelijke, beknopte opmerkingen is zeer nuttig
# Leer jezelf aan om zinvol commentaar toe te voegen in de code
print("Commentaar kan helpen bij het begrijpen van de code")
print("Commentaar kan helpen bij het navigeren door de code")
print("Teamleden zullen dankbaar gebruik maken van je commentaar") 
Commentaar kan helpen bij het begrijpen van de code
Commentaar kan helpen bij het navigeren door de code
Teamleden zullen dankbaar gebruik maken van je commentaar

  • Python heeft geen karakter-combinatie voor meerdere regels commentaar
  • Als je meerdere regels commentaar wilt kun je het beste elke regel beginnen met een #
  • Als je een string los in de code plaatst en dus niet toewijst aan een variabele zal Python het negeren
  • Om een string van meerdere regels te maken, gebruik je drie x de aanhalingstekens
number = 10
""" Deze string van meerdere regels zal door de Python
interpreter genegeerd worden. Het is een truc om meerdere 
regels commentaar te plaatsen in de code en geen 
foutmeldingen te genereren."""
print(number)
10

  • De filosofie van de Python gemeenschap is verwoord in "The Zen of Python" van Tim Peters
  • Je kunt deze korte reeks van principes zien door de volgende code uit te voeren
import this
Oefening
Quiz

Vraag 1. Welke variabelenaam is niet geldig in Python?




Goed! Variabelen mogen niet met een cijfer beginnen.
Niet helemaal. In Python mag een variabelenaam niet met een cijfer starten.

Vraag 2. Welke van deze zijn geldige manieren om strings samen te voegen?




Goed! Je mag strings met + aan elkaar plakken, maar niet met * of int + string.
Niet helemaal. Alleen de combinaties met + tussen strings zijn geldig.

Vraag 3. Je hebt de variabele:

name = "python basics"

Welke code print precies Python Basics op het scherm?




Goed! Met .title() wordt elk woord met een hoofdletter gestart.
Niet helemaal. .upper() maakt alles hoofdletters, .lower() alles klein. Alleen .title() geeft Python Basics.

Vraag 4. Je hebt:

text = "   Python  "

Welke methode zorgt ervoor dat text verandert in precies "Python" (zonder spaties aan het begin of einde)?




Klopt. .strip() haalt witruimte weg links én rechts.
Let op. .lstrip() pakt alleen links, .rstrip() alleen rechts. .strip() doet beide kanten.

Vraag 5. Welke regel geeft géén foutmelding en print:

Nummer 18 is een mooi getal

number = 18



Goed gezien! Je moet de int eerst omzetten naar str met str(number) voordat je kunt samenvoegen.
Hier gaat het mis. Je kunt geen int direct met een str plakken. Gebruik str(number) om het getal om te zetten.

Vraag 6. Welke waarde is een float in Python?




Yes! Elke waarde met een decimaal punt, zoals 3.0, is een float.
Niet juist. 3 is een int, "3" is een str. Alleen 3.0 is een float.

Vraag 7. Welke van de onderstaande regels bevat commentaar?




Goed! Regels met # én een losstaande meerregelige string zonder variabele worden genegeerd door de interpreter.
Let op. Alleen regels met # en een losstaande meerregelige string worden hier als commentaar gebruikt. Een normale string in de code is géén commentaar.

Vraag 8. Wat print deze code?

print(16 + 8 / 2 * 12 - 44 / 2)



Precies. Door de volgorde van bewerkingen (delen en vermenigvuldigen vóór optellen en aftrekken) wordt dit 42.0.
Niet goed. Denk aan de volgorde: eerst delen/vermenigvuldigen, dan optellen/aftrekken.

Vraag 9. Welke string zorgt ervoor dat - Hans "Kazan" - correct wordt afgedrukt, inclusief de dubbele quotes rond Kazan?




Klopt. Met \" (of in de string: \\") escape je de dubbele quotes binnen een string met dubbele quotes.
Let op. Binnen een string met dubbele quotes moet je de " escapen met \\", anders denkt Python dat de string daar eindigt.

Vraag 10. Wat print deze code?

age = 18
AGE = 21
print(age)



Goed! Variabelen in Python zijn hoofdlettergevoelig: age en AGE zijn twee verschillende variabelen.
Hier gaat het mis. age en AGE zijn niet hetzelfde. Python ziet hoofdletters en kleine letters als verschillende namen.