Zelftoets
Vragen over de eerste vier lessen samen. Elk antwoord staat eronder, ingeklapt. Maak eerst de vraag, klap dan pas open. Kom je er niet uit, zoek dan de sectie op in plaats van meteen te kijken. In de cel hieronder kan je alles uitproberen wat je bij een vraag nodig hebt.
De functie hieronder zou de omtrek van een rechthoek moeten teruggeven, en doet dat niet. Wat loopt er mis, en wat gebeurt er bij
omtrek(3, 4) + 1?TipAntwoordDe functie toont het juiste getal en geeft niets terug, dus levert ze
Noneaf.omtrek(3, 4) + 1schrijft eerst14op het scherm en loopt daarna vast, want bijNonevalt niets op te tellen. Vervangprintdoorreturn.Wat geven
7 / 2en7 // 2, en van welk type is elke uitkomst?TipAntwoord3.5en3. De eerste deling levert altijd eenfloat, ook wanneer de uitkomst rond is. De tweede gooit alles na de komma weg en levert eenint.Schrijf
volle_minuten(seconden), die teruggeeft hoeveel volle minuten er in een aantal seconden zitten, dusvolle_minuten(200)levert3.TipAntwoordMet
/zou je3.3333333333333335krijgen, en metreturnin plaats vanprintkan de aanroeper verder rekenen met het antwoord.De variabele
puntenbevat17. Schrijf de regel dieje haalde 17 puntenop het scherm zet, waarbij het getal uit de variabele komt en niet in de zin zelf staat.TipAntwoordZonder
str()loopt de regel vast met eenTypeError, aangezien er links tekst staat en rechts een getal.Maak een trace table voor de code hieronder en geef het eindresultaat.
TipAntwoordEr verschijnt
8.iteratie invoor de lus 11 022 143 28Merk op dat
iin het lichaam van de lus niet voorkomt.range(3)dient hier enkel om drie keer af te tellen.Maak ook voor deze code een trace table, en geef het eindresultaat.
TipAntwoordEr verschijnt
2.iteratie itellervoor de lus 01 112 223 304 415 52Er komt vijf keer
1bij, en toch staat er op het einde geen5. De rest bij deling door \(3\) is nooit groter dan \(2\), dus valttellerna2terug op0en telt deze lus rond in een kringetje van drie.Schrijf
som_kwadraten(n), die de som van de kwadraten van de getallen van \(1\) tot en metnteruggeeft. Voorngelijk aan \(4\) is dat \(1 + 4 + 9 + 16\), dus \(30\).TipAntwoordDe beginwaarde is
0, want er is nog niets opgeteld. De bovengrens vanrangehoort er niet bij, vandaarn + 1.Schrijf drie functies die samen de wortels van een vierkantsvergelijking \(ax^2 + bx + c = 0\) berekenen:
discriminant(a, b, c),wortel1(a, b, c)enwortel2(a, b, c). Ga ervan uit dat de discriminant strikt positief is. Twee waarden tegelijk teruggeven kan je nog niet, dus zijn het twee aparte functies voor de twee wortels. Een vierkantswortel schrijf je als** 0.5.Controleer met \(x^2 - 5x + 6 = 0\), dat
3.0en2.0moet opleveren.TipAntwoordLet op de haakjes rond
2 * a.Je staat in je thuismap op de Linux virtuele machine. Schrijf voor elke stap het commando dat je typt.
- Maak een map
toets. - Ga erin.
- Schrijf met
microeen bestandgroet.pydatHallotoont. - Voer het uit.
- Hernoem het naar
begroeting.py. - Maak er een reservekopie
begroeting.py.bakvan. - Gooi
begroeting.pyweg. - Zet de reservekopie terug onder de oude naam.
- Voer ze een tweede keer uit.
TipAntwoordleerling@penguin:~$ mkdir toets leerling@penguin:~$ cd toets leerling@penguin:~/toets$ micro groet.py leerling@penguin:~/toets$ python3 groet.py Hallo leerling@penguin:~/toets$ mv groet.py begroeting.py leerling@penguin:~/toets$ cp begroeting.py begroeting.py.bak leerling@penguin:~/toets$ rm begroeting.py leerling@penguin:~/toets$ mv begroeting.py.bak begroeting.py leerling@penguin:~/toets$ python3 begroeting.py HalloIn micro typ je één regel,
print("Hallo"), je bewaart metCtrl-Sen je sluit af metCtrl-Q. Buiten die twee keerHallozegt geen enkel commando iets, en dat hoort zo.Het terugzetten kan ook met
cpin plaats vanmv. Het verschil is dat je de reservekopie dan overhoudt, terwijlmvze opgebruikt.- Maak een map
Je hebt
begroeting.pyen een ouderebegroeting.py.baknaast elkaar staan. Je wil een verse reservekopie maken en typtmv begroeting.py begroeting.py.bak, metmvwaarcpmoest staan. Wat antwoordt de shell, en wat is de schade?TipAntwoordDe shell antwoordt niets. Je krijgt een nieuwe prompt, precies zoals bij een geslaagd commando, want dit is een geslaagd commando.
Je bent twee dingen kwijt. De oude
begroeting.py.bakis overschreven zonder enige waarschuwing, enbegroeting.pybestaat niet meer, wantmvverplaatst en kopieert niet. Waar twee bestanden stonden, staat er nu één. Er is geen Prullenbak om iets uit terug te halen.Dat is dezelfde les als bij
2 ^ 3in 1.1: geen foutmelding betekent niet dat er staat wat je bedoelde.lsgebruiken voor je een naam hergebruikt, kost één commando.
In vraag 6 kwam er telkens
1bij, entellerdoorliep netjes0,1en2. Hieronder komt er telkensibij. Maak een trace table. Kantellerooit2worden?TipAntwoordNee, nooit, hoe lang de lus ook loopt.
igeeft zelf achtereenvolgens rest1,2en0bij deling door \(3\), en dan begint het opnieuw. Sta je op0, dan brengt de+1je op1, brengt de+2je terug op0, en laat de+0je staan waar je staat. Daarna herhaalt hetzelfde rondje zich.tellerzit dus vast in1,0,0,1,0,0en raakt nooit op2.