Beetje Coderen

Les 1 · Module 1 · Fundament (alleen Python)

Waarden en variabelen

Je eerste Python-programma: waarden opslaan in variabelen, ze aanpassen en op het scherm zetten. Je leert wat er echt gebeurt als je = typt.

⏱ 60 minuten leestijd + oefenen

Drie dozen met labels naam, leeftijd en lengte, met daarin de waarden 'Sam', 17 en 1.82

🎯 Na deze les kun je

  • uitleggen wat een waarde en een variabele zijn
  • een variabele maken, gebruiken en een nieuwe waarde geven
  • het verschil zien tussen tekst (str) en getallen (int, float)
  • met print() resultaten op het scherm zetten
  • een veelgemaakte fout herkennen: een variabele gebruiken voordat hij bestaat

Een programma doet eigenlijk maar een paar dingen: het onthoudt gegevens, rekent ermee en laat iets zien. In deze les begin je bij het eerste: onthouden. Daarvoor gebruik je variabelen (variables).

We werken de hele eerste module in Python. Python leest bijna als Engels, heeft weinig leestekens en geeft duidelijke foutmeldingen. Zo kun je je concentreren op het idee in plaats van op puntkomma's.

Je eerste regel code

Open de labomgeving (zie het lab onderaan) of de Python-console en typ:

print("Hallo, wereld!")

Uitvoer:

Hallo, wereld!

print is een functie: een stukje gereedschap dat Python al kent. Wat tussen de haakjes staat, zet print op het scherm. De aanhalingstekens vertellen Python: dit is tekst, geen opdracht.

Waarden

Een waarde (value) is een stukje gegeven. Python kent onder andere deze soorten, typen (types) genoemd:

Voorbeeld Type Betekenis
"Sam" str tekst (string)
17 int geheel getal (integer)
1.82 float kommagetal — let op: met een punt
True / False bool waar of niet waar

Je kunt het type van een waarde opvragen met type():

print(type(17))       # <class 'int'>
print(type("17"))     # <class 'str'>

Alles achter een # is commentaar: Python slaat het over. Het is een notitie voor mensen.

17 en "17" zijn niet hetzelfde. De eerste is een getal waarmee je kunt rekenen, de tweede is tekst die er toevallig uitziet als een getal. 17 + 1 geeft 18, maar "17" + 1 geeft een fout.

Variabelen: een naam voor een waarde

Een variabele is een naam die naar een waarde verwijst. Je maakt er een met =:

naam = "Sam"
leeftijd = 17
print(naam)
print(leeftijd)

Lees = niet als "is gelijk aan", maar als "krijgt de waarde": leeftijd krijgt de waarde 17. Python rekent eerst alles rechts van = uit en plakt daarna het label links op het resultaat.

Daarom mag dit:

leeftijd = 17
leeftijd = leeftijd + 1
print(leeftijd)       # 18

In de wiskunde is x = x + 1 onzin. In code betekent het: neem de huidige waarde, tel er 1 bij op en bewaar het resultaat onder dezelfde naam.

Uitgewerkt voorbeeld: een fooi berekenen

Lees dit voorbeeld regel voor regel en voorspel de uitvoer voordat je verder leest.

bedrag = 42.50
fooi_procent = 10
fooi = bedrag * fooi_procent / 100
totaal = bedrag + fooi
print("Fooi:", fooi)
print("Totaal:", totaal)
Fooi: 4.25
Totaal: 46.75

Wat gebeurt er?

  1. bedrag krijgt 42.5 (een float).
  2. fooi_procent krijgt 10 (een int).
  3. Python rekent 42.5 * 10 / 100 uit en bewaart 4.25 als fooi.
  4. totaal wordt 42.5 + 4.25.
  5. print mag meerdere waarden krijgen, gescheiden door komma's; hij zet er een spatie tussen.

Goede namen besparen uitleg. fooi_procent vertelt meer dan fp of x. In Python schrijf je namen in kleine letters met underscores: snake_case.

Tekst en getallen combineren

