{count, plural, one {Cursus} other {Cursussen}}
De beste manier om Python te leren is door vertrouwd te raken via herhaling, experimenteren en probleemoplossing. Daarom staat de “leren door te doen”-filosofie centraal in hoe effectieve programmeurs worden opgeleid.
Code schrijven, fouten maken en die vervolgens oplossen is hoe je jezelf echte vaardigheden aanleert.
In dit artikel werken we een gestructureerde set Python-oefeningen door, speciaal ontworpen voor beginners. De oefeningen beginnen met eenvoudige variabelen en gaan geleidelijk over op functies, datastructuren en kleine dataprojecten.
Voordat je verder leest, hier is een uitdaging voor je: probeer de eerste drie oefeningen in dit artikel meteen op te lossen, zonder vooruit te kijken naar de uitleg. Zelfs als je vastloopt, gebeurt het meeste leren tijdens het proberen.
Als je liever meer begeleiding hebt, controleren DataCamp-cursussen automatisch stap voor stap je syntaxis en logica. Dit voerkomt dat kleine fouten je voortgang blokkeren en is vooral handig voor beginners. Een goed startpunt is de cursus Introduction to Python.
Aan de slag met Python-oefeningen
Voordat je met de oefeningen begint, heb je een basisomgeving nodig om Python-code te schrijven en uit te voeren. Gelukkig is starten eenvoudiger dan ooit.
Voorbereiding
Om Python lokaal te draaien, installeer je een gebruiksvriendelijke code-editor zoals Visual Studio Code.
Een typische setup ziet er zo uit:
-
Installeer Python vanaf de officiële website
-
Installeer Visual Studio Code
-
Voeg de Python-extensie toe in VS Code
-
Maak een nieuw
.py-bestand en begin met coderen

VS Code is een goede plek om te beginnen met coderen, omdat het open-source en gratis te gebruiken is. Je kunt hun downloadpagina bezoeken om de software te downloaden. Ga door en installeer het zodra de download is voltooid.
Als je liever niets installeert, kun je DataLab gebruiken, een browsergebaseerde omgeving waarmee je direct Python- (en SQL-)code kunt uitvoeren. Het is ideaal om tutorials te volgen, snippets te testen en te experimenteren zonder je zorgen te maken over installatieproblemen.
Hoe je deze oefeningen gebruikt
Om je leeropbrengst te maximaliseren, is elke oefening in dit artikel bedoeld om eerst te proberen vóórdat je de oplossing of uitleg leest.
Zo haal je het meeste uit deze oefeningen:
- Besteed minimaal 15 minuten aan een eigen oplossing proberen
- Schrijf het volledige programma, ook als het repetitief voelt
- Bekijk het antwoordenoverzicht pas nadat je het geprobeerd hebt
Een complete antwoordenlijst voor alle oefeningen is beschikbaar in een gelinkte DataLab-werkmap. Zo kun je jouw aanpak vergelijken met een werkende oplossing en alternatieve manieren begrijpen om hetzelfde probleem op te lossen.

