Ons script van opdracht 1 werkt, maar enkel en alleen voor de waardes van beginsnelheid, versnelling en tijdsinterval ingegeven in het script.
Wanneer de gebruiker deze gegevens zelf kan ingeven wordt het script veel flexibeler.
In opdracht 1.b gaan we het script aanpassen zodat aan de gebruiker gevraagd wordt om deze gegevens in te geven.
We weten reeds dat uitvoer (output) kan gegeven worden met de print( )-instructies. Met de input( )-instructie kan de gebruiker data invoeren.
Deze data wordt in het geheugen van de computer bewaard, en door deze data toe te wijzen aan een variabele kan deze terug opgeroepen worden.
Data kan echter verschillende vormen aannemen. De drie meest gebruikte types zijn:
Gehele getallen
Gehelen getallen worden in Pyton integers genoemd. Gehele getallen kunnen zowel positief als negatief zijn. Ze komen overeen met de verzameling van de gehele getallen in wiskunde.
Reële getallen
Reële getallen worden in Pyton floats genoemd. Reële getallen kunnen zowel positief als negatief zijn en bevatten steeds een punt achter het cijfer van de eenheden. (Engelse notatie van een decimaal getal)
Een float die gelijk is aan een integer zal steeds voorgesteld worden met het cijfer 0 als decimaal getal: 8.0, 12.0, -1.0
Ze komen oxvereen met de verzameling van de reële getallen in wiskunde.
Tekst
Tekst is een aaneenschakeling van tekens. Dit wordt een string genoemd. We hebben reeds gezien dat een string begint en eindigt met aanhalingstekens, en dat dit zowel enkelvoudige als dubbele kunnen zijn. Je moet bij het begin en einde van de string wel dezelfde aanhalingsekens gebruiken.
Let wel op: Er is een verschil tussen "2" en 2. In he eerste geval gaat dit over het teken 2, in het tweede getal over het cijfer 2.
Onderstaande code illustreert illustreert het verschil. Kopieer en plak de code in je editor en voor deze uit.
x = 2
y = "2"
print("Drie keer x is",3*x)
print("Drie keer y is",3*y)
Indien mogelijk, kan je het ene data type converteren naar het andere.
Converteren naar:
Geheel getal (Integer): int(...)
Reëel getal float): float(...)
Tekst (string): str(...)
We hebben reeds gezegd dat met de input( )-instructie, je data kan ingeven in de computer, maar dat je deze moet toewijzen aan een variabele.
De data die je ingeeft met input( ) is wel steeds van het type string.
In onderstaand voorbeeld wordt met input( ) een waarde toegekend aan x. Omdat de data van het type string is, zal als de instructie 2*x tweemaal die string nemen. Dus als de gebruiker 12 ingeeft, krijg je als output 1212.
Als de data die je ingeeft moet bewaard worden als een integer of een float, dan ga je deze moeten omzetten.
Willen we ons voorbeeld aanpassen zodat de data van het type float wordt, dan kan dit door:
x = float(input())
Wil je een integer krijgen, dan gaat dit met:
x = int(input( ))
Als je gaat omzetten naar een integer en de gebruiker geeft een reëel (float) getal in, dan loopt het script vast en krijg je een foutmelding.
Je kan dit ondervangen door eerst de data om te zetten naar een float, en daarna naar een integer. Op deze manier rond je wel je data af naar beneden.
Pas nu zelf het script aan. Een mogelijke oplossing staat (verborgen) hieronder.
# Opdracht 1.b: EVRB - Snelheid versie 12/10/23
#Toewijzing
v0 = float(input())
a = float(input())
dt = float(input())
# formule & berekening
v = v0+a*dt
# Output
print(v)
Hoewel het script doet wat het moet doen, kunnen we niet echt tevreden zijn met het resultaat. Als er van de gebruiker input verwacht wordt, dan staat daar een blinkende cursor. De gebruiker weet echter niet welke input dat van hem verwacht wordt.
Het resultaat dat je krijgt is gewoon een cijfer, maar wat heeft het programma nu berekend?
We gaan dus moeten zorgen voor een gebruiksvriendelijk interface.
We weten reeds hoe we onze output gebruiksvriendelijk kunnen maken. Dit kan door in onze print( )-opdracht ook tekst (string) mee te geven.
print("De eindsnelheid is",v,"m/s")
Python heeft ook voorzien dat je een string kan meegeven bij je input( )-instructie. Je plaatst die gewoon tussen de haakjes.
v0 = float(input("Beginsnelheid: "))
a = float(input("Versnelling: "))
dt = float(input("Tijd: ))
# Opdracht 1.b: EVRB - Snelheid versie 12/10/23
#Toewijzing
v0 = float(input("Beginsnelheid: "))
a = float(input("Versnelling: "))
dt = float(input("Tijd: ))
# formule & berekening
v = v0+a*dt
# Output
print("De eindsnelheid is",v,"m/s")