Wil je tekst en een getal in één zin, dan is een f-string het handigst. Zet een f voor de aanhalingstekens en de variabele tussen accolades:

naam = "Sam"
leeftijd = 17
print(f"{naam} is {leeftijd} jaar.")
print(f"Volgend jaar is {naam} {leeftijd + 1}.")
Sam is 17 jaar.
Volgend jaar is Sam 18.

Bedragen netjes met twee decimalen? Gebruik :.2f:

totaal = 46.75
print(f"Te betalen: € {totaal:.2f}")

Foutmeldingen lezen

Fouten maken hoort erbij. Het belangrijkste is dat je de melding leest. Probeer dit:

print(prijs)
NameError: name 'prijs' is not defined

Python zegt precies wat er mis is: de naam prijs bestaat (nog) niet. Python leest van boven naar beneden; een variabele moet een waarde hebben gekregen voordat je hem gebruikt. Andere klassiekers:

Melding Meestal betekent het
NameError tikfout in een naam, of de variabele is nog niet gemaakt
TypeError: can only concatenate str (not "int") to str je plakt tekst en een getal aan elkaar met + → gebruik een f-string
SyntaxError een haakje of aanhalingsteken mist

Oefenen

Doe deze kleine oefeningen in de console voordat je aan het lab begint. Schrijf eerst op wat je verwacht, voer dan uit.

  1. a = 5, b = a, a = 8. Wat is nu b? Waarom?
  2. Maak variabelen breedte en hoogte voor een kamer van 4,5 bij 3 meter en print de oppervlakte.
  3. Wat print print("3" * 3)? En print(3 * 3)?
Modelantwoord oefening 1

b is nog steeds 5. Bij b = a kreeg b de waarde die a op dat moment had. Als a later een nieuwe waarde krijgt, verandert b niet mee.

Lab: de kassabon

  1. Start het lab (live in de browser, of lokaal: docker run -it registry.wizg.it/webhosting/beetje-labs:concepten-les1).

  2. Maak een bestand kassabon.py.

  3. Maak drie variabelen voor producten met een prijs: brood = 2.89, kaas = 6.45, melk = 1.19.

  4. Bereken subtotaal, daarna btw (9% van het subtotaal) en totaal.

  5. Print een bon die er precies zo uitziet:

    Subtotaal: € 10.53
    Btw 9%:    € 0.95
    Totaal:    € 11.48
    
  6. Voer het uit met python3 kassabon.py en controleer met beetje check concepten-les1.

Samenvatting

  • Een waarde is een stukje gegeven met een type: str, int, float, bool.
  • Een variabele is een naam voor een waarde. = betekent krijgt de waarde.
  • Rechts van = wordt eerst uitgerekend; daarna krijgt de naam links het resultaat.
  • print() zet waarden op het scherm; met een f-string combineer je tekst en variabelen.
  • Lees foutmeldingen: de laatste regel vertelt meestal precies wat er mis is.

In les 2 laat je je programma praten met de gebruiker: invoer vragen met input() en tekst omzetten naar getallen.

Lab

De kassabon

Schrijf kassabon.py in je labomgeving: live in de browser (bèta) of lokaal in Docker.

🔒 Het live lab hoort bij de volledige cursus. Met één aankoop (€ 29,00, eenmalig) krijg je alle lessen, de live labs en het certificaat. Geen abonnement. Je kunt dit lab altijd gratis lokaal met Docker doen.

Cursus kopen en verdergaan

Klaar? Controleer je werk met:

$ beetje check concepten-les1

📝 Quiz: waarden en variabelen

5 vragen · 70% nodig om te slagen

1. Hoe lees je de regel `score = score + 5` het best?
2. Welk type heeft de waarde `"42"`?
3. Na `a = 3`, `b = a`, `a = 10`: wat is de waarde van b?
4. Je krijgt `NameError: name 'totaal' is not defined`. Wat is de meest waarschijnlijke oorzaak?
5. Welke regel print `Totaal: € 7.50` als `totaal = 7.5`?