zinnengenerator - leiden university...de leerlingen kunnen zelfstandig met deze les aan de slag, een...
TRANSCRIPT
Zinnengenerator
Doel: De leerlingen schrijven een programma in Python dat random zinnen genereert door woorden uit
verschillende lijsten te combineren.
Beginsituatie: De leerlingen kennen de regels voor het vormen van zinnen. De leerlingen kennen de
basisbeginselen van programmeren in Python (introductieles). De leerlingen hebben ervaring met de
programmeerconcepten lijsten en randomness (in Scratch).
Materiaal: een laptop/pc per leerling of duo, de lesbrief ‘Zinnengenerator’, potlood/pen
Werkvorm: zelfstandig, bij voorkeur in tweetallen
Start – kern – slot De leerlingen kunnen zelfstandig met deze les aan de slag, een klassikale introductie of afsluiting is
facultatief. De leerlingen werken met de lesbrief. De leerkracht loopt rond om vragen te beantwoorden
en hulp te bieden waar nodig. Een aantal opdrachten in deze les wordt in tweetallen gemaakt.
Naar eigen inzicht kunnen delen van de les klassikaal gedaan worden.
Zinnengenerator
Vind je het ook altijd zo moeilijk hoe je moet beginnen als je een verhaal wil schrijven? De eerste zin, die is
vaak het allerlastigst. Daarom ga je een programma maken in Python dat elke keer weer een nieuwe
beginzin voor je bedenkt. Dat scheelt een boel tijd en gepieker!
We gebruiken hiervoor dingen die je al weet over programmeren in Scratch, maar het uiteindelijke
programma schrijven we in Python. We gebruiken ook dingen die je in de vorige les al geleerd hebt over
programmeren in Python.
Simpele zinnen Voor het maken van de meest simpele zinnen heb je maar twee woorden nodig. Bedenk eens vijf zinnen
die uit twee woorden bestaan en schrijf ze hier op.
1. ____________________________________________________
2. ____________________________________________________
3. ____________________________________________________
4. ____________________________________________________
5. ____________________________________________________
Kijk eens goed naar je zinnen en ontleed ze. Dat moet niet zo moeilijk zijn met deze korte zinnen! Als je
geen vraagzinnen hebt gebruikt, is als het goed is in alle vijf je zinnen de volgorde van de zinsdelen
hetzelfde. Schrijf die volgorde hieronder op.
Zinsdeel 1 = ____________________________________________________________________________
Zinsdeel 2 = ____________________________________________________________________________
Nu ga je Python gebruiken om verschillende van dit soort simpele zinnen te maken.
Ga naar repl.it en maak een nieuw bestand aan, noem dit bestand ‘zinnengenerator’.
Om verschillende zinnen te maken, heb je meer dan één onderwerp nodig en meer dan één
persoonsvorm. Het is handig voor Python als alle onderwerpen bij elkaar staan en alle persoonsvormen,
zodat steeds uit beide categorieën een voorbeeld gehaald kan worden om een nieuwe zin te maken.
Herinner je je nog hoe je dat in Scratch doet? Inderdaad, je maakt een lijst. In Scratch doe je dat op de
volgende manier:
Generator is een
moeilijk woord
voor maker.
Het is niet erg als de leerlingen hier onderwerpen en
persoonsvormen in de verschillende personen (1, 2 en 3) en
enkelvoud of meervoud gebruiken. Hier gaan we later verder op in.
Vervolgens kun je met het blok steeds nieuwe dingen toevoegen aan je
lijst, totdat die er bijvoorbeeld zo uitziet:
Nu jij Maak in Scratch twee lijsten, eentje met de vijf onderwerpen uit jouw zinnen en eentje met de vijf
persoonsvormen.
Laten we deze lijst nu ook in Python maken. Eigenlijk doen we hetzelfde:
- We zeggen dat we een lijst willen maken.
- We geven de lijst een naam.
- We stoppen dingen in de lijst.
De volgorde is alleen een klein beetje anders. In Python begin je met de naam van de lijst, daarna zeg je
dat je een lijst wil maken en vervolgens stop je er van alles in. Hieronder staat een voorbeeld.
onderwerpen = [‘ik’, ‘jij’, ‘de kat’, ‘de meester’, ‘het groene huis’]
Voor de = staat de naam van de lijst.
? Wat is de naam van de lijst? ____________________________________________________________
? Waarom staan de woorden in de lijst tussen aanhalingstekens?
De rechte haken ( [ en ] ) geven aan dat je een lijst maakt en alles wat daartussen staat, zijn de dingen die
je in de lijst stopt. Let op dat je steeds een komma zet tussen de verschillende onderdelen in de lijst.
Nu jij Maak in Python twee lijsten, eentje met de vijf onderwerpen uit jouw zinnen en eentje met de vijf
persoonsvormen.
? Hoe kun je je lijsten op het scherm printen? Probeer het maar eens.
! Vergeet niet om steeds op te klikken om je computer het programma te laten
uitvoeren. Net als de in Scratch.
Om een zin te maken, moet je programma een onderwerp uit de lijst met onderwerpen halen en een
persoonsvorm uit de lijst met persoonsvormen en die vervolgens aan elkaar plakken.
In het
woorden-
boek zie je
meer
manieren
om dingen
in je lijst te
stoppen.
Hier gebruiken de leerlingen hun
vaardigheid in het maken van lijsten in
Scratch. Voor leerlingen die dat moeilijk
vinden, kunt u hier hulp bij geven. Laat
het eerst met het maatje proberen.
Hier kunt u terugverwijzen naar de
introductieles.
Hier kunt u terugverwijzen naar de
introductieles.
Nu jij Maak in Scratch de code die:
- Onderwerp 1 en persoonsvorm 1 aan elkaar plakt
- De sprite deze simpele zin laat zeggen
Laat de leerlingen eerst proberen zelf de
code te maken, voordat ze verder gaan op
de volgende pagina.
Je programma in Scratch ziet er waarschijnlijk ongeveer zo uit:
De verschillende blokken doen verschillende dingen:
- De -blokken nemen het eerste item uit beide lijsten.
- Het -blok plakt die twee dingen aan elkaar, zodat het samen een zin is.
- Het -blok zorgt ervoor dat de Sprite de zin zegt en je de zin op het scherm ziet.
Laten we deze dingen een voor een in Python doen.
Neem een item uit een lijst Alle onderdelen van een lijst hebben een eigen plaats en je kunt naar een onderdeel verwijzen door te
zeggen op welke plaats dit staat. In Scratch gebruik je daarvoor dit blok:
Dit blok zegt dat je het eerste element uit de lijst ‘persoonsvorm’ wil gebruiken. In Python doe je dat met
het stukje code persoonsvorm[0]. Dit stukje code geeft aan dat je het eerste element uit de lijst
‘persoonsvorm’ wil gebruiken. Je noemt dus de naam van de lijst en dan zet je tussen rechte haken het
hoeveelste element je wil gebruiken.
? Wat voor verschil valt je op tussen het blokje in Scratch en het stukje code in Pyhton?
! Computers tellen anders dan mensen, ze beginnen niet bij 1, maar bij 0!
Het was je vast al opgevallen dat hierboven niet persoonsvorm[1] staat, maar persoonsvorm[0].
persoonsvorm[0] geeft je dus het eerste element uit de lijst ‘persoonsvorm’, persoonsvorm[1] geeft
je het tweede element, persoonsvorm[2] het derde, enzovoort.
Nu jij Oefen met tellen als een computer door verschillende elementen uit je lijsten op het scherm te printen.
Als de leerlingen nog geen ervaring hebben met dit blok,
hebben ze hier wellicht wat extra hulp of uitleg bij nodig.
Voeg onderwerp en persoonsvorm samen tot een zin en print die zin
Om verschillende stukjes achter elkaar te printen, gebruik je in Scratch dit blok: .
In Python zijn er twee manieren om verschillende stukjes achter elkaar te printen. Je kunt hiervoor een
komma gebruiken, of het plus-teken.
Nu jij Onderzoek wat het verschil is tussen de komma en het plus-teken als je twee verschillende stukjes achter
elkaar wil printen. Je kunt de volgende stukjes code als voorbeeld gebruiken, of zelf wat proberen.
print(‘aap’, ‘noot’, ‘mies’)
print(‘aap’ + ‘noot’ + ‘mies’)
? Wat is het verschil tussen de komma en het plus-teken?
Welke van de twee kun je het best gebruiken om verschillende woorden achter elkaar te printen?
Kun je nu ook een zin printen met het eerste onderwerp uit je lijst en de eerste persoonsvorm?
En met het derde onderwerp en de vijfde persoonsvorm?
En…?
Zie je iets geks aan je zinnen?
Zinnige zinnen Als je net als in het voorbeeld verschillende soorten onderwerpen en verschillende soorten
persoonsvormen hebt gebruikt, kun je onzinnige zinnen krijgen zoals ‘ik snoept’ en ‘de meester stofzuig’.
Een computer snapt niet uit zichzelf dat dit fout is, dat moet jij hem vertellen.
Nu jij Overleg samen met je maatje hoe je dit probleem kunt oplossen. Je kunt het eerst in Scratch uitproberen
als je dat handig vindt, maar je mag het ook meteen in Python doen.
Als de leerlingen nog geen ervaring hebben met dit blok,
hebben ze hier wellicht wat extra hulp of uitleg bij nodig.
Willekeurige zinnen Tot nu toe heb je nog steeds zelf bepaald welke zin je wilt printen, je hebt tegen de computer gezegd
welke elementen uit de lijsten gepakt moet worden. Dat is nog niet helemaal wat we willen, we willen
namelijk dat de computer een willekeurig onderwerp aan een willekeurige persoonsvorm koppelt. Dat
gaan we nu programmeren.
Misschien weet je nog dat je in Scratch het blok kunt gebruiken. Dit blok kun
je op de plaats van een getal zetten, dus bijvoorbeeld daar waar in je code staat welk item uit de lijst je wil
hebben. Omdat we twee lijsten van vijf items hebben, zou je in Scratch met de volgende code zinnen
kunnen maken die bestaan uit een willekeurig onderwerp en een willekeurige persoonsvorm uit je lijsten.
Nu jij Maak op deze manier vijf zinnige zinnen.
In Python gebruik je de functie randint() om een willekeurig getal te kiezen.
randint komt van ‘random integer’, random is Engels voor willekeurig en integer is computertaal voor
een (geheel) getal. In randint() stop je twee getallen (integers) en de computer kiest dan een
willekeurig getal tussen het eerste en het tweede (waarbij beide getallen meedoen). randint(0,3)
geeft je een willekeurig getal tussen 0 en 3 waarbij 0 en 3 meedoen, dus 0, 1, 2 of 3.
In Python kunnen we randint() gebruiken zoals we in Scratch het blok
gebruiken, namelijk op de plaats waar je aangeeft welk element je uit een lijst wilt hebben. Bijvoorbeeld:
persoonsvorm[randint(0,4)].
? Waarom moeten we hier 0 en 4 gebruiken?
! Om randint() te kunnen gebruiken moet je in je programma helemaal aan het begin deze regel
typen:
from random import randint
randint() zit niet standaard in alle Python porgramma’s, maar met deze regel installeer je deze functie,
zodat je die in de programma kunt gebruiken.
Nu jij Maak vijf willekeurige zinnige zinnen in Python. Gebruik je Scratch-programma als voorbeeld.
We gebruiken hier de indices van de items in de lijst. 0 is
het eerste item in de lijst, 4 het vijfde. Dit is een lastig
onderdeel. Sta hier eventueel langer (klassikaal) bij stil of
laat de leerlingen oefenen.
Moeilijkere zinnen Een zin die alleen uit een onderwerp en een persoonsvorm bestaat is natuurlijk wel wat kort en vooral
wat saai. Lastig om een verhaal te bedenken dat met zo’n simpele zin begint, niet? Maar wat houdt je
tegen om moeilijkere zinnen te maken? Dat kun je nu namelijk ook! Je kunt een lijst maken van lijdend
voorwerpen, meewerkend voorwerpen, bepalingen, wat je maar wil!
! Sommige persoonsvormen kunnen alleen een onderwerp hebben, sommige hebben een onderwerp en
een lijdend voorwerp nodig, en sommige zelfs ook nog een meewerkend voorwerp. Je zult dus
verschillende lijsten van werkwoorden moeten maken.
EXTRA-EXTRA-EXTRA-EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXT
Kun je zinnen maken waarin je een persoonsvorm, een onderwerp en een lijdend voorwerp hebt waarbij
je maar twee lijsten gebruikt?
En zinnen met een persoonsvorm, onderwerp, lijdend voorwerp en meewerkend voorwerp?
EXTRA-EXTRA-EXTRA-EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXTRA- EXT
Kun je je programma zo maken dat je ook afwisseling hebt binnen de verschillende zinsdelen?
Bijvoorbeeld door willekeurige bijvoeglijk naamwoorden toe te voegen aan je onderwerp, lijdend
voorwerp of meewerkend voorwerp? Of door het voorzetsel van een bepaling willekeurig te bepalen.
Zodat je bijvoorbeeld de volgende verschillende zinnen kunt krijgen:
- De boze kat liep naar het groene huis
- De blije kat liep naar het verwoeste huis
zonder dat je ‘de boze kat’ en ‘de blije kat’ allebei in je lijst hebt staan. Hetzelfde voor ‘het groene huis’ en
‘het verwoeste huis’
En:
- De kat wandelde langs de grote hond
- De kat wandelde naar de grote hond
- De kat wandelde onder de grote hond
zonder dat je ‘langs de grote hond’, ‘naar de grote hond’ en ‘onder de grote hond’ apart in je lijstje met
bepalingen hebt staan.
Tot slot Laat Python een willekeurige zin voor je maken en gebruik deze als startzin voor een verhaal.
Woordenboek
Scratch Nederlands Scratch Engels Python Wat doet deze code?
onderwerp = [ ] Maakt een (lege) lijst die ‘onderwerp’ heet.
onderwerp.append(‘de meester’)
Voegt het element ‘de meester’ toe aan de lijst ‘onderwerp’. Dit element komt altijd aan het eind van de lijst.
onderwerp.insert(3, ‘de meester’)
Stopt het element ‘de meester’ op de vierde positie van de lijst ‘onderwerp’. Let op! Dit kan alleen als de eerste drie posities al gevuld zijn. Let op! Als er meer dan vier posities gevuld zijn, schuiven de elementen na
positie vier een plaats op. (het vierde element schuift naar plaats vij, het vijfde naar plaats zes, etc.)
onderwerp[3] = ‘de meester’
Vervangt het element op de vierde plaats in de lijst ‘onderwerp’door ‘de meester’.
persoonsvorm[0] Het eerste element uit de
lijst ‘persoonsvorm’.
(‘hello’, ‘world’) Plakt de stukjes tekst ‘hello’ en ‘world’ aan elkaar en zet er een spatie tussen.
randint(1, 10) Kiest een willekeurig getal
tussen 1 en 10, waarbij 1 en 10 meedoen.