Ga naar hoofdinhoud

Stap 2: Huizen in elke maat (parameters)

info

Deze stap gebruikt parameters, uit Parameters.

Elk huis is nu 100 stappen breed, want dat getal staat vast in de functies. Maak er een parameter van, dan kies je bij elke aanroep hoe groot het huis wordt:

import turtle

def muren(grootte):
turtle.fillcolor("yellow")
turtle.begin_fill()
for zijde in range(4):
turtle.forward(grootte)
turtle.left(90)
turtle.end_fill()

muren(150)
muren(50)

Overal waar 100 stond, staat nu grootte. Bij muren(150) is grootte 150, bij muren(50) is het 50.

Opdracht: een huis met een hondenhok​

Geef ook dak() en huis() een parameter grootte, en teken daarmee huis(150) en daarna huis(50): een groot huis met een hondenhok ervoor.

Een groot geel huis met rood dak, met linksonder ervoor een klein huisje met rood dak

import turtle

def muren(grootte):
    turtle.fillcolor("yellow")
    turtle.begin_fill()
    for zijde in range(4):
        turtle.forward(grootte)
        turtle.left(90)
    turtle.end_fill()

muren(150)
muren(50)
Klik hier voor een tip.

huis(grootte) geeft zijn grootte door: hij roept muren(grootte) en dak(grootte) aan. Ook de stappen omhoog en terug naar beneden zijn nu forward(grootte).

Klik hier voor de oplossing.
import turtle

def muren(grootte):
turtle.fillcolor("yellow")
turtle.begin_fill()
for zijde in range(4):
turtle.forward(grootte)
turtle.left(90)
turtle.end_fill()

def dak(grootte):
turtle.fillcolor("red")
turtle.begin_fill()
for zijde in range(3):
turtle.forward(grootte)
turtle.left(120)
turtle.end_fill()

def huis(grootte):
muren(grootte)
turtle.left(90)
turtle.forward(grootte)
turtle.right(90)
dak(grootte)
turtle.right(90)
turtle.forward(grootte)
turtle.left(90)

huis(150)
huis(50)

Het hondenhok staat precies in de hoek, omdat huis(150) de schildpad terugbrengt naar linksonder.

Er gaat iets mis​

import turtle

def muren(grootte):
for zijde in range(4):
turtle.forward(grootte)
turtle.left(90)

muren()
TypeError: muren() missing 1 required positional argument: 'grootte'

Oorzaak: muren heeft een parameter, dus Python verwacht bij de aanroep een waarde tussen de haakjes. muren() geeft er geen.

Oplossing: geef de grootte mee, bijvoorbeeld muren(100).

Door naar stap 3: een hele straat.