Extra

Deze pagina bevat uitvoerbare code.

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 2

a. Schrijf de functie lines(height, space) die twee #-lijnen tekent van height regels hoog en space geeft aan hoeveel spaties tussen de lijnen liggen.

def lines(height, space):
    """ Tekent twee lijnen met # voor <x> aantal regels met <space>
    aantal spaties tussen de twee lijnen

    :param height: geeft aan hoeveel regels
    :param space: geeft aantal spaties tussen de twee lijnen
    :type height, space: int
    :rtype: geen return waarde
    """
    if height > 0:
        print("#" + space * " " + "#")
        lines(height - 1, space)
    else:
        return

Hier geldt hetzelfde als voor de onderste boven trap.

Zodra height gelijk is aan nul mag het programma stoppen, alle regels zijn naar het scherm geprint.

Als height nog geen nul is dan moet er nog een regel naar het scherm geprint worden.

Notitie

We veranderen hier alleen height en niet space, want de afstand tussen de lijnen is niet afhankelijk van hoeveel regels er al geprint zijn.

b. Schrijf een functie print_square(size) die een getal accepteert en een # vierkant van grootte size print. Maak gebruik van de functie lines.

def print_square(size):
    """ 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(size * "#")
    lines(size - 2, size - 2)
    print(size * "#")
    return

Het verschil tussen lines() en print_square() is dat print_square() begint en eindigt met een volle regel met size * "#".

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 size - 2 voor de size van lines omdat er al twee regels geprint worden door print_square() zelf.

We gebruiken size - 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.