Python oefenportaal

Scripts oefenen met duidelijke voorbeelden

Een rustige leeromgeving met Python-voorbeelden, CSV-oefeningen, bestandscontrole, foutafhandeling en examenachtige scripts voor VS Code.

Python EssentialsCSVFoutafhandelingScriptcontrole

Overzicht

Python Essentials overzicht

Deze pagina bevat veel voorbeelden rond onderwerpen die je vaak tegenkomt bij Python Essentials: variabelen, datatypes, beslissingen, loops, functies, lijsten, bestanden, CSV, modules en objectgericht programmeren.

Handige check Script starten Input lezen Output controleren

Python Essentials 1

Module 2 — Data, variabelen en input

Hello world

print("Hallo wereld!")

Controleer of Python werkt en tekst kan tonen.

Variabelen

naam = "Student"
leeftijd = 17
print(naam, leeftijd)

Bewaar informatie onder een duidelijke naam.

Datatypes bekijken

waarde = 3.14
print(type(waarde))

Bekijk of iets een string, integer, float of boolean is.

String combineren

voornaam = "Alex"
achternaam = "Jansen"
print(voornaam + " " + achternaam)

Plak tekst aan elkaar met de plus-operator.

f-string

product = "laptop"
prijs = 799
print(f"De {product} kost €{prijs}")

Een nette manier om variabelen in tekst te zetten.

Input vragen

naam = input("Wat is je naam? ")
print("Welkom", naam)

Laat de gebruiker zelf iets typen.

Input naar getal

leeftijd = int(input("Leeftijd: "))
print(leeftijd + 1)

Input is standaard tekst, dus soms moet je converteren.

Rekenen

