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.