Programmeren voor Kinderen

Leren programmeren op de basisschool

Les 6

Heb je lekker gespeeld met het programma uit Les 5? Heb je alle tafels al laten uitrekenen? Dan wordt het tijd om je programma aan iemand anders te laten zien. Maar dan hebben we nog wel een probleem…

 Invoer van gebruikers

Laten we je laatste programma nog eens bekijken. Start, cmd, notepad for.py. En voor de goede orde: python for.py. Doet ie het nog? Mooi.

Stel nou dat je dit aan je vader wil laten zien. Of aan de buurman. Dan vraagt hij natuurlijk: ‘Maar kan jouw programma ook de tafel van 23 laten zien?’

Natuurlijk, jij weet wel hoe het moet. getal = 23 en dan werkt het. Maar je vader of je buurman vindt het misschien wel heel eng om een programma in Notepad te veranderen. Dat moet jij dan altijd doen. Dus we hebben een betere oplossing nodig.

Zou het niet leuk zijn als je programma zou vragen welke tafel je wilt zien?

Verander de eerste regel eens in:

getal = input('Welke tafel wil je zien? De tafel van ')

Kijk nu maar eens wat er gebeurt.

input betekent ‘invoer’. Dat is zoiets als ‘iets wat je intypt’. Dus als de computer dit ziet:

input('Welke tafel wil je zien? De tafel van ')

dan denkt-ie: ‘Ik zal die string wel even op het scherm zetten, en dan wacht ik op invoer.’ En dan gaat-ie wachten.

Wacht hij nog steeds? Type maar eens een getal. O ja, vergeet niet op Enter te drukken.

Als je op Enter drukt denkt de computer: ‘Aaaah, daar is mijn invoer. Eens kijken, wat moet ik ermee doen?

getal =

Okee, dan stop ik het in het doosje getal.’

Dat is dus eigenlijk precies hetzelfde als getal = 23, maar dit keer zet je niet in je programma wat het getal moet zijn, maar laat je de computer het vragen.

Dit programma kun je wel aan je vader of je buurman laten zien!

Heb je de tafel van ‘aap’ wel eens gezien?

Functies

input is een functie. Dat kan je zien aan de haakjes die erachter staan: input(). Een functie is een soort taak die de computer moet uitvoeren. In dit geval is de taak: stel een vraag aan degene die achter de computer zit.

Er zijn nog veel meer functies die de computer kan uitvoeren. We hebben er al eerder een gezien: range(). We zullen er nog veel meer gaan gebruiken. Voor nu is het belangrijkste om te onthouden dat als je ergens haakjes ziet achter een woord, dat de computer een taak gaat uitvoeren. Bij input() was de taak: zet de string op het scherm en wacht tot er iets getypt is.

Weet je wat de taak was bij range()?

Er stond dit, weet je nog:

for i in range(1, 11):
    print i

De taak van range() was niet: doe dit tien keer, dat was wat de for-lus deed. Wat range() deed was een lijstje maken van 1 to 10. Nadat de computer dat gedaan had stond er eigenlijk dit:

for i in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    print i

(ik heb voor het gemak het lijstje even tussen vierkante haakjes gezet.) Nu kun je precies zien wat de computer deed toen hij dit programmaatje uitvoerde: eerst maakte range() een lijstje, en daarna ging for over dat lijstje heenlopen en de getallen één voor één in i stoppen, en als laatste ging print steeds i op het scherm zetten. Of eigenlijk wat er in het doosje i zat. Dus als je de hele lus uitschrijft stond er eigenlijk dit:

i = 1
print i
i = 2
print i
i = 3
print i
i = 4
print i
i = 5
print i
i = 6
print i
i = 7
print i
i = 8
print i
i = 9
print i
i = 10
print i

Dan is het met een for-lus mooi korter!

Inderdaad, print is ook een soort functie, maar dan een zonder haakjes. Dat is wel een beetje verwarrend.

