Oefenopgaven
Contents
1.10. Oefenopgaven#
1.10.1. Standaard Operaties#
Operators
Voer de volgende berekeningen uit in Python en controleer dat het antwoord overeenkomt met wat je zou verwachten.
Houdt Python zich aan de standaard rekenvolgorde (bijv. vermenigvuldigen/delen vóór optellen/aftrekken)?
Móeten er haakjes om de breuken heen staan? Mogen ze er staan?
Deeltekens en Modulo
Er zijn drie operators in Python die met delen te maken hebben: /, // en %. Deze doen allemaal iets anders. Neem de onderstaande regels code één voor één over in je console, voer ze uit en beantwoord dan de vragen.
24 / 3
26 / 3
26 // 3
26 % 3
Stel je hebt 26 knikkers die je eerlijk tussen jou en twee vrienden wilt verdelen. Met welke operator bereken je hoeveel knikkers ieder van jullie minstens heeft? (knikkers kan je natuurlijk niet in stukken snijden)
Met welke operator bereken je hoeveel knikkers er over blijven?
Stel je hebt taartjes in plaats van knikkers, deze kan je wel snijden om het delen eerlijker te maken. Welke operator kan je dan gebruiken om te berekenen hoeveel taart iedereen moet krijgen?
Cylinder
Gebruik de functies uit math om de inhoud en het oppervlak van een cylinder (inclusief boven- en onderkant) te berekenen. Gebruik hiervoor de volgende gegevens:
\(h\) |
20 mm |
\(d\) |
15 mm |
Hint - Controleer je antwoord
Als het goed is kom je op de volgende antwoorden uit. Let goed op de eenheid!
Oppervlakte |
|
Inhoud |
|
1.10.2. Uitgebreide Operaties uit math#
Documentatie
Probeer zelf uit wat het commando
help(math)doet.Probeer nu zelf door middel van de
help-functie uit te zoeken watmath.perm(5, 2)doet:Voer eerst
math.perm(5, 2)zelf uit, en bekijk het resultaat.Voer dan
help(math.perm(5, 2))uit. Is dat behulpzaam? Vergelijk het resultaat eventueel met wat je krijgt als jehelp(20)invoert.Voer als laatste
help(math.perm)uit.
Hint - controleer je antwoord
Dezelfde informatie als je met de help() functie vindt kan je ook op internet opzoeken. Controleer je antwoord door te kijken of de online documentatie van math dezelfde uitleg geeft. Deze kan je hier vinden: https://docs.python.org/3.8/library/math.html
Sinus \( \leftrightarrow \sqrt{3}\)
Gebruik de functies uit math om na te gaan dat \(\sin\left(60^\circ\right) = \frac{\sqrt{3}}{2}\)
Hint - graden/radialen
Let op: de goniometrische functies in Python rekenen standaard met radialen, dit moet je dus nog omrekenen.
Dit kan je zelf doen, maar math heeft hier ook een speciale functie voor.
Logarithme
Gebruik de functies uit
mathom het natuurlijk logarithme (\(\ln\)) van de constante van Euler (\(e\)) te berekenen.Hoe bereken je \(\log_{10}(100)\)?
Verifieer dat
log10(x)hetzelfde antwoord geeft alslog(x, 10). Probeer dit uit voor verschillende zelfgekozen waarden vanx.
1.10.3. Variabelen#
ABC-formule met variabelen
In het voorbeeld in de tekst over variabelen werd de stelling van Pythagoras uitgewerkt in Python door middel van variabelen. Probeer dit nu zelf eens met de abc-formule:
Begin met het invoeren van de volgende waarden.
a = 1
b = 4
c = 3
Bepaal eerst de discriminant, en sla het resultaat op in de variabele
D.Bepaal vervolgens
x1enx2door de bovenstaande formules te implementeren.
Als het goed is komt het resultaat overeen met de nulpunten van de volgende grafiek:
|
|---|
De grafiek van \(y = x^2 + 4x + 3\). |
1.10.4. Getallen#
Conversie van typen getallen.
Onderzoek wat de uitkomst is van de volgende (conversie-)commando’s.
int(1.4)
float(1)
float(1+3j)
complex(1)
int('3')
str(4.5)
int('Kan dit stukje tekst omgezet worden in een getal?')
1.10.5. Tekst#
String variabelen
Wat denk je dat de uitkomst is van de volgende operaties op de tekstvariabelen? Test het uit door de variabelen aan te maken, en de commando’s één voor één uit te voeren.
tekst1 = "Ik geef de knikker door aan "
tekst2 = "de machine van het groepje naast me. "
tekst1 + tekst2
(tekst1 + tekst2) * 5
tekst1 + "Freek."
1.10.6. Waar / Niet waar#
En/Of
Zie de onderstaande commando’s. Bedenk eerst wat je verwacht dat de uitkomst is, en valideer dit door de commando’s uit te voeren.
((True and False) or True)
((False or False) or True)
((True or True) and False)
((True or False) and (False or True))
((3 > 2) and (5 < 4))
((2.0 == 2) or (5.5 < 4))
Boolean variabelen
Zie de onderstaande commando’s. Bedenk eerst wat je verwacht dat de uitkomst is, en valideer dit door de commando’s uit te voeren.
a = True
b = False
(a and b)
(a and a)
((a or a) and b)
((a or b) and (b or a))
a = 3 > 2
b = 5 < 4
(a or b)
1.10.7. Lijsten#
Lijsten met getallen
Wat is het (op eerste gezicht subtiele) verschil tussen de volgende twee lijsten met getallen?
cijfers_1 = [2.3, 3.5, 7.6, 3.4, 6.4]
cijfers_2 = [2.3, 3.5, 7.6, 3,4, 6,4]
Operaties op lijsten
Wat is het verschil tussen deze operaties?
cijfers = [2.3, 3.5, 7.6, 3.4, 6.4]
dubbele_cijfers_1 = cijfers * 2
dubbele_cijfers_2 = [cijfers[0] * 2, cijfers[1] * 2, cijfers[2] * 2, cijfers[3] * 2, cijfers[4] * 2]
We zullen trouwens volgende week de tweede operatie wat efficienter gaan opschrijven.
1.10.8. Dictionaries#
Je eerste dict!
Maak de volgende dictionaries aan (copy-paste ze naar je Python-terminal):
regine = {'voornaam': 'Regine', 'achternaam': 'Hendrix', 'aantal_studiepunten_q1': 15}
bob = {'voornaam': 'Bob', 'achternaam': 'de Voogt', 'aantal_studiepunten_q1': 12}
freek = {'voornaam': 'Freek', 'achternaam': 'Zusters', 'aantal_studiepunten_q1': 8}
sander = {'voornaam': 'Sander', 'achternaam': 'Heuvelmans', 'aantal_studiepunten_q1': 3}
Selecteer één van de aangemaakte dictionaries, bijvoorbeeld:
persoon = freek
En print een zinnetje over deze persoon uit:
'Hallo, ik ben ' + persoon['voornaam'] + ' ' + persoon['achternaam'] + '. Ik ga dit kwartaal ' + str(persoon['aantal_studiepunten_q1']) + ' studiepunten halen!'
Gebruik nu de bovenstaande code om hetzelfde zinnetje, maar voor de andere personen uit te printen. Maak als laatste een dictionary-variabele aan met je eigen informatie, en laat Python ook over jou een zinnetje uitprinten.
Waarom moeten we eigenlijk de
str()-functie gebruiken om de zin samen te kunnen stellen?
Werken met variabelen
We beginnen met de volgende variabelen:
a = 5
b = 12.3
c = 15j + 8
d = 'a'
e = 'Alice'
f = [1, 'twee', 3.0, 4, 'V'];
g = {'Titel': "Alice's Adventures in Wonderland",
'Auteur': 'Lewis Carroll',
'Jaar': 1865}
Bedenk nu eerst zelf voor elk van de volgende operaties wat het type van het resultaat zal zijn. Controleer daarna je antwoord door middel van de functie type().
a + bd * af[2]c / bf[-1] + eg['Jaar']
1.10.9. Haakjes#
Haakjes
Sjaak is een werknemer die in de afgelopen werkweek achtereenvolgens 8, 6, 9, 7 en 10 uur per dag gewerkt heeft. Hiervoor ontvangt hij een uurloon van €23,50.
Maak een dictionary met daarin zijn naam, een lijst met werkuren en zijn uurloon. Gebruik vervolgens dit dictionary om de volgende gegevens te berekenen:
Het salaris dat na deze week aan Sjaak uitgekeerd moet worden
Het gemiddelde salaris van Sjaak per dag, gebruik hierbij de ingebouwde functie
len()
Hint - Controleer je antwoord
Als het goed is kom je op de volgende waarden uit:
Totaal salaris |
€940,00 |
Gemiddeld salaris per dag |
€188,00 |