Python-oefeningen voor variabelen, invoer en uitvoer
Laten we beginnen met een paar basisoefeningen die draaien om de bouwstenen: waarden opslaan, gebruikersinvoer lezen en output op het scherm printen.
De persoonlijke begroeting
Om te beginnen bekijken we een eenvoudige Python-oefening die een persoonlijk bericht print.
Oefening
Schrijf een programma dat:
-
De gebruiker om zijn/haar naam vraagt met
input() -
De gebruiker om zijn/haar leeftijd vraagt met
input() -
Een begroetingsbericht print met geformatteerde strings
-
Het jaar berekent waarin de gebruiker 100 wordt
Voordat je code schrijft, helpt het om na te denken over hoe informatie door een simpel programma als dit stroomt. De gebruiker geeft ruwe tekstinvoer, Python slaat die invoer op in variabelen, en jij zet die waarden vervolgens om in iets betekenisvols.
Deze oefening weerspiegelt veel echte programma’s, waar gebruikersinvoer zelden bruikbaar is in de oorspronkelijke vorm en eerst gevalideerd of geconverteerd moet worden.
Startcode
Hier is wat startcode om je op weg te helpen:
# Task: Ask for the user's name
name = input("Enter your name: ")
# Task: Ask for the user's age (note: input() returns a string)
age_str = input("Enter your age: ")
# Task: Convert age_str to an int
# age = ...
# Task: Calculate the year the user turns 100
# Tip: you'll need the current year
# current_year = ...
# year_turn_100 = ...
# Task: Print a personalized message using an f-string
# print(...)
Belangrijke concepten geoefend
-
input()geeft altijd een string terug -
Strings omzetten naar gehele getallen met
int() -
Basale rekenkunde met getallen
-
Stringformattering met f-strings
Deze oefening leert je dat gebruikersinvoer vaak eerst moet worden getransformeerd voordat je die in berekeningen kunt gebruiken.
De temperatuurconverter
Laten we je Python-vaardigheden toepassen op wat basis-omrekeningen van eenheden.
Oefening
Schrijf een programma dat:
-
De gebruiker om een temperatuur in Celsius vraagt
-
Deze omzet naar Fahrenheit met de formule:
F = (C × 9/5) + 32 -
De omgezette temperatuur print
Startcode
Hier is wat startcode om je op weg te helpen:
# Task: Ask the user for a Celsius temperature
celsius_str = input("Temperature in Celsius: ")
# Task: Convert the input to a float
# celsius = ...
# Task: Apply the conversion formula
# fahrenheit = ...
# Task: Print the result (consider formatting to 1–2 decimal places)
# print(...)
Belangrijke concepten geoefend
-
Zwevendekommagetallen
-
Rekenkundige expressies
-
Typecasting met
float()
Deze oefening benadrukt dat niet alle numerieke invoer hele getallen zijn en dat Python natuurlijk met decimalen omgaat.
De swap-logicapuzzel
Deze oefening lijkt triviaal, maar beginners zien variabelen vaak als doosjes die je stap voor stap moet leegmaken en opnieuw vullen. Laten we bekijken hoe we in Python een waardewissel doen.
Oefening
Je krijgt twee variabelen: a = 5 en b = 10. Verwissel hun waarden zonder ze handmatig waarde-voor-waarde te herassignen.
Python biedt een expressievollere manier om over toewijzing na te denken, waarbij waarden in één bewerking kunnen worden uitgepakt en opnieuw toegewezen.
Startcode
Hier is wat startcode om je op weg te helpen:
a = 5
b = 10
# Task: Swap a and b
# Hint: Try a temporary variable first.
# Then try the Pythonic approach (tuple unpacking).
# Task: Print the swapped values to verify
# print("a:", a)
# print("b:", b)
Belangrijke concepten geoefend
- Variabeletoewijzing
- Tijdelijke variabelen versus tuple-unpacking
Dit introduceert tuple-unpacking, een functie die Python zowel beknopt als expressief maakt.
Voor meer basisinformatie, bekijk onze Python-cheatsheet.
Python-oefeningen voor controlflow en logica
Controlflow laat je programma’s beslissingen nemen en acties herhalen op basis van voorwaarden.
De oneven- of evenchecker
Een veelvoorkomend gebruik van de modulo-operator is een oneven/evenscheck. Laten we dit hieronder proberen.
Oefening
Schrijf een programma dat:
-
De gebruiker om een getal vraagt
-
De modulo-operator
%gebruikt -
Print of het getal even of oneven is
Startcode
Hier is wat startcode om je op weg te helpen:
# Task: Ask the user for a number
num_str = input("Enter a whole number: ")
# Task: Convert to int
# num = ...
# Task: Use modulo (%) to decide even vs odd
# if ...:
# print("Even")
# else:
# print("Odd")
Belangrijke concepten geoefend
-
Modulo-operator
-
Booleaanse logica
Dit is vaak het eerste voorbeeld waarin beginners zien hoe voorwaarden het gedrag van programma’s sturen.
De klassieke FizzBuzz-uitdaging
Een veelvoorkomende programmeeruitdaging die velen doen, is de FizzBuzz-challenge. Laten we bekijken wat deze oefening inhoudt.
Oefening
Print getallen van 1 tot en met 100 met de volgende regels:
-
Veelvouden van 3 printen
Fizz -
Veelvouden van 5 printen
Buzz -
Veelvouden van beide printen
FizzBuzz
Deze oefening traint je om zorgvuldig na te denken over beslisbomen en randgevallen, een cruciale vaardigheid bij het schrijven van echte programma’s.
Startcode
Hier is wat startcode om je op weg te helpen:
# Task: Loop from 1 to 100
for n in range(1, 101):
# Task: Check multiples of 3 AND 5 first
# if ...:
# print("FizzBuzz")
# Task: Then multiples of 3
# elif ...:
# print("Fizz")
# Task: Then multiples of 5
# elif ...:
# print("Buzz")
# Task: Otherwise, print the number
# else:
# print(n)
pass
Belangrijke concepten geoefend
-
for-lussen -
Volgorde van voorwaarden
-
Logische operatoren
Deze oefening is een rite de passage voor programmeurs en wordt vaak gebruikt om gestructureerd denken in controlflow te onderwijzen. Lees meer over lussen in onze Python-lus-tutorial.
Het raadspel
Deze oefening introduceert interactieve programma’s die dynamisch reageren op gebruikersinvoer.
Oefening
Schrijf een programma dat:
-
Een willekeurig getal genereert (
randomimporteren) -
Een
while-lus gebruikt om om gokjes te vragen -
Na elke gokfeedback "Too high" of "Too low" print
-
Stopt wanneer het juiste getal is geraden
Dit is vaak de eerste oefening waarin beginners een programma ervaren dat interactief aanvoelt in plaats van lineair. In tegenstelling tot eerdere scripts die van boven naar beneden draaien en afsluiten, blijft dit programma lopen totdat aan een voorwaarde is voldaan.
De belangrijkste conceptuele stap hier is begrijpen wanneer en hoe een lus wordt beëindigd.
Startcode
Hier is wat startcode om je op weg te helpen:
import random
# Task: Pick a random number in a reasonable range
# target = random.randint(1, 100)
# Task: Use a while loop to keep asking until correct
# while ...:
# guess_str = input("Your guess (1–100): ")
# # guess = ...
# # if guess > target:
# # print("Too high")
# # elif guess < target:
# # print("Too low")
# # else:
# # print("Correct!")
# # break
Belangrijke concepten geoefend
-
Modules importeren (
random) -
while-lussen -
Voorwaarden om lussen te beëindigen
Python-oefeningen voor lijsten, lussen en iteratie
Lijsten laten je werken met verzamelingen van waarden, terwijl lussen je helpen die efficiënt te verwerken.
De som van de lijst
Dit patroon komt vaak voor in datapijplijnen en analytics-workflows.
Oefening
Schrijf een programma dat alle getallen in een lijst optelt zonder de ingebouwde functie sum() te gebruiken. Het programma moet de optellogica expliciet in een lus uitvoeren in plaats van te steunen op andere aggregatiehulpmiddelen.
Startcode
Hier is wat startcode om je op weg te helpen:
numbers = [3, 7, 2, 9, 4]
# Task: Create an accumulator variable
# total = ...
# Task: Loop through numbers and add each value to total
# for ...:
# ...
# Task: Print the final total
# print(total)
Belangrijke concepten geoefend
-
Een accumulatorvariabele initialiseren
-
Itereren met
for-lussen -
Waarden stap voor stap bijwerken
Voor meer lijstgerelateerde voorbeelden, bekijk onze gids met de meest voorkomende Python-lijstvragen.
Het grootste getal vinden
De volgende oefening lijkt op de vorige, maar werkt anders binnen de lus. Het versterkt algoritmisch denken en spiegelt hoe ingebouwde functies intern werken.
Oefening
Daag de gebruiker uit om het grootste getal in een lijst te vinden zonder max() te gebruiken.
Startcode
Hier is wat startcode om je op weg te helpen:
numbers = [12, 5, 27, 3, 19]
# Task: Initialize current_max using the first element
# current_max = numbers[0]
# Task: Loop through the remaining elements and update current_max
# for ...:
# if ...:
# current_max = ...
# Task: Print the largest number
# print(current_max)
Belangrijke concepten geoefend
- Vergelijkingslogica
- Status bijhouden tijdens iteratie
Duplicaten verwijderen
Echte data is rommelig, en rommelige data bevat vaak dubbele datapunten. De volgende oefening bereidt je voor op datacleaningtaken.
Oefening
Zet een lijst met dubbele elementen om in een nieuwe lijst met alleen unieke items.
Op het eerste gezicht lijkt dit probleem eenvoudig, maar het introduceert het idee om bij te houden wat je al hebt gezien. Dit is een fundamenteel concept in dataverwerking, waar het identificeren en verwijderen van dubbele records routinewerk is.
Startcode
Hier is wat startcode om je op weg te helpen:
data = ["apple", "banana", "apple", "orange", "banana", "kiwi"]
# Task: Create a new list for unique items
# unique = []
# Task: Loop through data and append items you haven't seen yet
# for item in data:
# if ...:
# ...
# Task: Print or return the unique list
# print(unique)
Belangrijke concepten geoefend
-
Lidmaatschapscontroles met
in -
Nieuwe lijsten opbouwen
-
Inzicht in gegevens-uniciteit
Python-oefeningen voor dictionaries en stringmanipulatie
Dictionaries en strings zijn essentieel voor het organiseren en transformeren van tekstuele data. Laten we bekijken hoe je hiermee omgaat.
De tekenfrequentieteller
Deze oefening leert je hoe je frequentietabellen bouwt, een veelvoorkomende data-analysetaak.
Oefening
Neem een stringinvoer en geef een dictionary terug die telt hoe vaak elk teken voorkomt.
Deze oefening is een grote conceptuele stap: je bouwt dynamisch een datastructuur op terwijl je programma draait. In plaats van te werken met een vooraf gedefinieerde lijst of dictionary, maak en update je entries op basis van de data die je tegenkomt.
Startcode
Hier is wat startcode om je op weg te helpen:
text = input("Enter some text: ")
# Task: Create an empty dictionary
# counts = {}
# Task: Loop over each character and update counts
# for ch in text:
# # Option A: counts[ch] = counts.get(ch, 0) + 1
# # Option B: if ch in counts: ... else: ...
# pass
# Task: Print the frequency table
# print(counts)
Belangrijke concepten geoefend
-
Dictionaries
-
.get()-methode -
Conditionele initialisatie
Het eenvoudige telefoonboek
Deze oefening raakt aan dictionarylogica, de basis voor het begrijpen van tabelvormige datastructuren later.
Oefening
Maak een programma dat namen en nummers in een dictionary opslaat en de gebruiker laat zoeken op naam.
Deze oefening introduceert het idee om een programma te gebruiken als een persistent opzoekhulpmiddel in plaats van een eenmalige berekening. Je modelleert een vereenvoudigde versie van hoe veel applicaties informatie opslaan en ophalen.
Startcode
Hier is wat startcode om je op weg te helpen:
phonebook = {
# "Alice": "9123 4567",
# "Ben": "9876 5432",
}
# Task: (Optional) add entries via input()
# name = input("Name to add: ")
# number = input("Number to add: ")
# phonebook[name] = number
# Task: Search loop (one lookup is fine for a start)
query = input("Search name: ")
# Task: Print the number if found, otherwise print a friendly message
# if ...:
# print(...)
# else:
# print("Not found")
Belangrijke concepten geoefend
- Opzoeken in dictionaries
- Sleutel-waarde-relaties
Als je dieper in dictionaries wilt duiken, raad ik onze uitgebreide gids over Python Dictionary Methods aan.
Palindroomchecker
Deze oefening combineert tekstverwerking met logische vergelijking door naar palindromen te kijken.
Oefening
Een palindroom is elk woord, elke zin, elk getal of elke tekenreeks die zowel voorwaarts als achterwaarts hetzelfde leest. Maak een script dat controleert of een string voor- en achterwaarts hetzelfde leest (ongeacht hoofdletters en spaties).
Startcode
Hier is wat startcode om je op weg te helpen:
text = input("Enter a word or phrase: ")
# Task: Normalize (lowercase + remove spaces)
# normalized = ...
# Task: Reverse using slicing
# reversed_text = ...
# Task: Compare and print a result message
# if ...:
# print("Palindrome")
# else:
# print("Not a palindrome")
Belangrijke concepten geoefend
-
Stringmethoden (
lower(),replace()) -
Stringslicen (
[::-1])
Python-oefeningen voor functies en modulariteit
Functies laten je herbruikbare, overzichtelijke code schrijven in plaats van logica te herhalen.
De factoriaalcalculator
De factoriaalcalculator helpt je returnwaarden te begrijpen, die cruciaal zijn voor het bouwen van grotere programma’s.
Oefening
Definieer een functie die een geheel getal neemt en de faculteit (factorial) daarvan retourneert met behulp van een lus.
Het onderscheid tussen een waarde printen en een waarde retourneren is extra belangrijk. Resultaten retourneren maakt het mogelijk je functie te combineren met andere code, essentieel zodra programma’s groter worden dan één bestand.
Startcode
Hier is wat startcode om je op weg te helpen:
def factorial(n: int) -> int:
"""Return n! (factorial of n) using a loop."""
# Task: Decide how to handle n < 0
# Task: Initialize result
# result = ...
# Task: Multiply result by each integer from 1 to n
# for ...:
# ...
# Task: Return the computed factorial
# return result
pass
# Optional quick test
# print(factorial(5)) # expected: 120
Belangrijke concepten geoefend
- Functiedefinities
- Lusgebaseerde berekeningen
- Waarden retourneren versus printen
Lees meer over functies in onze Python-functietutorial.
Priemgetallenvalideerder
We bekijken hierna een functie die priemgetallen valideert. Dit helpt je leren hoe je herbruikbare functies maakt.
Oefening
Schrijf een functie die True retourneert als een getal priem is en False als dat niet zo is.
Priemcontrole laat ook zien hoe functies logica netjes kunnen inkapselen. Eenmaal geschreven kan de functie overal opnieuw worden gebruikt zonder de interne details te hoeven begrijpen.
Startcode
Hier is wat startcode om je op weg te helpen:
def is_prime(n: int) -> bool:
"""Return True if n is prime, otherwise False."""
# Task: Handle small cases (n <= 1)
# Task: Check divisibility from 2 up to an appropriate limit
# for ...:
# if ...:
# return False
# Task: If no divisors found, return True
# return True
pass
# Optional quick tests
# print(is_prime(2)) # expected: True
# print(is_prime(15)) # expected: False
Belangrijke concepten geoefend
- Lussen
- Vroege returns
- Logische efficiëntie
Flexibele argumentprinter
Dit introduceert geavanceerde functiesignaturen die in veel Python-bibliotheken worden gebruikt.
Oefening
Maak een functie die een willekeurig aantal argumenten accepteert met *args en ze één voor één print.
Deze oefening laat je kennismaken met een van Python’s flexibelere features: argumenten met variabele lengte. Het verschuift je denkwijze van vaste invoer naar functies die zich aanpassen aan verschillende gebruikspatronen.
Inzicht in *args maakt het eenvoudiger om echte Python-bibliotheken te lezen en te gebruiken, waar functies vaak een flexibel aantal parameters accepteren voor gemak en uitbreidbaarheid.
Startcode
Hier is wat startcode om je op weg te helpen:
def print_args(*args) -> None:
"""Print each positional argument on its own line."""
# Task: Loop over args and print each one
# for ...:
# print(...)
pass
# Optional quick test
# print_args("hello", 42, True)
Belangrijke concepten geoefend
- Argumenten met variabele lengte
- Flexibiliteit van functies
Python-vaardigheden toepassen met begeleide projecten
Oefeningen bouwen vaardigheden op, maar projecten zetten die vaardigheden om in vertrouwen.
Netflix-films onderzoeken

