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.