Introductie

Welkom bij de Python Tutor! Deze webapplicatie is ontwikkeld om jou te helpen bij het leren van de programmeertaal Python. In het menu aan de linkerkant kun je de lijst met oefeningen vinden. Elke oefening beschrijft een probleem dat je moet proberen oplossen door een programma in Python te schrijven. In deze introductie zal ik even uitleggen hoe je aan de slag gaat met een oefening.

Voorbeeldoefening

We beschouwen als voorbeeldoefening het probleem van het sommeren van getallen. De invoer aan ons programma ziet er bijvoorbeeld zo uit:

7
3
0
1
9
5
5

Jouw opdracht is een Python-programma schrijven dat, op basis van zo'n invoer, de som van alle gegeven getallen uitrekent. Om dit te kunnen doen, moet je natuurlijk eerst de invoer inlezen. De Tutor zal altijd verwachten dat jouw programma een main functie bevat die één enkel argument filename aanneemt. Je krijgt dus altijd volgende code reeds gegeven in het indienveld:

def main(filename):
    # jouw code hier

Je mag eender welke code schrijven in het indienveld, zolang deze code geldige Python is en de methode main(filename) jouw programma opstart. De Tutor zal het argument filename invullen met de namen van bestanden die jouw programma moet verwerken. De uitvoer die jouw programma geeft, wordt dan vergeleken met de verwachte uitvoer. Als je klikt op de knop "Evalueren" boven het indienveld, krijg je een rapport te zien dat aangeeft welke fouten jouw programma al dan niet gemaakt heeft.

Voorbeeldoplossing

Om deze voorbeeldoefening op te lossen, beginnen we dus met het inlezen van het bestand:

def main(filename):
    # data inladen
    with open(filename, 'r') as f:
        numbers = [int(line) for line in f]

Nu hebben we een lijst numbers die voor de voorbeeldinvoer volgende waarde zal aannemen:

numbers = [7, 3, 0, 1, 9, 5, 5]

Deze getallen moeten we nu sommeren. Dat kan met de ingebouwde sum functie van Python:

# bereken de som
sum_of_numbers = sum(numbers)

In ons voorbeeld hebben we

sum_of_numbers = 7 + 3 + 0 + 1 + 9 + 5 + 5 = 30

Het is de bedoeling dat ons programma deze som teruggeeft. Dit kan met volgend statement:

# geef de som terug
return sum_of_numbers

Je gaat nooit iets hoeven te printen voor deze opdrachten. De Tutor gaat altijd jouw main functie aanroepen met een bestandsnaam als argument en verwachten dat het resultaat van jouw programma via een return teruggegeven wordt. Het staat je natuurlijk wel vrij om vanalles te printen met het print statement dat je wil; die output zie je dan in de uitvoerconsole onder het indienveld. Dit kan je misschien gebruiken bij het debuggen van jouw programma als er iets misloopt.

Indienen en testen

Probeer het finale programma eens zelf te schrijven en in te voeren in het indienveld hieronder. Zodra je op "Evalueren" klikt, krijg je aan de rechterkant van de editor een rapport. Dit rapport bestaat uit een opeenvolging van berichten die in detail aangeven welke invoer jouw programma moest verwerken, welke uitvoer het moest geven en welke uitvoer het effectief heeft gegeven. Als de verwachte uitvoer niet overeenkomt met de uitvoer die je gegeven hebt, faalt de test; anders slaagt hij. Probeer altijd te slagen voor alle tests 😊

Foutmeldingen

Het kan gebeuren dat jouw code fouten bevat. Stel bijvoorbeeld dat je volgende code indient:

def main(filename):
    return 1/0

Dan zie je in het rapport volgende foutmelding:

ZeroDivisionError: integer division or modulo by zero on line 2

Dit komt doordat je op regel 2 van jouw code probeert te delen door nul, wat natuurlijk een fout geeft. Het indienveld is voorzien van regelnummers en foutmeldingen zullen meestal verwijzen naar de regel waar het probleem ongeveer zit.

Help!

Als je niet weet hoe je verder moet met een bepaalde oefening, kun je een aantal vuistregels gebruiken:

  1. Google is enorm handig bij het programmeren. Stel dat je niet weet hoe je getallen moet sommeren in Python. Typ gewoon how to sum numbers in python in op Google en je krijgt massa's resultaten die dit uitleggen.
  2. Python heeft een ingebouwde help functie die heel handig kan zijn. Als je in Python bijvoorbeeld help(sum) ingeeft, krijg je uitleg over de sum functie.
  3. Je kan makkelijk en snel stukjes Python-code uittesten in een REPL-omgeving.
  4. De officiële Python documentatie is heel handig.

Tenslotte kan je natuurlijk altijd vragen aan mij stellen ❤️. Ik ben namelijk een expert in Python 😎.

Indienen

Evaluatie


Uitvoerconsole