Extra#
Opdracht 1#
Schrijf de functie trap(x) die een getal accepteert en een omgekeerde # trap tekent. Maak gebruik van recursie.
def trap(x):
""" Print een onderste boven trap naar het scherm
:param x: het aantal traptreden
:type x: int
:rtype: geen return waarde
"""
if x > 0:
print(x * "#")
trap(x - 1)
else:
return
Aangezien de bovenste tree de breedste is, kan het programma beginnen bij x en vanaf daar aftellen naar 0.
Is x groter dan nul ( x > 0 ) dan zijn er nog treden om te plaatsen. Plaats de trede, corrigeer x voor de geplaatste trede en roep de functie nog een keer aan.
Is x gelijk aan nul ( x == 0 ) dan zijn er geen treden meer om te plaatsen en kan de functie stoppen.
Opdracht 2a#
Schrijf de functie lines(x, space) die twee #-lijnen tekent van x regels hoog en space geeft aan hoeveel spaties tussen de lijnen liggen.
def lines(x, space):
""" Tekent twee lijnen met # voor <x> aantal regels met <space>
aantal spaties tussen de twee lijnen
:param x: geeft aan hoeveel regels
:param space: geeft aantal spaties tussen de twee lijnen
:type x, space: int
:rtype: geen return waarde
"""
if x > 0:
print("#" + space*" " + "#")
lines(x - 1, space)
else:
return
Hier geldt hetzelfde als voor de onderste boven trap.
Zodra x gelijk is aan nul mag het programma stoppen, alle regels zijn naar het scherm geprint.
Als x nog geen nul is dan moet er nog een regel naar het scherm geprint worden.
Notitie
We veranderen hier alleen x en niet space, want de afstand tussen de lijnen is niet afhankelijk van hoeveel regels er al geprint zijn.
Opdracht 2b#
Schrijf een functie print_square(x) die een getal accepteert en een # vierkant van grootte x print. Maak gebruik van de functie lines.
def print_square(x):
""" Tekent een vierkant van # met grootte x
:param x: geeft aan hoe groot het vierkant moet zijn
:type x: int
:rtype: geen return waarde
"""
print(x * "#")
lines(x - 2, x - 2)
print(x * "#")
return
Het verschil tussen lines() en print_square() is dat print_square() begint en eindigt met een volle regel met x * "#".
Deze kunnen direct naar het scherm geprint worden. Dit betekent dat lines() alleen de regels tussen de eerste en de twee hoeft te vullen.
We gebruiken x - 2 voor de x van lines omdat er al twee regels geprint worden door print_square() zelf.
We gebruiken x - 2 voor space omdat er voor en na de space een # geprint wordt. Als we hier geen rekening mee houden dan worden de lines() regels te breed.