a = 10
b = 3
print(a + b)
print(a / b)
print(a // b)
print(a % b)

Gebruik operators voor optellen, delen, hele deling en rest.

Afronden

prijs = 19.987
print(round(prijs, 2))

Rond kommagetallen netjes af.

Boolean

ingelogd = True
print(ingelogd)

Een boolean is waar of niet waar.

Commentaar

# Dit is uitleg bij de code
print("Code wordt uitgevoerd")

Commentaar helpt om je code begrijpelijk te maken.

Constante naam

BTW_PERCENTAGE = 21
bedrag = 100
print(bedrag * BTW_PERCENTAGE / 100)

Hoofdletters gebruik je vaak voor vaste waarden.

Python Essentials 1

Module 3 — Beslissingen en loops

If statement

cijfer = 7
if cijfer >= 5.5:
    print("Voldoende")
else:
    print("Onvoldoende")

Laat Python een keuze maken.

Elif

score = 82
if score >= 90:
    print("Uitstekend")
elif score >= 70:
    print("Goed")
else:
    print("Oefenen")

Gebruik elif voor meerdere mogelijkheden.

And

leeftijd = 18
pas = True
if leeftijd >= 18 and pas:
    print("Toegang")

Beide voorwaarden moeten kloppen.

Or

admin = False
docent = True
if admin or docent:
    print("Mag openen")

Eén van de voorwaarden moet kloppen.

For loop

for nummer in range(1, 6):
    print(nummer)

Herhaal code een vast aantal keer.

While loop

pogingen = 0
while pogingen < 3:
    print("Probeer opnieuw")
    pogingen += 1

Herhaal zolang een voorwaarde waar is.

Break

for getal in range(10):
    if getal == 5:
        break
    print(getal)

Stop een loop eerder.

Continue

for getal in range(6):
    if getal == 3:
        continue
    print(getal)

Sla één ronde over en ga verder.

Geneste loop

for rij in range(3):
    for kolom in range(3):
        print(rij, kolom)

Een loop binnen een loop.

In lijst zoeken

vakken = ["Python", "Linux", "Netwerk"]
if "Python" in vakken:
    print("Gevonden")

Controleer of een waarde in een lijst zit.

Menu maken

keuze = input("1 = start, 2 = stop: ")
if keuze == "1":
    print("Starten")
elif keuze == "2":
    print("Stoppen")

Een eenvoudige basis voor consolemenu's.

Wachtwoord check

wachtwoord = input("Wachtwoord: ")
if len(wachtwoord) >= 8:
    print("Sterk genoeg")
else:
    print("Te kort")

Gebruik voorwaarden om invoer te controleren.

Python Essentials 1

Module 4 — Functies, collecties en fouten

Functie

def tel_op(a, b):
    return a + b

print(tel_op(4, 6))

Maak code herbruikbaar met functies.

Parameter standaardwaarde

def groet(naam="bezoeker"):
    print("Hallo", naam)

groet()

Gebruik een standaard als er niets wordt meegegeven.

Lijst

vakken = ["Python", "Web", "Data"]
print(vakken[0])

Bewaar meerdere waarden in één variabele.

Lijst uitbreiden

taken = []
taken.append("opdracht maken")
taken.append("testen")
print(taken)

Voeg items toe aan een lijst.

Dictionary

student = {"naam": "Alex", "klas": "ICT"}
print(student["klas"])

Bewaar gegevens met duidelijke sleutels.

Tuple

positie = (52.0, 4.3)
print(positie[0])

Een tuple is handig voor vaste waarden.

Set

nummers = {1, 2, 2, 3}
print(nummers)

Een set bewaart unieke waarden.

Try except

try:
    getal = int(input("Getal: "))
    print(10 / getal)
except ZeroDivisionError:
    print("Niet delen door nul")
except ValueError:
    print("Typ een geldig getal")

Vang fouten netjes op.

Bestand schrijven

with open("notities.txt", "w") as bestand:
    bestand.write("Mijn eerste bestand")

Maak een tekstbestand aan.

Bestand lezen

with open("notities.txt", "r") as bestand:
    inhoud = bestand.read()
print(inhoud)

Lees tekst uit een bestand.

Pathlib

from pathlib import Path

for bestand in Path(".").iterdir():
    print(bestand.name)

Werk overzichtelijk met bestanden en mappen.

Eigen module importeren

# bestand: helpers.py
# def dubbel(x): return x * 2

from helpers import dubbel
print(dubbel(5))

Verdeel code over meerdere bestanden.

Python Essentials 2

Verdieping — modules, OOP en bestanden

List comprehension

kwadraten = [x * x for x in range(1, 6)]
print(kwadraten)

Maak snel een nieuwe lijst.

Lambda

verdubbel = lambda x: x * 2
print(verdubbel(8))

Korte functie voor simpele bewerkingen.

Sorteren met key

personen = [{"naam": "A", "score": 8}, {"naam": "B", "score": 6}]
personen.sort(key=lambda p: p["score"], reverse=True)
print(personen)

Sorteer op een veld in een dictionary.

Class

class Product:
    def __init__(self, naam, prijs):
        self.naam = naam
        self.prijs = prijs

item = Product("muis", 25)
print(item.naam)

Maak eigen objecten met eigenschappen.

Method

class Rekening:
    def __init__(self):
        self.saldo = 0

    def stort(self, bedrag):
        self.saldo += bedrag

Een method is een functie binnen een class.

Inheritance

class Dier:
    def geluid(self):
        print("geluid")

class Hond(Dier):
    pass

Hond().geluid()

Een class kan gedrag erven van een andere class.

Datetime

from datetime import datetime

nu = datetime.now()
print(nu.strftime("%d-%m-%Y %H:%M"))

Werk met datum en tijd.

JSON lezen

import json

with open("config.json") as bestand:
    data = json.load(bestand)
print(data)

JSON wordt veel gebruikt voor instellingen en API's.

JSON schrijven

import json

data = {"theme": "dark", "autosave": True}
with open("config.json", "w") as bestand:
    json.dump(data, bestand, indent=2)

Sla instellingen netjes op.

Requests voorbeeld

import requests

response = requests.get("https://example.com")
print(response.status_code)

Haal gegevens op van een website of API.

Regex

import re

tekst = "Mijn code is AB-123"
match = re.search(r"[A-Z]{2}-\d{3}", tekst)
print(match.group())

Zoek patronen in tekst.

Virtual environment

python -m venv .venv
.venv\Scripts\activate
pip install flask

Houd packages per project gescheiden.

CSV en data

Werken met CSV-bestanden

CSV lezen

import csv

with open("data.csv", newline="") as bestand:
    reader = csv.reader(bestand)
    for rij in reader:
        print(rij)

Lees elke rij uit een CSV-bestand.

CSV met kolomnamen

import csv

with open("personen.csv", newline="") as bestand:
    reader = csv.DictReader(bestand)
    for rij in reader:
        print(rij["naam"])

Gebruik kolomnamen in plaats van indexen.

Gemiddelde berekenen

import csv

totaal = 0
aantal = 0
with open("cijfers.csv", newline="") as bestand:
    reader = csv.DictReader(bestand)
    for rij in reader:
        totaal += float(rij["cijfer"])
        aantal += 1
print(totaal / aantal)

Bereken resultaten uit tabeldata.

CSV schrijven

import csv

with open("output.csv", "w", newline="") as bestand:
    writer = csv.writer(bestand)
    writer.writerow(["naam", "score"])
    writer.writerow(["Student", 8])

Maak zelf een CSV-bestand aan.

CSV filteren

import csv

with open("leden.csv", newline="") as bestand:
    reader = csv.DictReader(bestand)
    for rij in reader:
        if rij["status"] == "actief":
            print(rij)

Toon alleen rijen die voldoen aan een voorwaarde.

CSV naar lijst

import csv

with open("data.csv", newline="") as bestand:
    records = list(csv.DictReader(bestand))
print(records[0])

Bewaar alle rijen om later verder te verwerken.

Praktische scripts

Veelgebruikte scripts voor schoolprojecten

Bestand bestaat controleren

from pathlib import Path

pad = Path("data.csv")
if pad.exists():
    print("Bestand gevonden")
else:
    print("Bestand ontbreekt")

Handig voordat je een bestand probeert te openen.

Map aanmaken

from pathlib import Path

Path("resultaten").mkdir(exist_ok=True)
print("Map is klaar")

Maak automatisch een outputmap aan.

Alle bestanden tonen

from pathlib import Path

for bestand in Path(".").glob("*.csv"):
    print(bestand.name)

Zoek alle CSV-bestanden in een map.

Regels tellen

with open("data.csv", "r", encoding="utf-8") as f:
    regels = f.readlines()

print("Aantal regels:", len(regels))

Controleer snel hoeveel regels een bestand heeft.

Logbestand maken

with open("log.txt", "a", encoding="utf-8") as log:
    log.write("Script succesvol gestart\n")

Bewaar meldingen tijdens het uitvoeren van je script.

Veilig overschrijven

from pathlib import Path

output = Path("output.csv")
if output.exists():
    keuze = input("Overschrijven? y/n ")
    if keuze.lower() != "y":
        quit()

Vraag toestemming voordat je een bestaand bestand vervangt.

Decimal gebruiken

from decimal import Decimal

bedrag = Decimal("120.00")
verschil = Decimal("240.00") - bedrag
print(verschil)

Gebruik Decimal voor geldbedragen in plaats van float.

Kolomindex zoeken

headers = ["id", "naam", "bedrag"]
kolom = headers.index("bedrag")
print(kolom)

Zoek een kolom op naam in een CSV-header.

Debuggen

Fouten zoeken en terminalgebruik

Script starten

py collect.py

Voer een Python-script uit vanuit PowerShell of terminal.

Huidige map bekijken

import os
print(os.getcwd())

Controleer waar Python zoekt naar je bestanden.

Variabele testen

amount = 120
print("DEBUG amount =", amount)

Gebruik tijdelijke printregels om waarden te controleren.

Exception tonen

try:
    open("data.csv")
except Exception as fout:
    print("Foutmelding:", fout)

Laat zien waarom iets niet lukt.

Package installeren

py -m pip install flask

Installeer packages met dezelfde Python-versie als je gebruikt.

Requirements maken

py -m pip freeze > requirements.txt

Sla geïnstalleerde modules op voor je project.

Python-versie checken

py --version
python --version

Controleer welke Python op je computer beschikbaar is.

Stoppen bij fout

if not Path("leden.csv").exists():
    print("leden.csv ontbreekt")
    quit()

Stop netjes als een verplicht bestand ontbreekt.

Ontwerp

Stroomschema en scriptontwerp

Basisproces

Start
↓
Lees input
↓
Verwerk gegevens
↓
Schrijf output
↓
Stop

Een simpel ontwerp voordat je begint met programmeren.

Beslissing

if bestand_bestaat:
    lees_bestand()
else:
    toon_foutmelding()

Een if-statement wordt in een flowchart vaak een ruit.

Input/output

inputbestand = "leden.csv"
outputbestand = "output.csv"

Noteer duidelijk welke bestanden het script gebruikt.

Validatie

verplichte_kolommen = ["id", "bedrag"]
for kolom in verplichte_kolommen:
    if kolom not in headers:
        print("Kolom ontbreekt")

Controleer of de brondata bruikbaar is.

Foutpad

try:
    maak_output()
except PermissionError:
    print("Outputbestand is geopend")

Een professioneel ontwerp toont ook wat er gebeurt bij fouten.

Succesmelding

print("Proces succesvol afgerond")

Laat de gebruiker weten dat het script klaar is.

Mini-projecten

Voorbeelden die lijken op echte opdrachten

Betalingen controleren

leden = {"9834": "Marach", "4388": "Ulsdens"}
betalingen = {"9834": 240, "4388": 180}
minimum = min(betalingen.values())

for lid, bedrag in betalingen.items():
    if bedrag > minimum:
        print(lid, leden[lid], bedrag - minimum)

Een compacte versie van een administratie-opdracht.

Cijfers beoordelen

cijfers = [5.4, 6.7, 8.1, 4.9]
for cijfer in cijfers:
    print("voldoende" if cijfer >= 5.5 else "onvoldoende")

Gebruik voorwaarden om resultaten te classificeren.

Voorraad controleren

voorraad = {"laptop": 3, "muis": 0}
for product, aantal in voorraad.items():
    if aantal == 0:
        print(product, "bijbestellen")

Zoek automatisch producten die op zijn.

Rapportregel maken

naam = "Student"
score = 8
regel = f"{naam};{score};geslaagd"
print(regel)

Maak een regel die je later naar CSV kunt schrijven.

Data opschonen

naam = "  Marach,  Fina  "
print(" ".join(naam.split()))

Verwijder dubbele spaties en rommelige invoer.

Samenvatting tonen

aantal = 2
totaal = 180
print(f"{aantal} records verwerkt, totaal €{totaal}")

Geef na afloop een duidelijke samenvatting.

1Lees de opdracht
2Controleer de bestanden
3Run het script
4Controleer de output