Het begeleide project Investigating Netflix Movies stelt een bedrieglijk eenvoudige vraag: worden films in de loop van de tijd korter? Om die te beantwoorden werk je met een echte dataset van Netflix-titels en zet je ruwe datarijen stap voor stap om in een helder, visueel inzicht.
Wat dit project krachtig maakt, is dat het de kloof overbrugt tussen Python-basisprincipes voor beginners en toegepaste data-analyse. Je ziet hoe eenvoudige logica opschaalt in combinatie met de juiste tools, zonder iets lokaal te hoeven installeren.
Dr. Semmelweis en de ontdekking van handhygiëne

Het project Dr. Semmelweis and the Importance of Handwashing plaatst je in de rol van data-analist die een echt historisch probleem onderzoekt. In het midden van de 19e eeuw observeerde Dr. Ignaz Semmelweis ongewoon hoge sterftecijfers in de ene ziekenhuisafdeling vergeleken met een andere, maar hij miste de computationele hulpmiddelen om te bewijzen waarom.
Met behulp van historische gegevens analyseer je sterftecijfers vóór en na de introductie van handwassen. Het project richt zich op het manipuleren van tabeldata met pandas, het berekenen van percentages en het vergelijken van gemiddelden over tijdsperioden.
De NYC Airbnb-markt verkennen