Een moeilijke opdracht

In de vorige les hebben we ook gezien dat je kan veranderen tot hoever de computer de tafel uitrekent: tot 20, of zelfs tot 1000. Kun jij je programma nu zo veranderen dat het vraagt tot hoever je de tafel wil laten uitrekenen?

En extra dubbel moeilijk voor als je een 10+ wilt verdienen: kun je er dan ook voor zorgen dat als ik zeg ’tot en met 10′, dat hij dan ook echt tot en met 10 gaat en niet na 9 ophoudt?

Wat heb je geleerd?

  • Met input kun het programma dingen laten vragen.
  • Als je programma duidelijke vragen stelt kunnen andere mensen het ook gebruiken.
  • In Python kun je de tafel van ‘aap’ uitrekenen.
  • Een functie is een soort taak voor de computer.
  • Achter() een() functie() staan() altijd() haakjes().
  • Behalve achter print.
  • Extra dubbel moeilijke opdrachten zijn best wel moeilijk.

Dat was het wel weer voor vandaag. Tot de volgende keer!

Dion

9 Reacties aan “Les 6”

  1. erik schreef:

    De tafel van aap werkt niet. Ik krijg:
    Traceback (most recent call last):
    File “for.py”, line 1, in
    getal = input(‘Welke tafel wil je zien? De tafel van ‘)
    File “”, line 1, in
    NameError: name ‘aap’ is not defined

  2. Nliscool231 schreef:

    ik vul dus getal = input(‘Welke tafel wil je zien? De tafel van ‘) in word pad in en sla het op voer het uit in cmd etc. maar
    ik vul daarna het getal in 23 bijvoorbeeld en ik krijg geen reactie van de computer hij slaat alleen een regel over ik weet niet wat ik er aan moet doen ik loop echt vast help please

    • Dion Nicolaas schreef:

      Werkt het programma verder wel goed? Laat het de vraag ‘Welke tafel wil je zien? de tafel van ‘ zien op het scherm?
      Druk je op Enter na het beantwoorden van de vraag?
      Zijn er foutmeldingen? Of andere onverwachte dingen?

      Succes,
      Dion

  3. doekele oosterom schreef:

    beste Dion,

    ik krijg bij 4*4 4444 te zien

    tafel=input(‘wat wil je zien ‘)
    i=1
    for i in range(1,100):print(i,’x ‘,tafel ,’=’, i*tafel)

    ergens mis ik wat

  4. Alek schreef:

    Spoiler alert voor extra moeilijke opdracht!!

    getal = input(‘welke tafel wil je zien? De tafel van ‘)
    for i in range(1, input(‘blablabla ‘),+1):
    print i,’x’, getal, ‘=’, i * getal

  5. nickmansrob schreef:

    Beste Dion,

    Ik heb dus de moeilijke opdracht gedaan maar als ik vraag tot hoeveel? en ik typ bvb. 3 doet hij maar 2 keer de opdracht. Hier mijn code:

    getal = input(‘Welke tafel wil je zien? De tafel van ‘)
    for i in range(1, input(‘Tot hoeveel?’),+1):
    print i, ‘x’, getal, ‘=’, i * getal

    Ik merk dat hij die +1 negeert of zo maar ik weet niet hoe ik dat moet oplossen!

    Mvg

    Nickmans Rob

  6. reinout schreef:

    Meneer Dion? mijn tafel werkt niet goed. de computer zegt: “Welke tafel wil je zien? De tafel van” En dan zeg ik 10.
    Maar de computer zegt dan: 1 x 10 = 10
    2 x 10 = 10 10
    3 x 10 = 10 10 10
    4 x 10 = 10 10 10 10
    wat heb ik fout gedaan? want dit is mijn kladblok {oftewel for.py}

    getal = input(‘Welke tafel wil je zien? De tafel van’)
    for i in range (1, 11):
    print (i, ‘x’, getal, ‘=’, i * getal)

Geef een reactie

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.