Tutorial: Maak een rekenmachine met Python

In deze tutorial leggen we je uit hoe je een rekenmachine kunt programmeren met Python. Het idee achter de manier waarop we de rekenmachine bouwen zul je in veel andere vormen tegenkomen in de praktijk. Het zal je in deze tutorial dan ook opvallen dat de drie kernelementen van een standaard applicatie aan bod komen:

  1. Het verzamelen van input vanuit de gebruiker.
  2. Het uitvoeren van een bewerking op deze input.
  3. Het terugkeren van output naar de gebruiker.

Alhoewel deze tutorial ook geschikt is om alleen te lezen zul je er veel aan hebben als de code zelf kunt schrijven in je interpreter. Heb je Python niet op je pc geïnstalleerd? Lees hier hoe je Python installeert of gebruik Repl.it om in aan ander tabblad de code te runnen.

Stap 1: De onderdelen van een rekenmachine

Voordat we beginnen met het ontwerpen en programmeren van de rekenmachine is het belangrijk de losse onderdelen te scheiden en te omschrijven. In deze omschrijving proberen we het eindproduct al zoveel mogelijk af te kaderen. We hebben het hierboven eigenlijk al samengevat, de drie onderdelen van een rekenmachine zijn de volgende:

  1. Het verzamelen van input vanuit de gebruiker. We verzamelen 2 waarden van de gebruikers als input.
  2. Het uitvoeren van een bewerking op deze input. De gebruiker dient zelf een wiskundige operator in te voeren waardoor de calculatie uitgevoerd kan worden.
  3. Het terugkeren van output naar de gebruiker. Door middel van een print() functie wordt het antwoord teruggegeven aan de gebruiker.

Het verzamelen van input kan in Python met de input() method. Met deze method vraag je de gebruiker om een waarde in te geven. Dit ziet er als volgt uit:

getal_1 = input("Voer het eerste getal in: ")
getal_2 = input("Voer het tweede getal in: ")

Nu we de gebruiker tweemaal een waarde in hebben laten voeren kunnen we hier een bewerking op uit voeren. In onderstaand voorbeeld tellen we de waarden van getal_1 en getal_2 bij elkaar op:

getal_1 = input("Voer het eerste getal in: ")
getal_2 = input("Voer het tweede getal in: ")
antwoord = getal_1 + getal_2
print(antwoord)

Let op dat bij bovenstaand stuk code de input van getal_1 en getal_2 opgeslagen wordt als string (tekst) in plaats van een getal. Hierdoor zouden de getallen dus aan elkaar geplakt worden bij het gebruik van de ‘+’ operator. Daarom is het essentieel dat we de int() method op de variabelen in de antwoord variabele gebruiken om de input om te zetten naar getallen. Dit ziet er als volgt uit:

getal_1 = input("Voer het eerste getal in: ")
getal_2 = input("Voer het tweede getal in: ")
antwoord = int(getal_1) + int(getal_2)
print(antwoord)

Upgrade je rekenmachine

Met de rekenmachine die we hierboven hebben gebouwd hebben we twee van de drie problemen al volledig opgelost. We kunnen de gebruiker input laten geven waarbij we vervolgens een door ons gedefinieerde operator meenemen in de bewerking van de getallen waarna de output uitgeprint wordt. We creëren een nieuwe variabele genaamd operator waarbij we de gebruiker om input zullen vragen. Vervolgens bepalen we aan de hand van deze input wat de operatie is die op getal_1 en getal_2 moet worden uitgevoerd.

while True:

  getal_1 = int(input("Voer het eerste getal in: "))
  operator = input("Voeg een operator toe: ")
  getal_2 = int(input("Voer het tweede getal in: "))

  if operator == "+":
    print("Het antwoord is: " + str(getal_1 + getal_2))
  elif operator == "-":
    print("Het antwoord is: " + str(getal_1 - getal_2))
  elif operator == "*":
    print("Het antwoord is: " + str(getal_1 * getal_2))
  elif operator == "/":
    print("Het antwoord is: " + str(getal_1 / getal_2))
  else:
    print("Ik herken die operator niet, probeer het opnieuw.")

We maken hier bij de variabelen getal_1 en getal_2 gebruik van de int() method om de input van de gebruiker al direct naar integer-waarde te converteren. Hierdoor kunnen we de bewerkingen in de if en elif makkelijker uitvoeren. De getallen worden daar in de print-functie bewerkt als getallen voordat zij als het tekst datatype uitgeprint worden met het antwoord. Om ervoor te zorgen dat het script zich blijft herhalen hebben we ‘While True’ toegevoegd. In dit specifieke geval blijft de code op True staan er blijft de calculator dus om input vragen om sommen uit te kunnen rekenen. Het is mogelijk om andere wiskundige operatoren toe te voegen. Tot slot sluiten we af met een ‘else’ statement die controleert of de ingevoerde operator-waarde überhaupt voorkomt in onze lijst.

Opdracht: Lukt het jou om een script te schrijven dat berekent hoeveel procent het getal x van het getal y is?