Opdracht 32 Rekenmachine¶
Deze Les gaan we als practicumopdracht een eenvoudige rekenmachine maken. Het programma vraagt de gebruiker om een som en toont vervolgens het antwoord op het scherm. De som bestaat uit twee positieve getallen met daartussen een operator. (+, -, *, / of %). Bijvoorbeeld:
Som Antwoord
1+1 2 3*5.2 15.6 6/2 3 8%2 0
Stappenplan¶
-
Schrijf een functie om te controleren of een bepaalde string een geldige operator bevat. De geldige operatoren zijn: +, -, *, / en %. Deze functie geeft de gevonden operator terug, of ‘error’ als er geen geldige operator wordt gevonden.
-
Test je functie voordat je verdergaat, door je programma een tekstregel aan de gebruiker te laten vragen, je functie aan te roepen met deze tekstregel als argument, en het resultaat af te drukken.
-
Als alles werkt, ga je verder. Heeft de gebruiker geen geldige operator ingevoerd, toon dan een foutmelding. Als de gebruiker wel een geldige operator heeft ingevoerd, willen we weten op welke positie in de ingevoerde string deze operator staat. Schrijf een tweede functie, die als argumenten een string en de te vinden operator heeft. Deze functie geeft de positie van de operator in de
string
alsint
terug. Je kunt de positie vinden door destring
van links naar rechts karakter voor karakter af te gaan, totdat de operator is gevonden. Ook nu: test voor je verdergaat. -
Nu we weten op welke positie van de ingevoerde
string
de operator staat, kunnen we de twee getallen uit de som halen door de ingevoerdestring
te slicen. Alles voor de operator is getal 1 en alles na de operator is getal 2. Vergeet niet de getallen om te zetten naarfloats
. -
Maak een derde en laatste functie die de som uitrekent. Argumenten zijn de twee getallen en de operator. Return value is de uitkomst van de som.
-
Druk het resultaat van de som af.
-
Het is natuurlijk niet zo handig als de gebruiker de applicatie voor elke som opnieuw moet starten. Pas daarom je programma zo aan, dat de gebruiker herhaaldelijk een som kan invoeren, totdat hij/zij als som de tekst ‘stop’ invoert.
-
Voldoet je programma aan de code conventions?
N.B.: naarmate je meer leert over Python, zul je merken dat er manieren zijn om deze opdracht efficiënter uit te voeren. Maar door de opdracht op deze manier te maken, leren we meer over het werken met functies en strings!