In Python verwijst de term "scope" naar het bereik of de zichtbaarheid van variabelen binnen een programma. Het bepaalt waar in uw code een bepaalde variabele kan worden gebruikt of geraadpleegd. Een verkeerd begrip van de scope van een variabele kan leiden tot fouten.
Wil je geen fouten maken beschouw je functies dan als onafhankelijke programma's die enkel data uitwisselen via de parameters en de retourwaarden.
Verduidelijken we dit met een voorbeeld:
Laat de computer een getal van 1 tot 20 genereren;
Laat de gebruiker dan het getal raden.
Bij elke poging geeft de computer aan of het getal te hoog of te laag is.
Als de gebruiker het getal geraden heeft, geeft de computer het aantal pogingen dat nodig was op het scherm weer.
Je moet hier gaan controleren bij je de ingave of
Het getal een geheel getal is
Het getal binnen het interval ligt. In het begin is dat van 1 t/m 20, maar als je eenmaal weet dat het getal de we zoeken groter is dan 8 is dat van 9 t/m 20.
Eigenlijk is dit een veel voorkomend probleem. Door dit als een functie te schrijven kan je je code leesbaarder maken, en kan je de code ook makkelijker gebruiken in andere scripts.
We gaan daarom het probleem van de ingave apart bekijken.
Welke gegevens heb ik nodig?
minimale en maximale waarde
Waarop moet ik controleren
Ingegeven getal moet groter of gelijk zijn aan de minimale waarde
Ingegeven getal moet kleiner of gelijk zijn aan de maximale waarde
Ingegeven getal moet een geheel getal zijn.
min = 0
# maximale waarde
max = 20
# getal ingeven
prompt ="Geef een geheel getal in van "+str(min)+" t/m "+str(max)+" :"
getal = input(prompt)
getal = float(getal)
while int(getal)!=getal or int(getal)<min or int(getal)>max:
if int(getal)!=getal:
print("Je hebt geen geheel getal ingegeven")
if int(getal)>max:
print("Je getal is groter dan toegestaan")
else:
if int(getal)<min:
print("Je getal is kleiner dan toegestaan")
getal = input(prompt)
getal = float(getal)
Je kan dit script uitgebreid testen en dan een functie maken.
Welke data moet uitgewisseld worden?
Van hoofdscript naar functie: min, max --> parameters
Van functie naar hoofdscript: getal --> retour waarde
De functie gaat er dan zo uitzien:
def getalIngeven(min,max):
prompt ="Geef een geheel getal in van "+str(min)+" t/m "+str(max)+" :"
getal = input(prompt)
getal = float(getal)
while int(getal)!=getal or int(getal)<min or int(getal)>max:
if int(getal)!=getal:
print("Je hebt geen geheel getal ingegeven")
if int(getal)>max:
print("Je getal is groter dan toegestaan")
else:
if int(getal)<min:
print("Je getal is kleiner dan toegestaan")
getal = input(prompt)
getal = float(getal)
return int(getal)
De functie aanroepen kan bijvoorbeeld met:
nummer = getalIngeven(0,20)