1 Oefeningen 2021-03-15

1.1 Opgave

Schrijf een functie volume_kubus(z) die het volume van een kubus met zijde met lengte z berekent:

v = volume_kubus(z=1)
print(v)  # 1

v = volume_kubus(z=2)
print(v)  # 8

v = volume_kubus(z=5.50)
print(v)  # 166.375

Het volume van een kubus met zijde \(z\) bereken je als volgt:

(1)\[V = z^3\]

1.2 Opgave

Schrijf een functie volume_cilinder(r, h) die het volume van een cilinder berekent:

v = volume_cilinder(r=1, h=1)
print(v)  # 3.141592653589793

v = volume_cilinder(r=2, h=4)
print(v)  # 50.26548245743669

v = volume_cilinder(r=4, h=2)
print(v)  # 100.53096491487338

Het volume van een cilinder met straal \(r\) en hoogte \(h\) bereken je als volgt:

(2)\[V = \pi r^2 h\]

Hints:

  • de constante Pi zit in de module math

  • je kan modules importeren met import

1.3 Opgave

Schrijf een functie afstand(x1, y1, x2, y2) die de afstand tussen twee punten berekent:

d = afstand(x1=1, y1=2, x2=3, y2=5)
print(d)  # 3.605551275463989

d = afstand(x1=1, y1=2, x2=3, y2=4)
print(d)  # 2.8284271247461903

d = afstand(x1=-2, y1=3, x2=5, y2=-4)
print(d)  # 9.899494936611665

De afstand tussen twee punten \((x_1,y_1)\) en \((x_2,y_2)\) bereken je als volgt:

(3)\[d=\sqrt{\left(x_1-x_2\right)^2+\left(y_1-y_2\right)^2}\]

Hints:

  • de functie sqrt berekent de vierkantswortel

  • sqrt zit in de module math

1.4 Opgave

Schrijf een class Televisie met 3 methods: schakel_aan, schakel_uit en status.

Je moet de class als volgt kunnen gebruiken:

tv = Televisie()
tv.schakel_aan()
tv.status() # print "aan"
tv.schakel_uit()
tv.status() # print "uit"

Hints:

  • vergeet niet de initialisatie functie __init__ toe te voegen

  • gebruik self om properties aan te maken in __init__

  • gebruik self om aan de properties te kunnen in de andere methods

  • gebruik enkel print in de status method

1.5 Opgave

Voeg twee methods harder en zachter toe aan je class Televisie.

Je moet de class als volgt kunnen gebruiken:

tv = Televisie()
tv.schakel_aan()
tv.status() # print "aan, volume 5"
tv.harder()
tv.harder()
tv.status() # print "aan, volume 7"
tv.zachter()
tv.status() # print "aan, volume 6"

Hints:

  • het standaardvolume is dus 5

  • maak een property voor het standaardvolume in de __init__ method

1.6 Opgave

Pas je class Televisie aan zodat je een foutmelding krijgt als je de televisie aan probeert te zetten als ie reeds aan staat:

tv = Televisie()
tv.schakel_aan()
tv.schakel_aan() # print "fout: reeds aan"
tv.status() # print "aan, volume 5"
tv.schakel_uit()
tv.schakel_uit() # print "fout: reeds uit"

Hint: Gebruik if-condities in de schakel_aan en schakel_uit methods.

1.7 Opgave

Pas je class Televisie aan zodat je kan zappen:

tv = Televisie()
tv.schakel_aan()
tv.status() # print "aan, volume 5, ?"
tv.zap("canvas")
tv.status() # print "aan, volume 5, canvas"
tv.zap("vier")
tv.status() # print "aan, volume 5, vier"

Hint:

  • voeg het gekozen kanaal toe als property

  • pas de status method aan zodat het kanaal getoond wordt

  • initieel stel je ‘?’ als gekozen kanaal in, om aan te geven dat nog geen kanaal gekozen werd

1.8 Opgave

Voeg een method __str__ toe zodat:

tv = Televisie()
tv.schakel_aan()
tv.zap("canvas")
print(tv) # print "aan, volume 5, canvas"
tv.harder()
print(tv) # print "aan, volume 6, canvas"

1.9 Opgave

Maak nu twee objecten aan van je class Televisie. Onderstaande code zou zonder aanpassing moeten werken mits je de vorige opgaves correct hebt geimplementeerd:

tv_living = Televisie()
tv_slaapkamer = Televisie()

tv_living.schakel_aan()
tv_living.zap("canvas")
print(tv_living) # print "aan, volume 5, canvas"

tv_slaapkamer.schakel_aan()
tv_slaapkamer.zap("vtm")
tv_slaapkamer.zachter()
print(tv_slaapkamer) # print "aan, volume 4, vtm"

print(tv_living) # print "aan, volume 5, canvas"

1.10 Opgave

Voeg een method stel_kanalen_in toe die als parameter een lijst krijgt:

tv = Televisie()
tv.stel_kanalen_in(["vtm", "vier", "vijf"])
tv.schakel_aan()
tv.zap("canvas") # print "error: onbekend kanaal"
tv.zap("vier")
print(tv) # print "aan, volume 5, vier"

Hints:

  • Voeg een property beschikbare_kanalen toe in de __init__ methode.

  • Stel de property beschikbare_kanalen in als je stel_kanalen_in uitvoert.

  • Gebruik in zap een if-conditie om te controleren of het kanaal waarnaar gezapt moet worden in de lijst met beschikbare kanalen staat.

  • Om te kijken of een waarde in een lijst voorkomt kan je in gebruiken.

Voorbeeld van gebruik van in:

v = [1, 2, 3, 4]
if 2 in v:
    print("2 zit in de lijst")
else:
    print("2 zit niet in de lijst")