Tot nu toe hebben we steeds te maken gehad met instructies/functie die behoorde tot het sequentie type. De opdracht werd uitgevoerd, waarna steeds de volgende opdracht volgde.
In script ga je dikwijls een gedeelte van de code slechts uitvoeren als er aan een bepaalde conditie voldaan is.
Stel je het volgende script even voor. Een oefenprogramma voor leerlingen van de basisschool vraagt aan een leerling het resultaat in te geven van 4 maal 3. Als het ingegeven resultaat correct is geeft het script als antwoord Goed gedaan!
Het is duidelijk dat je enkel en alleen de print( )-opdracht print('Goed gedaan!') gaat uitvoeren als het antwoord van de leerling gelijk is aan 12.
Dit is de conditie, waarna een bepaald type code wordt uitgevoerd.
De conditie wordt ook wel eens de if-statement genoemd, omdat dit de Python instructie is die hiervoor gebruikt wordt.
We gaan aan de hand van enkele voorbeelden dit duidelij maken.
Schrijf een script dat aan de gebruiker een getal vraagt. Het script geeft dan als output de absolute waarde van het getal.
Je mag voor dit script de functie abs ( ) niet gebruiken.
Het eerste gedeelte is natuurlijk makkelijk. We gaan aan de gebruiker input vragen en die input omzetten naar een float.
getal = float(input("Getal: "))
Dan moeten we gaan kijken of dit een positief of negatief getal is. Als het een positief getal is, dan moet ik niets doen. Als het een negatief getal is, dan moet ik het teken veranderen. Dit kan als volgt:
getal = -getal
Wanneer moet ik dit doen? Als getal < 0
Vertaalt naar Python levert dit:
if getal<0:
We maken hier gebruik van een logische operator. De belangrijkste operatoren zijn
gelijk aan (let op de dubbele gelijkheidstekens)
A == B
groter dan
A > B
kleinder dan
A < B
groter of gelijk aan
A >= B
kleiner of gelijk aan
A <= B
niet gelijk aan
A != B
Na de "conditie" wordt er een dubbele punt geplaatst. Dit is het begin van een blok met instructies, die worden uitgevoerd wanneer aan de conditie voldaan is, wanneer het resultaat TRUE is.
Blokken met instructies worden in Python afgebakend met indentatie. Je zal merken dat in een IDE, als je na het dubbele punt op ENTER drukt, de cursor op de volgende regel een beetje inspringt (4 spaties). Alle ingesprongen instructies zullen tot dit blok horen.
In ons geval gaat dit blok slechts één instructies en zal de volgende instructie terug aan de "kantlijn" staan.
print(getal)
Het volledige script ziet er als volgt uit:
#absolute waarde
getal = float(input("Getal: "))
if getal<0:
getal = -getal
print(getal)
Schrijf een script dat aan de gebruiker de naam van een dier vraagt, en of de moeder melk geeft aan haar baby's.
Het script geeft dan aan of het gaat over een zoogdier of geen zoogdier.
Met onze huidige kennis zouden we dit als volgt kunnen oplossen:
Je vraagt aan de gebruiker over welk dier het gaat en of ze melk geeft.
Als het antwoord op de tweede vraag "JA" is, dan is de output ZOOGDIER.
Als het antwoord op de tweede vraag "NEE" is, dan is de output GEEN ZOOGDIER.
#zoogdier
dier = input("Over welk dier gaat het? ")
melk = input("Geeft de moeder melk aan haar baby's? (ja/nee) ")
if melk=="ja":
print("zoogdier")
if melk =="nee":
print("geen zoogdier")
Het is logisch dat als de eerste conditie melk=="ja" niet voldaan is, dat de tweede conditie melk=="nee" wel voldaan is.
(We veronderstellen dat de gebruiker steeds correct één van beide mogelijke antwoorden ingeeft)
In Python, en zeer veel andere programmeertalen is daarom een andere structuur voorzien. Met else: kan er een blok code gestart worden die zal uitgevoerd worden als de conditie niet vervuld is.
#zoogdier
dier = input("Over welk dier gaat het? ")
melk = input("Geeft de moeder melk aan haar baby's? (ja/nee) ")
if melk=="ja":
print("zoogdier")
else:
print("geen zoogdier")
Het aantal mol van een stof is de verhouding tussen de massa en de molmassa.
Schrijf een script waarbij de gebruiker twee van de volgende grootheden ingeeft: aantal mol, massa, molmassa.
Bij de derde vult hij niets in maar drukt gewoon op enter.
Het script berekent deze ontbrekende grootheid en geeft deze als output
Een grafische voorstelling van het algoritme wordt hieronder gegeven.
Zetten we dit om naar een Python script, dan hebben we te maken met een geneste conditie. De conditie massa leeg? is en onderdeel van de else: blok van een andere conditie.
Vertalen we dit, dan krijgen we:
#mol en molmassa
aantal_mol=input("Aantal mol: ")
massa=input("Massa: ")
molmassa=input("Molmassa: ")
if aantal_mol =="":
massa=float(massa)
molmassa=float(molmassa)
aantal_mol = massa/molmassa
print("Aantal mol:",aantal_mol)
else:
if massa == "":
molmassa=float(molmassa)
aantal_mol=float(aantal_mol)
massa = aantal_mol*molmassa
print("Massa: ",massa)
else:
massa=float(massa)
aantal_mol=float(aantal_mol)
molmassa= massa/aantal_mol
print("Molmassa: ",molmassa)
Python voorziet een structuur waarbij de else: en de if van de geneste conditie samengetrokken wordt tot elif.
#mol en molmassa
aantal_mol=input("Aantal mol: ")
massa=input("Massa: ")
molmassa=input("Molmassa: ")
if aantal_mol =="":
massa=float(massa)
molmassa=float(molmassa)
aantal_mol = massa/molmassa
print("Aantal mol:",aantal_mol)
elif massa == "":
molmassa=float(molmassa)
aantal_mol=float(aantal_mol)
massa = aantal_mol*molmassa
print("Massa: ",massa)
else:
massa=float(massa)
aantal_mol=float(aantal_mol)
molmassa= massa/aantal_mol
print("Molmassa: ",molmassa)
Deze structuur zorgt ervoor dat er minder moet ingesprongen worden, maar waardoor je wel minder de structuur van je script ziet.