In het project Exploring Airbnb Market Trends stap je in een scenario dat sterk lijkt op echt analytics-werk: rommelige, inconsistente data die aanzienlijke opschoning vereist voordat er zinvolle analyse kan plaatsvinden.
De dataset bevat verhuurlijsten met prijzen die als strings zijn opgeslagen, ontbrekende beoordelingsscores en inconsistente opmaak.
Je primaire taak is de data opschonen en standaardiseren. Het project benadrukt dat datavoorbereiding geen voorbereidende klus is, maar een kernvaardigheid voor analisten. Vaak besteden dataprofessionals het grootste deel van hun tijd aan dataschoonmaak, en dit project is een uitstekend praktisch ijkpunt voor die competentie.
Conclusie
Je begon met eenvoudige variabelen en gebruikersinvoer, ging vervolgens door controlflow, datastructuren, functies en paste alles ten slotte toe in begeleide projecten. Deze oefeningen zouden je een goed beeld moeten hebben gegeven van hoe Python wordt gebruikt in echte omgevingen.
Je logische volgende stap is gestructureerd leren. Consequente oefening gecombineerd met gestructureerde, begeleide instructie is de snelste manier om oefeningen om te zetten in expertise. Ik raad aan je in te schrijven voor ons Python Programming- of Data Scientist-traject om te beginnen.
Python-oefeningen: veelgestelde vragen
Wat is het beste platform om Python-code-uitdagingen te oefenen?
De sterkste platforms combineren hands-on coderen met gestructureerde feedback. DataCamp is uitstekend voor begeleide oefening omdat het coderen in de browser biedt (geen setup), directe feedback op oefeningen, gestructureerde skill- en carrièretrajecten en begeleide projecten met echte datasets.
Hoe kan ik gespreide herhaling effectief gebruiken om Python te leren?
Gespreide herhaling werkt het best wanneer je het toepast op concepten, niet alleen op syntaxis. In plaats van aantekeningen steeds opnieuw te lezen, keer je in de loop van de tijd terug naar dezelfde ideeën via steeds moeilijkere oefeningen.
Wat zijn enkele gevorderde Python-projecten voor beginners?
Goede voorbeelden van gevorderde projecten zijn: een to-do-app op de command line met bestandspersistentie bouwen, een CSV-dataset analyseren met pandas en basisvisualisaties, of een kleine API-client maken die data ophaalt en verwerkt van een publieke endpoint.
Ik ben Austin, een blogger en techschrijver met jarenlange ervaring als zowel datascientist als data-analist in de gezondheidszorg. Ik begon mijn techreis met een achtergrond in biologie en help nu anderen dezelfde overstap te maken via mijn techblog. Mijn passie voor technologie heeft geleid tot schrijfbijdragen aan tientallen SaaS-bedrijven, waarmee ik anderen inspireer en mijn ervaringen deel.

